diff --git a/.github/workflows/aloglia_crawler.yaml b/.github/workflows/aloglia_crawler.yaml
index 3ba64e5a0b..a199c8d82c 100644
--- a/.github/workflows/aloglia_crawler.yaml
+++ b/.github/workflows/aloglia_crawler.yaml
@@ -4,10 +4,17 @@ on:
workflow_run:
workflows: ["Release to Production"]
types: [completed]
+ workflow_dispatch:
+
+env:
+ ALGOLIA_CRAWLER_USER_ID: ${{ secrets.ALGOLIA_CRAWLER_V3_USER_ID }}
+ ALGOLIA_CRAWLER_API_KEY: ${{ secrets.ALGOLIA_CRAWLER_V3_API_KEY }}
+ CRAWLER_ID: ${{ secrets.ALGOLIA_CRAWLER_V3_ID }}
+
jobs:
docsearch:
runs-on: ubuntu-latest
- if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
@@ -18,6 +25,11 @@ jobs:
API_KEY: ${{ secrets.ALGOLIA_ADMIN_KEY }}
run: docker run -e APPLICATION_ID=$APPLICATION_ID -e API_KEY=$API_KEY -e "CONFIG=$(cat ./docsearch.config.json | jq -r tostring)" algolia/docsearch-scraper
+ - name: Trigger DocSearch v3 Crawler
+ run: |
+ curl -H "Content-Type: application/json" -X POST --user ${ALGOLIA_CRAWLER_USER_ID}:${ALGOLIA_CRAWLER_API_KEY} "https://crawler.algolia.com/api/1/crawlers/${CRAWLER_ID}/reindex"
+
+
- name: Slack Notification
if: ${{ failure() }}
uses: rtCamp/action-slack-notify@v2
diff --git a/.github/workflows/nightly-docker-build.yaml b/.github/workflows/nightly-docker-build.yaml
index 140c158723..89efd69957 100644
--- a/.github/workflows/nightly-docker-build.yaml
+++ b/.github/workflows/nightly-docker-build.yaml
@@ -5,6 +5,7 @@ on:
- cron: '15 22 * * 1-5' # 22:15 UTC, Monday through Friday
workflow_dispatch:
+
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# We cannot use our production values for nightly Docker builds as that would leak our production secrets.
@@ -28,6 +29,7 @@ jobs:
- name: Compile
run: |
+ touch .env
make build
diff --git a/.github/workflows/release-preview.yaml b/.github/workflows/release-preview.yaml
index b17190152c..b3dfaccb3f 100644
--- a/.github/workflows/release-preview.yaml
+++ b/.github/workflows/release-preview.yaml
@@ -41,6 +41,7 @@ jobs:
- name: Build
run: |
+ touch .env
make build
- name: Deploy Preview
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index b8c12404e2..b86f2cf6ca 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -55,6 +55,7 @@ jobs:
- name: Compile
run: |
+ touch .env
make versions-ci
make build
diff --git a/.gitignore b/.gitignore
index e2d345d0f9..b53c25652e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,8 @@ palette-docs.pdf
docs/api-content/api-docs/v1/*.mdx
docs/api-content/api-docs/v1/sidebar.*
+docs/api-content/api-docs/edge-v1/*.mdx
+docs/api-content/api-docs/edge-v1/sidebar.*
# Versions Content
versions.json
diff --git a/.gitleaksignore b/.gitleaksignore
index d34dc1da4b..882d679bec 100644
--- a/.gitleaksignore
+++ b/.gitleaksignore
@@ -103,3 +103,10 @@ fd60bdc4fdfe8b66925db07865cb530eab4978df:docs/docs-content/integrations/kubernet
511e735952ff4babb08c522a7febdd856740c3f9:docs/docs-content/vertex/system-management/reverse-proxy.md:private-key:141
511e735952ff4babb08c522a7febdd856740c3f9:docs/docs-content/vertex/system-management/reverse-proxy.md:private-key:167
511e735952ff4babb08c522a7febdd856740c3f9:docs/docs-content/vertex/system-management/reverse-proxy.md:private-key:239
+9e62b4b635976b0ab93d4dddcf29d33365664091:docs/docs-content/integrations/kubernetes.md:generic-api-key:391
+9e62b4b635976b0ab93d4dddcf29d33365664091:docs/docs-content/integrations/kubernetes.md:generic-api-key:759
+9e62b4b635976b0ab93d4dddcf29d33365664091:docs/docs-content/integrations/kubernetes.md:generic-api-key:1125
+e4040084011d4d7935a589959b96ebc5cfba7a94:docs/docs-content/integrations/kubernetes.md:generic-api-key:759
+e4040084011d4d7935a589959b96ebc5cfba7a94:docs/docs-content/integrations/kubernetes.md:generic-api-key:1125
+e4040084011d4d7935a589959b96ebc5cfba7a94:docs/docs-content/integrations/kubernetes.md:generic-api-key:391
+87bf9f7353f94ac2ecf85da3be3412202de7b72f:docusaurus.config.js:generic-api-key:363
diff --git a/Makefile b/Makefile
index ca2e211051..c6f76e8688 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,7 @@
.PHONY: initialize start commit build
+-include .env
+
IMAGE:=spectrocloud/librarium
# Retrieve all modified files in the content folder and compare the difference between the master branch git tree blob AND this commit's git tree blob
CHANGED_FILE=$(shell git diff-tree -r --no-commit-id --name-only master HEAD | grep content)
@@ -8,6 +10,7 @@ TEMP_DIR=$(shell $TMPDIR)
CPUS := $(shell sysctl -n hw.ncpu | awk '{print int($$1 / 2)}')
+ALOGLIA_CONFIG=$(shell cat docsearch.dev.config.json | jq -r tostring)
help: ## Display this help
@@ -39,7 +42,7 @@ clean-api: ## Clean API docs
@echo "cleaning api docs"
npm run clean-api-docs
# Remove the sidebar file as it's not removed by the clean-api command
- rm -f docs/api-content/api-docs/v1/sidebar.ts
+ rm -f docs/api-content/api-docs/v1/sidebar.ts && rm -f docs/api-content/api-docs/edge-v1/sidebar.ts
clean-visuals:
@echo "Cleaning visual regression tests"
@@ -156,21 +159,56 @@ pdf-local: ## Generate PDF from local docs
###@ URL Checks
-verify-url-links: ## Check for broken URLs in production
+verify-url-links:
+ @echo "Checking for broken external URLs in markdown files..."
rm link_report.csv || echo "No report exists. Proceeding to scan step"
- npx linkinator https://docs.spectrocloud.com/ --recurse --timeout 60000 --retry --retry-errors-count 3 --skip "^http(?!.*spectrocloud\\.com).*$"" --skip "^https:\/\/docs\.spectrocloud\.com\/.*\/supplemental\-packs$"" --format csv > temp_report.csv && sleep 2
- grep -E '^[^,]*,[[:space:]]*([4-9][0-9]{2}|[0-9]{4,}),' temp_report.csv > link_report.csv && rm temp_report.csv
-
+ @npx linkinator "docs/**/*.md" --markdown --recurse --timeout 60000 --retry --retry-errors-jitter --retry-errors-count 3 \
+ --skip "^https:\/\/docs\.spectrocloud\.com.*$$" \
+ --skip "^https:\/\/docs\.spectrocloud\.com\/.*\/supplemental\-packs$$" \
+ --skip "^http:\/\/docs\.spectrocloud\.com.*$$" \
+ --skip "^https:\/\/software-private\.spectrocloud\.com.*$$" \
+ --skip "^\/.*\.md$$" \
+ --skip "!\[.*\]\(.*\)$$" \
+ --skip "\.(jpg|jpeg|png|gif|webp)$$" \
+ --skip "https:\/\/linux\.die\.net\/man\/.*$$" \
+ --skip "https:\/\/mysql\.com\/.*\.*$$" \
+ --skip "https:\/\/dev\.mysql\.com\/doc/\.*$$" \
+ --format csv > temp_report.csv && sleep 2
+ @grep -E 'https?://' temp_report.csv > filtered_report.csv
+ @grep -E ',[[:space:]]*([4-9][0-9]{2}|[0-9]{4,}),' filtered_report.csv > link_report.csv && rm temp_report.csv filtered_report.csv
verify-url-links-ci: ## Check for broken URLs in production in a GitHub Actions CI environment
+ @echo "Checking for broken external URLs in CI environment..."
rm link_report.json || echo "No report exists. Proceeding to scan step"
- npx linkinator https://docs.spectrocloud.com/ --recurse --timeout 60000 --retry --retry-errors-count 3 --skip '^http(?!.*software-private.spectrocloud\\.com).*$'' --skip '^http(?!.*spectrocloud\\.com).*$'' --format json > temp_report.json
- jq 'del(.links[] | select(.status <= 200))' temp_report.json > link_report.json
- rm temp_report.json
- mv link_report.json scripts/
+ @npx linkinator "docs/**/*.md" --markdown --recurse --timeout 60000 --retry --retry-errors-count 3 \
+ --skip "^https:\/\/docs\.spectrocloud\.com.*$$" \
+ --skip "^https:\/\/docs\.spectrocloud\.com\/.*\/supplemental\-packs$$" \
+ --skip "^http:\/\/docs\.spectrocloud\.com.*$$" \
+ --skip "^https:\/\/software-private\.spectrocloud\.com.*$$" \
+ --skip "^\/.*\.md$$" \
+ --skip "!\[.*\]\(.*\)$$" \
+ --skip "\.(jpg|jpeg|png|gif|webp)$$" \
+ --skip "https:\/\/linux\.die\.net\/man\/.*$$" \
+ --skip "https:\/\/mysql\.com\/.*\.*$$" \
+ --skip "https:\/\/dev\.mysql\.com\/doc/\.*$$" \
+ --format json > temp_report.json
+ @# Use jq to filter out links that do not start with http or https and keep only broken links
+ @jq '[.links[] | select(.url | test("^https?://")) | select(.status >= 400)]' temp_report.json > filtered_report.json
+ @rm temp_report.json
+ @mv filtered_report.json scripts/link_report.json
###@ Image Formatting
format-images: ## Format images
@echo "formatting images in /static/assets/docs/images/ folder"
- ./scripts/compress-convert-images.sh
\ No newline at end of file
+ ./scripts/compress-convert-images.sh
+
+###@ Aloglia Indexing
+
+update-dev-index: ## Update the Algolia index for the dev environment
+ @echo "updating Algolia index for dev environment"
+ docker run -e APPLICATION_ID=${ALGOLIA_APP_ID} -e API_KEY=${ALGOLIA_ADMIN_KEY} -e CONFIG='${ALOGLIA_CONFIG}' algolia/docsearch-scraper
+
+remove-dev-index: ## Remove the Algolia index for the dev environment
+ @echo "removing Algolia index for dev environment"
+ algolia index delete dev-docusaurus-librarium --confirm
\ No newline at end of file
diff --git a/README.md b/README.md
index e3926067b2..a3674d2c1a 100644
--- a/README.md
+++ b/README.md
@@ -500,6 +500,30 @@ To add a video, use the following syntax. Ensure you capitalize the letter "V":
```
+### Badges
+
+The following badges are available for use:
+
+> [!NOTE]
+>
+> All badges are globally available. No need to import them.
+
+- Technical Preview Badge ![Technical Preview Badge](static/img/tech-preview-light.svg)
+ ![Technical Preview Badge](static/img/tech-preview-dark.svg)
+
+#### Technical Preview Badge
+
+The technical preview badge is used to indicate that a feature is in technical preview. The badge is intended for
+release notes in the context of a list. The following is an example of how to use the technical preview badge. The
+component will automatically display the badge in the correct color based on the light theme (dark/light).
+
+```markdown
+- Cluster Profile variables, a new feature that allows you to define variables in a cluster profile. This
+ feature is in Tech Preview and is available only for Edge clusters. Profile variables allow you to define variable
+ types, apply validation, and more. Refer to the Cluster Profile Variables documentation to learn more about profile
+ variables.
+```
+
### Simple Card Grid
This is a custom component that creates a grid of simple text cards with two columns, styled according to our color
@@ -744,3 +768,7 @@ make clean-versions
>
> The `docusaurus.config.js` file is updated by the [`update_docusaurus_config.js`](./docusaurus.config.js) script. DO
> NOT commit this file with the updated changes.
+
+```
+
+```
diff --git a/apisidebar.js b/apisidebar.js
index 7b72fbd5eb..e9ee6c7341 100644
--- a/apisidebar.js
+++ b/apisidebar.js
@@ -10,6 +10,12 @@ if (fs.existsSync(sidebarFilePath)) {
sidebarItems = require(sidebarFilePath);
}
+let emcSidebarItems = [];
+const sidebarEmcFilePath = "./docs/api-content/api-docs/edge-v1/sidebar.ts";
+if (fs.existsSync(sidebarEmcFilePath)) {
+ emcSidebarItems = require(sidebarEmcFilePath);
+}
+
module.exports = {
apiSidebar: [
{ type: "doc", id: "introduction", label: "Introduction" },
@@ -21,5 +27,11 @@ module.exports = {
link: { type: "generated-index", title: "Palette API V1" },
items: sidebarItems,
},
+ {
+ type: "category",
+ label: "Edge Host API V1",
+ link: { type: "generated-index", title: "Edge Host API V1" },
+ items: emcSidebarItems,
+ },
],
};
diff --git a/archiveVersions.json b/archiveVersions.json
index 3d232fdd40..58326da2bc 100644
--- a/archiveVersions.json
+++ b/archiveVersions.json
@@ -1,4 +1,5 @@
{
+ "v4.1.x": "https://version-4-1.legacy.docs.spectrocloud.com",
"v4.0.x": "https://version-4-0.legacy.docs.spectrocloud.com",
"v3.4.x and prior": "https://version-3-4.legacy.docs.spectrocloud.com"
}
diff --git a/docs/api-content/api-docs/1-introduction.md b/docs/api-content/api-docs/1-introduction.md
index 08e85a8b10..f182abddd6 100644
--- a/docs/api-content/api-docs/1-introduction.md
+++ b/docs/api-content/api-docs/1-introduction.md
@@ -8,16 +8,21 @@ sidebar_custom_props:
icon: "graph"
---
+The API documentation section includes documentation for Palette API and Edge Host API. Edge Host API endpoints are Tech
+Preview features and should not be used in production workloads.
+
+## Palette API
+
Palette offers a range of capabilities you can access through the REST APIs. These REST APIs are designed in accordance
with open API standards, which ensure that the platform's features can be integrated with other applications and
systems. By utilizing these APIs, you can tap into the platform's capabilities through programmatic methods. Use the
APIs to build custom integrations and workflows that leverage the power of the Palette.
-## Paths
+### Paths
Every API's URI has the prefix of the version and the Palette resource, such as: `v1/spectroclusters/...`
-## Authentication
+### Authentication
Palette supports two types of API authentication methods that can be used to authenticate API requests:
@@ -25,7 +30,7 @@ Palette supports two types of API authentication methods that can be used to aut
- [API Key](#api-key)
-### Authorization Token
+#### Authorization Token
You can acquire authorization tokens from Palette that have a 15-minute lifetime. The authorization token is passed as
part of the HTTP request header. You can use the authorization token to authenticate and authorize the request. The
@@ -33,7 +38,7 @@ header name is `Authorization`, and the token is the header value. Refer to the
[Authorization Token](/user-management/authentication/authorization-token) section to learn more about the authorization
token.
-### API Key
+#### API Key
You can use API keys to authenticate with the Palette API. API keys allow you to interact with Palette APIs without
requiring user credentials such as username and password. The API key must be present in each API request to
@@ -50,7 +55,7 @@ curl --location "https://api.spectrocloud.com/v1/spectroclusters/123456789?Proje
Refer to the [API Key](/user-management/authentication/api-key/) section to learn how to create and manage API keys.
-## Requests
+### Requests
All requests are in the `JSON` format. In general, the request payload has three sections: _metadata, spec and status_.
@@ -73,7 +78,7 @@ timestamp cannot be modified post-creation.
| PATCH | To add, modify, remove a specific attribute or sub-resource within a resource. |
| DELETE | To delete the resource. |
-## Response Codes
+### Response Codes
The API returns standard HTTP response codes:
@@ -88,42 +93,40 @@ The API returns standard HTTP response codes:
| 404 | The resource or the dependent resource is not found for the operation. |
| 500 | Operational error. For 500 error code, the server responds with an explicit error code and an error message. |
-## Palette API Lifecycle
+### Palette API Lifecycle
Palette APIs maintain backward compatibility until deprecation. The three API phases in the lifecycle are _Production_,
_Sunset_, and _Deprecated_. Spectro Cloud will inform users when APIs transition through this lifecycle.
-### Production
+#### Production
The Palette APIs are designed to work as intended and expected.
-### Sunset
+#### Sunset
As the API approaches deprecation because it is being replaced or will no longer be supported, a notice will be provided
in the documentation that outlines our intent and provides a cut-off date. Within three months of the deprecation date,
a notice will be shared that counts down to the end date and recommends the API to use instead.
-### Deprecated
+#### Deprecated
We indicate that an API is deprecated when it is no longer supported or recommended for use by including a tag to
indicate its state. The API documentation will remain available as a subsection of deprecated APIs.
-
-
:::info
The API lifecycle also applies to external-facing tools such as Terraform.
:::
-## Versioning
+### Versioning
The version information is included in the API URI, such as `v1alpha1` or `v1`. Future APIs will increment the version,
leaving the earlier version intact. The existing API request and response schema will be modified to add new attributes
or query parameters while maintaining backward compatibility with earlier schemas. Prior notice will be given before
advancing to the next version, and users will be advised to migrate to the new API.
-## Scope
+### Scope
Palette groups resources under either a Tenant or Project scope. When making API requests targeting resources belonging
to a project, the project scope should be specified. To specify the project scope, use the HTTP header key `ProjectUid`
@@ -145,7 +148,7 @@ If you do not provide the ProjectUid header, then the assumed scope is of the te
:::
-## Pagination
+### Pagination
API endpoints that return a list have a limit of 50 items per return payload. Pagination is necessary for this purpose.
The API response for the list includes the listMeta resource that contains the `continue` token. To perform pagination,
@@ -176,7 +179,7 @@ curl --location 'https://api.spectrocloud.com/v1/packs?continue=eyJvZmZzZXQiOjUw
--header 'apiKey: yourAPIKey'
```
-## Rate Limits
+### Rate Limits
The API rate limits are as follows:
@@ -194,7 +197,7 @@ The API rate limits are as follows:
- If too many requests are issued, you may receive an error with HTTP code `429` - `TooManyRequests.` We recommend
retrying the API call after a few moments.
-## Endpoint Prefix Rate
+### Endpoint Prefix Rate
| **Endpoint Prefix** | **Request Per Second** | **Burst Size** | **Max with Burst** |
| --------------------------------------------------------------------------------------- | ---------------------- | -------------- | ------------------ |
@@ -263,3 +266,136 @@ The API rate limits are as follows:
| /v1/clusterprofiles/validate/packs | 50 | 5 | 250 |
| /v1/clusterprofiles/:uid/validate/packs | 50 | 5 | 250 |
| /v1/spectroclusters/:uid/profiles | 50 | 5 | 250 |
+
+## Edge Host API
+
+An Edge host has its own set of API endpoints. These API endpoints are available on each Edge host instead of on a
+Palette instance. You can use Edge Host API endpoints to programmatically perform tasks such as retrieve information
+about Edge clusters, retrieve the list of available images on your Edge host, and create local clusters using embedded
+cluster definitions.
+
+:::preview
+
+:::
+
+### Authentication
+
+Use the `POST /v1/users/default/login` endpoint to generate an authentication token with your OS username and password.
+The following curl command is an example. Replace `edge-host-ip` with the IP of your Edge host and replace `os-username`
+and `os-password` with your OS user credentials.
+
+```shell
+curl --location 'https://edge-host-ip:5080/v1/users/default/login' \
+--header 'Content-Type: application/json' \
+--data '{
+ "username": "os-username",
+ "password": "os-password"
+}'
+```
+
+If your credentials are valid, you will receive a authorization token.
+
+```hideClipboard
+{
+ "Token": {
+ "Authorization": "******"
+ }
+}
+
+```
+
+Include this token in the header of your subsequent requests to the Edge Host API to authenticate your requests. For
+example, the following request retrieves information about the Edge host such as the processor architecture and the host
+name.
+
+```shell
+curl --location 'https://10.10.135.182:5080/v1/edge-mgmt/edgehosts/current' \
+--header 'Cookie: Authorization=*******'
+```
+
+```hideClipboard
+{
+ "metadata": {
+ "creationTimestamp": "2024-02-29T20:31:42.204Z",
+ "id": "edge-bc4a38428b71300e371150263b651b8d",
+ "lastModifiedTimestamp": "0001-01-01T00:00:00.000Z",
+ "name": "edge-bc4a38428b71300e371150263b651b8d"
+ },
+ "spec": {
+ "connectionMode": "airgap",
+ "hardwareSpec": {
+ "archType": "amd64",
+ "cpu": {
+ "cores": 4
+ },
+ "disks": [
+ {
+ "controller": "SCSI",
+ "partitions": [
+ {
+ "fileSystemType": "ext4",
+ "freeSpace": 13,
+ "mountPoint": "/run/initramfs/cos-state",
+ "totalSpace": 24,
+ "usedSpace": 9
+ }
+ ],
+ "size": 300,
+ "vendor": "VMware"
+ },
+ {
+ "controller": "SCSI",
+ "partitions": [],
+ "size": 4,
+ "vendor": "NECVMWar"
+ },
+ {
+ "controller": "SCSI",
+ "partitions": [],
+ "vendor": "NECVMWar"
+ }
+ ],
+ "gpus": [],
+ "memory": {
+ "sizeInMB": 7930
+ },
+ "os": {
+ "family": "kairos-core-sles",
+ "version": "v2.4.3"
+ }
+ },
+ "networkInfo": [
+ {
+ "dns": [
+ "10.10.128.8"
+ ],
+ "gateway": "10.10.128.1",
+ "ip": "10.10.135.182",
+ "isDefault": true,
+ "macAddr": "00:50:56:b8:9e:98",
+ "nicName": "ens160",
+ "subnet": "255.255.192.0"
+ }
+ ]
+ },
+ "status": {
+ "agentVersion": "4.3.0-rc4",
+ "configurationStatus": "pending",
+ "dns": {
+ "nameservers": [
+ "10.10.128.8"
+ ],
+ "options": [],
+ "searchDomains": [
+ "."
+ ]
+ },
+ "hostName": "edge-bc4a38428b71300e371150263b651b8d",
+ "ntp": {
+ "fallbackNtpServers": [],
+ "ntpServers": []
+ },
+ "registrationStatus": "not applicable"
+ }
+}
+```
diff --git a/docs/api-content/api-docs/2-samples.mdx b/docs/api-content/api-docs/2-samples.md
similarity index 99%
rename from docs/api-content/api-docs/2-samples.mdx
rename to docs/api-content/api-docs/2-samples.md
index 778ec76f6a..da4a65e672 100644
--- a/docs/api-content/api-docs/2-samples.mdx
+++ b/docs/api-content/api-docs/2-samples.md
@@ -3,13 +3,10 @@ title: "Example Usage"
sidebar_label: "Example Usage"
description: "Learn how to use the Spectro Cloud API through examples."
icon: ""
-hide_table_of_contents: true
-
+hide_table_of_contents: false
hiddenFromNav: false
---
-# Overview
-
This workflow demonstrates how to use Spectro Cloud API. You can use the API to automate the provisioning of Kubernetes
clusters and applications on Spectro Cloud.
@@ -18,8 +15,6 @@ authentication. The API is available at `https://api.spectrocloud.com`.
Use the following examples to familiarize yourself with the API.
-
-
:::warning
The following samples are for demonstration purposes only and may lack all the required payload values. They are not
@@ -29,15 +24,13 @@ more about the Postman collection.
:::
-
-
-# Prerequisites
+## Prerequisites
- You must have a Spectro Cloud account. If you do not have an account, you can create one at
[https://console.spectrocloud.com](https://console.spectrocloud.com).
- An Authentication header with a token value or an API key. Learn more about authentication credentials by reviewing
- the [authentication methods](https://docs.spectrocloud.com/user-management/user-authentication) resource.
+ the [authentication methods](https://docs.spectrocloud.com/user-management/authentication/) resource.
- The respective language runtime and package manager installed on your machine.
@@ -69,7 +62,7 @@ If you do not provide the projectUid header, then the assumed scope is of the te
:::
-# Deploy a Cluster
+## Deploy a Cluster
You can use the following endpoint to deploy a cluster. The provider value represents the cloud provider on which you
want to deploy the cluster, such as public cloud or on-prem.
@@ -535,7 +528,7 @@ async fn main() -> Result<(), Box> {
-# Cluster Nodes and Node Status
+## Cluster Nodes and Node Status
You can use the following endpoint to retrieve the list of nodes in a cluster and their status.
@@ -993,7 +986,7 @@ async fn main() -> Result<(), reqwest::Error> {
-# Cluster Workloads
+## Cluster Workloads
You can retrieve information about the active workloads on a cluster, such as the number of pods, nodes, and containers.
Use the namespace filter to retrieve information about workloads in specific namespaces.
@@ -1249,7 +1242,7 @@ async fn main() -> Result<(), Box> {
-# Filter Clusters
+## Filter Clusters
You can filter host clusters by specifying the tags you want to filter on.
@@ -1634,7 +1627,7 @@ async fn main() -> Result<(), Box> {
-# Download Cluster Kubeconfig
+## Download Cluster Kubeconfig
You can download the kubeconfig file of a host cluster. To download the kubeconfig file, you need to provide the cluster
UID.
diff --git a/docs/api-content/api-docs/3-postman-collection.md b/docs/api-content/api-docs/3-postman-collection.md
index d38ddb6da6..50ee21979a 100644
--- a/docs/api-content/api-docs/3-postman-collection.md
+++ b/docs/api-content/api-docs/3-postman-collection.md
@@ -47,7 +47,7 @@ https://raw.githubusercontent.com/spectrocloud/librarium/master/docs/api-content
Postman imports your collection and lists it under Import Complete.
-![Copy/paste the URL in the **Import** dialog as a link.](URL-as-a-link.webp)
+![Copy/paste the URL in the **Import** dialog as a link.](/URL-as-a-link.webp)
Find details about importing in Postman's
[import/export](https://learning.postman.com/docs/getting-started/importing-and-exporting-data/) tutorial.
diff --git a/docs/api-content/api-docs/edge-v1/emc-api.json b/docs/api-content/api-docs/edge-v1/emc-api.json
new file mode 100644
index 0000000000..b9dad21976
--- /dev/null
+++ b/docs/api-content/api-docs/edge-v1/emc-api.json
@@ -0,0 +1,2684 @@
+{
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "schemes": [
+ "http",
+ "https"
+ ],
+ "swagger": "2.0",
+ "info": {
+ "title": "Edge Management APIs",
+ "version": "v1"
+ },
+ "paths": {
+ "/v1/edge-mgmt/cluster": {
+ "post": {
+ "description": "Creates a cluster with the provided cluster configuration",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Creates a cluster with the provided cluster configuration",
+ "operationId": "v1CreateCluster",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/v1ClusterConfiguration"
+ }
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1AcceptedResponseWithMessage"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/cluster/applications": {
+ "get": {
+ "description": "list the details of the cluster’s packs.",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "list the details of the cluster’s packs.",
+ "operationId": "v1ClusterApplications",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1ClusterCurrentApplications"
+ }
+ },
+ "404": {
+ "description": "Not found",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ },
+ "default": {
+ "description": "generic error response",
+ "schema": {
+ "$ref": "#/definitions/apiError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/cluster/details": {
+ "get": {
+ "description": "Get Edge Cluster details",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Get Edge Cluster details",
+ "operationId": "v1ClusterGet",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1Cluster"
+ }
+ },
+ "404": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1NotFound"
+ }
+ },
+ "500": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/cluster/events": {
+ "get": {
+ "description": "List cluster events",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "List cluster events",
+ "operationId": "v1GetClusterEvents",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "namespace",
+ "in": "query"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1Events"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ },
+ "default": {
+ "description": "generic error response",
+ "schema": {
+ "$ref": "#/definitions/apiError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/cluster/profiles": {
+ "put": {
+ "description": "Updates a cluster with the provided cluster configuration",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Updates a cluster with the provided cluster configuration",
+ "operationId": "v1UpdateClusterProfiles",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/v1ClusterProfileConfiguration"
+ }
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1AcceptedResponseWithMessage"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/cluster/profiles/variables/validate": {
+ "post": {
+ "description": "Validate cluster profile variables",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Validate cluster profile variables",
+ "operationId": "v1ValidateClusterProfileVariables",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/v1ValidateVariables"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1ValidateVariablesResponse"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/cluster/registry/content/details": {
+ "get": {
+ "description": "Get Harbor Content Details",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "List existing Harbor Content Details",
+ "operationId": "v1HarborContentsDetails",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1HarborContentsDetails"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/cluster/registry/content/sync-status/details": {
+ "get": {
+ "description": "Get Harbor Content Sync Status",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "List Harbor Content Sync Status",
+ "operationId": "v1HarborContentsSyncStatusDetails",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1HarborContentsSyncStatus"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/cluster/registry/health": {
+ "get": {
+ "description": "Gets the harbor health status",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Gets the harbor health status",
+ "operationId": "V1HarborHealth",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1HarborHealthDetails"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/apiError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/cluster/settings": {
+ "put": {
+ "description": "Update cluster settings",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Update cluster settings",
+ "operationId": "v1EdgeNativeClusterSettings",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/v1EdgeNativeClusterSettings"
+ }
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1AcceptedResponseWithMessage"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ },
+ "default": {
+ "description": "generic error response",
+ "schema": {
+ "$ref": "#/definitions/apiError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/clusters/archive/embedded/details": {
+ "get": {
+ "description": "parses the cluster-config archive.",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "parses the cluster-config archive.",
+ "operationId": "V1ClusterConfigArchiveEmbedded",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1ClusterConfigArchiveDetails"
+ }
+ },
+ "default": {
+ "description": "Error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/clusters/archive/overridden/details": {
+ "get": {
+ "description": "parses the cluster-config archive if it exists.",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "parses the cluster-config archive if it exists.",
+ "operationId": "v1ClusterConfigArchiveOverriden",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1ClusterConfigArchiveDetails"
+ }
+ },
+ "default": {
+ "description": "Error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/clusters/current/nodes": {
+ "get": {
+ "description": "Get K8s Cluster Nodes",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "A list of the K8s Cluster Nodes",
+ "operationId": "v1ClusterNodes",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1ClusterNodes"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/edgehosts/current": {
+ "get": {
+ "description": "Get edge host details",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Get edge host info",
+ "operationId": "v1EdgeHostInfo",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1EdgeHostInfo"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ },
+ "default": {
+ "description": "generic error response",
+ "schema": {
+ "$ref": "#/definitions/apiError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/edgehosts/current/actions/reboot": {
+ "post": {
+ "description": "Reboot edge host",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Reboot edge host",
+ "operationId": "v1EdgeHostActionReboot",
+ "responses": {
+ "202": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1AcceptedResponseWithMessage"
+ }
+ },
+ "default": {
+ "description": "generic error response",
+ "schema": {
+ "$ref": "#/definitions/apiError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/edgehosts/current/actions/reset": {
+ "post": {
+ "description": "Reset edge host",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Reset edge host",
+ "operationId": "v1EdgeHostActionReset",
+ "responses": {
+ "202": {
+ "description": "Accepted response with message"
+ },
+ "500": {
+ "description": "Internal server error.",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ },
+ "default": {
+ "description": "generic error response",
+ "schema": {
+ "$ref": "#/definitions/apiError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/edgehosts/current/actions/shutdown": {
+ "post": {
+ "description": "Shutdown edge host",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Shutdown edge host",
+ "operationId": "v1EdgeHostActionShutdown",
+ "responses": {
+ "202": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1AcceptedResponseWithMessage"
+ }
+ },
+ "default": {
+ "description": "generic error response",
+ "schema": {
+ "$ref": "#/definitions/apiError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/edgehosts/current/actions/upload-clusterconfig": {
+ "post": {
+ "description": "Uploads the cluster config archive and extracts it to the required location on the edge host.",
+ "consumes": [
+ "multipart/form-data"
+ ],
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Uploads the cluster config archive and extracts it to the required location on the edge host.",
+ "operationId": "V1ClusterConfigUpload",
+ "parameters": [
+ {
+ "type": "file",
+ "description": "The archive file to be uploaded.",
+ "name": "uploadFile",
+ "in": "formData",
+ "required": true
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully.",
+ "schema": {
+ "$ref": "#/definitions/uploadResponse"
+ }
+ },
+ "500": {
+ "description": "Internal server error.",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/edgehosts/current/actions/upload-content": {
+ "post": {
+ "description": "Uploads an archive file and extracts it to the required location on the edge host.",
+ "consumes": [
+ "multipart/form-data"
+ ],
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Uploads an archive file and extracts it to the required location on the edge host.",
+ "operationId": "V1ContentUpload",
+ "parameters": [
+ {
+ "type": "file",
+ "description": "The archive file to be uploaded.",
+ "name": "uploadFile",
+ "in": "formData",
+ "required": true
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully.",
+ "schema": {
+ "$ref": "#/definitions/uploadResponse"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/edgehosts/current/configurations": {
+ "get": {
+ "description": "Get edge host configurations.",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Get edge host configurations.",
+ "operationId": "V1EdgeHostConfigurationsGet",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1EdgeHostConfigurations"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ },
+ "default": {
+ "description": "generic error response",
+ "schema": {
+ "$ref": "#/definitions/apiError"
+ }
+ }
+ }
+ },
+ "put": {
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Update Edge Host configurations",
+ "operationId": "V1EdgeHostConfigurationsUpdate",
+ "parameters": [
+ {
+ "description": "Update Edge Host configurations.",
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/v1EdgeHostConfigurations"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Updating Edge Host configurations.",
+ "schema": {
+ "$ref": "#/definitions/v1AcceptedResponseWithMessage"
+ }
+ },
+ "500": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ },
+ "default": {
+ "description": "generic error response",
+ "schema": {
+ "$ref": "#/definitions/apiError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/edge-mgmt/edgehosts/current/configurations/status": {
+ "get": {
+ "description": "Edge host configurations status",
+ "tags": [
+ "edge-mgmt"
+ ],
+ "summary": "Edge host configurations status",
+ "operationId": "v1EdgeHostConfigurationStatus",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1EdgeHostConfigurationStatus"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ }
+ }
+ }
+ },
+ "/v1/ping": {
+ "get": {
+ "description": "Ping Service",
+ "tags": [
+ "ping"
+ ],
+ "summary": "Ping Service",
+ "operationId": "V1Ping",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1Ping"
+ }
+ },
+ "default": {
+ "description": "generic error response",
+ "schema": {
+ "$ref": "#/definitions/apiError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/users/current": {
+ "get": {
+ "description": "Get current logged in user's information",
+ "tags": [
+ "users"
+ ],
+ "summary": "Get current logged in user's information",
+ "operationId": "V1CurrentUser",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1UserSpec"
+ }
+ },
+ "500": {
+ "description": "Server Error",
+ "schema": {
+ "$ref": "#/definitions/v1InternalServerError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/users/default/login": {
+ "post": {
+ "description": "Authenticates the user with the specified credentials",
+ "tags": [
+ "users"
+ ],
+ "summary": "Authenticates the user with the specified credentials",
+ "operationId": "V1UserLogin",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": true,
+ "description": "Describes a way to set cookie from backend.",
+ "name": "setCookie",
+ "in": "query"
+ },
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "Flag which if set to true will extend token timeout for the user to 24hrs and if not set will default to 2hrs",
+ "name": "extendedSession",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/v1AuthLogin"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1LoginSuccess"
+ }
+ },
+ "400": {
+ "description": "Invalid input",
+ "schema": {
+ "$ref": "#/definitions/v1BadRequest"
+ }
+ },
+ "500": {
+ "description": "Server Error",
+ "schema": {
+ "$ref": "#/definitions/v1InternalServerError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/users/default/logout": {
+ "post": {
+ "tags": [
+ "users"
+ ],
+ "summary": "Logs out the user from the system",
+ "operationId": "V1UserLogout",
+ "responses": {
+ "200": {
+ "description": "OK"
+ },
+ "400": {
+ "description": "Invalid input",
+ "schema": {
+ "$ref": "#/definitions/v1BadRequest"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/v1Unauthorized"
+ }
+ },
+ "500": {
+ "description": "Server Error",
+ "schema": {
+ "$ref": "#/definitions/v1InternalServerError"
+ }
+ }
+ }
+ }
+ },
+ "/v1/users/default/password/reset": {
+ "post": {
+ "description": "Resets the user's password",
+ "tags": [
+ "users"
+ ],
+ "summary": "Resets the user's password",
+ "operationId": "V1UserPasswordReset",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/v1PasswordResetRequest"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content",
+ "schema": {
+ "$ref": "#/definitions/v1NoContent"
+ }
+ },
+ "400": {
+ "description": "Invalid input",
+ "schema": {
+ "$ref": "#/definitions/v1BadRequest"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/v1Unauthorized"
+ }
+ }
+ }
+ }
+ },
+ "/v1/users/default/token/renewal": {
+ "post": {
+ "tags": [
+ "users"
+ ],
+ "summary": "Refreshes the authentication token of the user",
+ "operationId": "V1UserTokenRenewal",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "Flag which if set to true will extend token timeout for the user to 24hrs and if not set will default to 2hrs",
+ "name": "extendedSession",
+ "in": "query"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1UserToken"
+ }
+ },
+ "400": {
+ "description": "Invalid input",
+ "schema": {
+ "$ref": "#/definitions/v1BadRequest"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/v1Unauthorized"
+ }
+ },
+ "500": {
+ "description": "Server Error",
+ "schema": {
+ "$ref": "#/definitions/v1InternalServerError"
+ }
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "apiError": {
+ "type": "string"
+ },
+ "uploadResponse": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "uploadPath": {
+ "type": "string"
+ }
+ }
+ },
+ "v1AcceptedResponseWithMessage": {
+ "description": "Accepted response with message",
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ }
+ },
+ "v1ArchType": {
+ "description": "Architecture type of the edge host",
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ },
+ "v1AuthLogin": {
+ "type": "object",
+ "properties": {
+ "password": {
+ "description": "The user's password to authenticate user for system login",
+ "type": "string",
+ "format": "password"
+ },
+ "username": {
+ "description": "The username of the user trying to do system login",
+ "type": "string"
+ }
+ }
+ },
+ "v1BadRequest": {
+ "description": "Bad request"
+ },
+ "v1CPU": {
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "Cpu cores defines the number of cpu cores on the edge host.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "v1Cluster": {
+ "description": "Cluster provides details about cluster.",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1MetaData"
+ },
+ "spec": {
+ "$ref": "#/definitions/v1ClusterSpec"
+ },
+ "status": {
+ "$ref": "#/definitions/v1ClusterStatus"
+ }
+ }
+ },
+ "v1ClusterConfigArchiveDetails": {
+ "type": "object",
+ "properties": {
+ "archiveUploadPath": {
+ "type": "string"
+ },
+ "clusterProfileDetails": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1ClusterProfileDetail"
+ }
+ }
+ }
+ },
+ "v1ClusterConfiguration": {
+ "description": "v1ClusterConfiguration is the configuration required to create a cluster.",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1MetaData"
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "archiveUploadPath": {
+ "type": "string"
+ },
+ "cloudConfig": {
+ "$ref": "#/definitions/v1EdgeNativeCloudConfig"
+ },
+ "profileVariables": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1ProfileVariable"
+ }
+ },
+ "scheduleAt": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "v1ClusterCurrentApplications": {
+ "properties": {
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1ClusterProfileTemplate"
+ }
+ }
+ }
+ },
+ "v1ClusterNode": {
+ "type": "object",
+ "properties": {
+ "age": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "edgeHostID": {
+ "type": "string"
+ },
+ "ipv4": {
+ "type": "string"
+ },
+ "kernelVersion": {
+ "type": "string"
+ },
+ "kubeProxyVersion": {
+ "type": "string"
+ },
+ "kubeletVersion": {
+ "type": "string"
+ },
+ "nodeHealth": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1ClusterNodeCondition"
+ }
+ },
+ "nodeName": {
+ "type": "string"
+ },
+ "nodeStatus": {
+ "$ref": "#/definitions/v1ClusterNodeCondition"
+ },
+ "operatingSystem": {
+ "type": "string"
+ },
+ "osImage": {
+ "type": "string"
+ }
+ }
+ },
+ "v1ClusterNodeCondition": {
+ "type": "object",
+ "properties": {
+ "conditionType": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ },
+ "v1ClusterNodePool": {
+ "type": "object",
+ "properties": {
+ "archType": {
+ "$ref": "#/definitions/v1ArchType"
+ },
+ "isControlPlane": {
+ "type": "boolean"
+ },
+ "name": {
+ "description": "Name of the cluster node pool.",
+ "type": "string"
+ }
+ }
+ },
+ "v1ClusterNodePoolSpec": {
+ "description": "ClusterNodePool provides details about cluster node pool.",
+ "type": "object",
+ "properties": {
+ "hosts": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1EdgeHost"
+ }
+ },
+ "pool": {
+ "$ref": "#/definitions/v1ClusterNodePool"
+ }
+ }
+ },
+ "v1ClusterNodePoolStatus": {
+ "type": "object",
+ "properties": {
+ "nodes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1ClusterNodeStatus"
+ }
+ },
+ "pool": {
+ "$ref": "#/definitions/v1ClusterNodePool"
+ }
+ }
+ },
+ "v1ClusterNodeStatus": {
+ "type": "object",
+ "properties": {
+ "age": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "health": {
+ "$ref": "#/definitions/v1Health"
+ },
+ "ipv4": {
+ "type": "string"
+ },
+ "k8sVersion": {
+ "type": "string"
+ },
+ "nodeName": {
+ "type": "string"
+ },
+ "nodeState": {
+ "$ref": "#/definitions/v1State"
+ }
+ }
+ },
+ "v1ClusterNodes": {
+ "type": "object",
+ "properties": {
+ "nodes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1ClusterNode"
+ }
+ }
+ }
+ },
+ "v1ClusterProfileConfiguration": {
+ "description": "v1ClusterProfileConfiguration is the configuration required to update a cluster's profiles.",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1MetaData"
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "archiveUploadPath": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "v1ClusterProfileDetail": {
+ "type": "object",
+ "properties": {
+ "packs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1Pack"
+ }
+ },
+ "profileDescription": {
+ "type": "string"
+ },
+ "profileName": {
+ "type": "string"
+ },
+ "profileTags": {
+ "type": "string"
+ },
+ "profileType": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "profileVersion": {
+ "type": "string"
+ },
+ "variables": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1Variable"
+ }
+ }
+ }
+ },
+ "v1ClusterProfileTemplate": {
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1PackInfo"
+ }
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "v1ClusterSpec": {
+ "description": "ClusterSpec is the specification of the cluster.",
+ "type": "object",
+ "properties": {
+ "hostIDs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "nodePools": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1ClusterNodePoolSpec"
+ }
+ },
+ "ntpServers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "overlayCIDR": {
+ "type": "string"
+ },
+ "sshKeys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "vip": {
+ "type": "string"
+ }
+ }
+ },
+ "v1ClusterStatus": {
+ "description": "ClusterStatus provides the status of the cluster.",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "clusterConditions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1Condition"
+ }
+ },
+ "clusterState": {
+ "$ref": "#/definitions/v1State"
+ },
+ "health": {
+ "$ref": "#/definitions/v1Health"
+ },
+ "k8sVersion": {
+ "type": "string"
+ },
+ "kubeconfig": {
+ "type": "string"
+ },
+ "nodePools": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1ClusterNodePoolStatus"
+ }
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1Service"
+ }
+ }
+ }
+ },
+ "v1Condition": {
+ "required": [
+ "type",
+ "status"
+ ],
+ "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 reason for the condition's last transition.",
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "v1Configuration": {
+ "description": "Configuration status of the edge host.",
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Inprogress",
+ "Configured"
+ ]
+ },
+ "v1ConnectionMode": {
+ "type": "string",
+ "enum": [
+ "Connected",
+ "Airgap"
+ ]
+ },
+ "v1DNS": {
+ "type": "object",
+ "properties": {
+ "nameservers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "options": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "searchDomains": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "v1Disk": {
+ "description": "Disk is the specification of the disks on the edge host.",
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "string"
+ },
+ "partitions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1Partition"
+ }
+ },
+ "size": {
+ "description": "Size in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendor": {
+ "type": "string"
+ }
+ }
+ },
+ "v1EdgeHost": {
+ "type": "object",
+ "properties": {
+ "hostAddress": {
+ "type": "string"
+ },
+ "hostID": {
+ "type": "string"
+ },
+ "hostName": {
+ "type": "string"
+ },
+ "nic": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1Nic"
+ }
+ }
+ }
+ },
+ "v1EdgeHostConfigurationStatus": {
+ "type": "object",
+ "properties": {
+ "errorMessage": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "Not Configured",
+ "In Progress",
+ "Configured",
+ "Failed"
+ ]
+ }
+ }
+ },
+ "v1EdgeHostConfigurations": {
+ "type": "object",
+ "properties": {
+ "caCerts": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "httpProxy": {
+ "type": "string"
+ },
+ "httpsProxy": {
+ "type": "string"
+ },
+ "noProxy": {
+ "type": "string"
+ }
+ }
+ },
+ "v1EdgeHostInfo": {
+ "description": "EdgeHostInfo is the information about the edge host.",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1MetaData"
+ },
+ "spec": {
+ "$ref": "#/definitions/v1EdgeHostSpec"
+ },
+ "status": {
+ "$ref": "#/definitions/v1EdgeHostStatus"
+ }
+ }
+ },
+ "v1EdgeHostSpec": {
+ "description": "EdgeHostSpec is the specification of the edge host.",
+ "type": "object",
+ "properties": {
+ "connectionMode": {
+ "$ref": "#/definitions/v1ConnectionMode"
+ },
+ "hardwareSpec": {
+ "$ref": "#/definitions/v1HardwareSpec"
+ },
+ "networkInfo": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1Nic"
+ }
+ }
+ }
+ },
+ "v1EdgeHostStatus": {
+ "description": "EdgeHostStatus is the status of the edge host.",
+ "type": "object",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "configurationStatus": {
+ "$ref": "#/definitions/v1Configuration"
+ },
+ "dns": {
+ "$ref": "#/definitions/v1DNS"
+ },
+ "hostName": {
+ "type": "string"
+ },
+ "ntp": {
+ "$ref": "#/definitions/v1NTP"
+ },
+ "registrationStatus": {
+ "$ref": "#/definitions/v1Registration"
+ }
+ }
+ },
+ "v1EdgeNativeCloudConfig": {
+ "description": "EdgeNativeCloudConfig is the Schema for the edgenativecloudconfigs API",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1ObjectMeta"
+ },
+ "spec": {
+ "$ref": "#/definitions/v1EdgeNativeCloudConfigSpec"
+ }
+ }
+ },
+ "v1EdgeNativeCloudConfigSpec": {
+ "description": "EdgeNativeCloudConfigSpec defines the desired state of EdgeNativeCloudConfig",
+ "type": "object",
+ "required": [
+ "clusterConfig",
+ "machinePoolConfig"
+ ],
+ "properties": {
+ "clusterConfig": {
+ "$ref": "#/definitions/v1EdgeNativeClusterConfig"
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1EdgeNativeMachinePoolConfig"
+ }
+ }
+ }
+ },
+ "v1EdgeNativeClusterConfig": {
+ "description": "EdgeNativeClusterConfig defines Edge Native Cluster specific Spec",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "description": "ControlPlaneEndpoint is the control plane endpoint, which can be an IP or FQDN",
+ "$ref": "#/definitions/v1EdgeNativeControlPlaneEndPoint"
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "overlayNetworkConfiguration": {
+ "description": "OverlayNetworkConfiguration is the configuration for the overlay network",
+ "$ref": "#/definitions/v1EdgeNativeOverlayNetworkConfiguration"
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ },
+ "v1EdgeNativeClusterSettings": {
+ "description": "EdgeNativeClusterSettings defines Edge Native Cluster specific settings",
+ "properties": {
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "v1EdgeNativeControlPlaneEndPoint": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "v1EdgeNativeHost": {
+ "description": "EdgeNativeHost is the underlying appliance",
+ "type": "object",
+ "properties": {
+ "IsCandidateCaption": {
+ "description": "Is Edge host nominated as candidate",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ },
+ "caCert": {
+ "description": "CACert for TLS connections",
+ "type": "string"
+ },
+ "hostAddress": {
+ "description": "HostAddress is a FQDN or IP address of the Host",
+ "type": "string",
+ "default": ""
+ },
+ "hostName": {
+ "description": "Qualified name of host",
+ "type": "string",
+ "default": ""
+ },
+ "hostUid": {
+ "description": "HostUid is the ID of the EdgeHost",
+ "type": "string",
+ "default": ""
+ },
+ "isTwoNodeCandidate": {
+ "description": "Enable this flag to support 2-Node HA mode. True indicates this edgehost which act as the recovery node. It is a immutable field can be set only during cluster provisioning.",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ },
+ "nic": {
+ "description": "Edge native nic",
+ "$ref": "#/definitions/v1Nic"
+ },
+ "nicName": {
+ "description": "Deprecated. Edge host nic name",
+ "type": "string"
+ },
+ "staticIP": {
+ "description": "Deprecated. Edge host static IP",
+ "type": "string"
+ }
+ }
+ },
+ "v1EdgeNativeMachinePoolConfig": {
+ "type": "object",
+ "required": [
+ "hosts"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "AdditionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "hosts": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1EdgeNativeHost"
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean"
+ },
+ "labels": {
+ "description": "labels for this pool, example: master/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "machinePoolProperties": {
+ "$ref": "#/definitions/v1MachinePoolProperties"
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1Taint"
+ }
+ },
+ "updateStrategy": {
+ "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut",
+ "$ref": "#/definitions/v1UpdateStrategy"
+ },
+ "useControlPlaneAsWorker": {
+ "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools",
+ "type": "boolean"
+ }
+ }
+ },
+ "v1EdgeNativeOverlayNetworkConfiguration": {
+ "type": "object",
+ "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
+ }
+ }
+ },
+ "v1Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "details": {
+ "type": "object"
+ },
+ "message": {
+ "type": "string"
+ },
+ "ref": {
+ "type": "string"
+ }
+ }
+ },
+ "v1Event": {
+ "description": "Event information organized by tags",
+ "type": "object",
+ "properties": {
+ "involvedObject": {
+ "type": "object",
+ "$ref": "#/definitions/v1ObjectReference"
+ },
+ "message": {
+ "type": "string"
+ },
+ "metadata": {
+ "type": "object",
+ "$ref": "#/definitions/v1ObjectMeta"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "relatedObject": {
+ "type": "object",
+ "$ref": "#/definitions/v1RelatedObject"
+ },
+ "severity": {
+ "type": "string"
+ },
+ "source": {
+ "type": "object",
+ "$ref": "#/definitions/v1EventSource"
+ }
+ }
+ },
+ "v1EventSource": {
+ "description": "Event source info",
+ "type": "object",
+ "properties": {
+ "component": {
+ "type": "string"
+ },
+ "host": {
+ "type": "string"
+ }
+ }
+ },
+ "v1Events": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "$ref": "#/definitions/v1Event"
+ }
+ }
+ }
+ },
+ "v1GPUDeviceSpec": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "v1HarborContentDetails": {
+ "type": "object",
+ "properties": {
+ "contentType": {
+ "type": "string",
+ "enum": [
+ "image",
+ "artifact",
+ "chart",
+ "pack"
+ ]
+ },
+ "dateAdded": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "type": "string"
+ },
+ "size": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "v1HarborContentSyncStatus": {
+ "type": "object",
+ "properties": {
+ "contentType": {
+ "type": "string",
+ "enum": [
+ "image",
+ "artifact",
+ "chart",
+ "pack"
+ ]
+ },
+ "creationTimestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncTimestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "msg": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "size": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "completed",
+ "failed"
+ ]
+ },
+ "target": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "v1HarborContentsDetails": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1HarborContentDetails"
+ }
+ }
+ }
+ },
+ "v1HarborContentsSyncStatus": {
+ "type": "object",
+ "properties": {
+ "errors": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "pendingItems": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1HarborContentSyncStatus"
+ }
+ },
+ "statusMessage": {
+ "type": "string"
+ }
+ }
+ },
+ "v1HarborHealthDetails": {
+ "type": "object",
+ "properties": {
+ "DiskAvailable": {
+ "type": "string"
+ },
+ "DiskCapacity": {
+ "type": "string"
+ },
+ "DiskUsed": {
+ "type": "string"
+ },
+ "Message": {
+ "type": "string"
+ },
+ "State": {
+ "type": "string",
+ "enum": [
+ "Healthy",
+ "Unhealthy",
+ "NotInstalled"
+ ]
+ },
+ "UsagePercentage": {
+ "type": "string"
+ }
+ }
+ },
+ "v1HardwareSpec": {
+ "description": "HardwareSpec is the specification of the hardware of the edge host.",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "$ref": "#/definitions/v1ArchType"
+ },
+ "cpu": {
+ "$ref": "#/definitions/v1CPU"
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1Disk"
+ }
+ },
+ "gpus": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1GPUDeviceSpec"
+ }
+ },
+ "memory": {
+ "$ref": "#/definitions/v1Memory"
+ },
+ "os": {
+ "$ref": "#/definitions/v1OS"
+ }
+ }
+ },
+ "v1Health": {
+ "description": "Health provides details about the resource health.",
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "Healthy",
+ "Unhealthy"
+ ]
+ }
+ }
+ },
+ "v1InternalServerError": {
+ "description": "Internal Server Error"
+ },
+ "v1LoginSuccess": {
+ "description": "System login success response",
+ "type": "object",
+ "properties": {
+ "IsFirstLogin": {
+ "description": "Flag to indicate if the user is logging in for the first time",
+ "type": "boolean"
+ },
+ "Token": {
+ "description": "System login token",
+ "$ref": "#/definitions/v1UserToken"
+ }
+ }
+ },
+ "v1MachinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the pool. Default value is 'amd64'",
+ "x-omitempty": false,
+ "$ref": "#/definitions/v1ArchType"
+ }
+ }
+ },
+ "v1Memory": {
+ "type": "object",
+ "properties": {
+ "sizeInMB": {
+ "description": "Memory size in bytes",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "v1MetaData": {
+ "description": "MetaData defines the metadata for the resource.",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "description": "CreationTimestamp is the timestamp when the resource was created.",
+ "$ref": "#/definitions/v1Time"
+ },
+ "id": {
+ "description": "ID is the unique identifier of the resource.",
+ "type": "string"
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "description": "LastModifiedTimestamp is the timestamp when the resource was last modified.",
+ "$ref": "#/definitions/v1Time"
+ },
+ "name": {
+ "description": "Name is the name of the resource.",
+ "type": "string"
+ },
+ "tags": {
+ "description": "Tags is the list of tags associated with the resource.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ "v1NTP": {
+ "type": "object",
+ "properties": {
+ "connectionRetrySec": {
+ "type": "string"
+ },
+ "fallbackNtpServers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "ntpServers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "pollIntervalMaxSec": {
+ "type": "string"
+ },
+ "pollIntervalMinSec": {
+ "type": "string"
+ },
+ "rootDistanceMaxSec": {
+ "type": "string"
+ },
+ "saveIntervalSec": {
+ "type": "string"
+ }
+ }
+ },
+ "v1Nic": {
+ "description": "Nic is the specification of the network interface card on the edge host.",
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "v1NoContent": {
+ "description": "No Content"
+ },
+ "v1NotFound": {
+ "description": "Resource not found"
+ },
+ "v1OS": {
+ "type": "object",
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "v1ObjectMeta": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "$ref": "#/definitions/v1Time"
+ },
+ "deletionTimestamp": {
+ "$ref": "#/definitions/v1Time"
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "$ref": "#/definitions/v1Time"
+ },
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "resourceVersion": {
+ "type": "string"
+ },
+ "selfLink": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "v1ObjectReference": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "API version of the referent.",
+ "type": "string"
+ },
+ "fieldPath": {
+ "description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.",
+ "type": "string"
+ },
+ "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. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "namespace": {
+ "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/",
+ "type": "string"
+ },
+ "resourceVersion": {
+ "description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ },
+ "v1Pack": {
+ "type": "object",
+ "properties": {
+ "logo": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "v1PackCondition": {
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "v1PackContent": {
+ "properties": {
+ "contentType": {
+ "type": "string",
+ "enum": [
+ "image",
+ "artifact",
+ "chart"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "syncMsg": {
+ "type": "string"
+ },
+ "syncStatus": {
+ "type": "string"
+ }
+ }
+ },
+ "v1PackInfo": {
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1PackCondition"
+ }
+ },
+ "contents": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1PackContent"
+ }
+ },
+ "endTime": {
+ "type": "string"
+ },
+ "layer": {
+ "type": "string"
+ },
+ "logo": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "startTime": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "v1Partition": {
+ "description": "Partition is the specification of the partitions on the disk.",
+ "type": "object",
+ "properties": {
+ "fileSystemType": {
+ "type": "string"
+ },
+ "freeSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "mountPoint": {
+ "type": "string"
+ },
+ "totalSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "usedSpace": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "v1PasswordResetRequest": {
+ "type": "object",
+ "properties": {
+ "newPassword": {
+ "description": "The new password which will be set for the user",
+ "type": "string",
+ "format": "password"
+ },
+ "oldPassword": {
+ "description": "The old password which is required to authenticate the user",
+ "type": "string",
+ "format": "password"
+ }
+ }
+ },
+ "v1Ping": {
+ "type": "object",
+ "properties": {
+ "msg": {
+ "type": "string"
+ }
+ }
+ },
+ "v1Port": {
+ "description": "Port provides details about port.",
+ "type": "object",
+ "properties": {
+ "port": {
+ "description": "Port number.",
+ "type": "integer"
+ },
+ "protocol": {
+ "description": "Protocol of the port.",
+ "type": "string"
+ }
+ }
+ },
+ "v1ProfileVariable": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ },
+ "v1Registration": {
+ "description": "Registration status of the edge host.",
+ "type": "string",
+ "enum": [
+ "Paired",
+ "Unpaired",
+ "Not Applicable"
+ ]
+ },
+ "v1RelatedObject": {
+ "description": "The object for which the event is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "v1Service": {
+ "description": "ClusterService provides details about services in cluster.",
+ "type": "object",
+ "properties": {
+ "host": {
+ "description": "Host of the service.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the service.",
+ "type": "string"
+ },
+ "ports": {
+ "description": "Ports of the service.",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1Port"
+ }
+ }
+ }
+ },
+ "v1State": {
+ "type": "string",
+ "enum": [
+ "Provisioning",
+ "Running",
+ "Deleting",
+ "Error"
+ ]
+ },
+ "v1Taint": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "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"
+ }
+ }
+ },
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "v1Unauthorized": {
+ "description": "Unauthorized"
+ },
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "v1UserSpec": {
+ "description": "Current user information",
+ "type": "object",
+ "properties": {
+ "userName": {
+ "description": "Current user name",
+ "type": "string"
+ }
+ }
+ },
+ "v1UserToken": {
+ "description": "Authorization token response",
+ "type": "object",
+ "properties": {
+ "Authorization": {
+ "description": "The token granting the authorization access to the user",
+ "type": "string"
+ }
+ }
+ },
+ "v1ValidataVariable": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ },
+ "v1ValidateVariableResponse": {
+ "type": "object",
+ "properties": {
+ "isValid": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileName": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "regex": {
+ "type": "string"
+ },
+ "validationFailureReason": {
+ "type": "string"
+ }
+ }
+ },
+ "v1ValidateVariables": {
+ "description": "v1 Validate Variables is for validating the variables",
+ "type": "object",
+ "properties": {
+ "archiveUploadPath": {
+ "type": "string"
+ },
+ "variables": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1ValidataVariable"
+ }
+ }
+ }
+ },
+ "v1ValidateVariablesResponse": {
+ "type": "object",
+ "properties": {
+ "variables": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1ValidateVariableResponse"
+ }
+ }
+ }
+ },
+ "v1Variable": {
+ "type": "object",
+ "properties": {
+ "defaultValue": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "displayName": {
+ "type": "string"
+ },
+ "format": {
+ "type": "string"
+ },
+ "hidden": {
+ "type": "boolean"
+ },
+ "immutable": {
+ "type": "boolean"
+ },
+ "isSensitive": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "regex": {
+ "type": "string"
+ },
+ "required": {
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ "securityDefinitions": {
+ "Authorization": {
+ "description": "JWT authorization token obtained using /v1/users/default/login API",
+ "type": "apiKey",
+ "name": "Authorization",
+ "in": "header"
+ }
+ },
+ "tags": [
+ {
+ "name": "edge-mgmt",
+ "x-displayName": "Edge Mgmt"
+ },
+ {
+ "name": "ping",
+ "x-displayName": "Ping"
+ },
+ {
+ "name": "users",
+ "x-displayName": "Users"
+ }
+ ],
+ "servers": [
+ {
+ "url": "https://edge-host-ip:5080"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/docs/api-content/api-docs/v1/api.json b/docs/api-content/api-docs/v1/api.json
index 813b9335c1..e9c451a28a 100644
--- a/docs/api-content/api-docs/v1/api.json
+++ b/docs/api-content/api-docs/v1/api.json
@@ -2,33498 +2,286833 @@
"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"
+ "produces": [
+ "application/json"
+ ],
+ "schemes": [
+ "http",
+ "https"
+ ],
+ "swagger": "2.0",
+ "info": {
+ "title": "Palette APIs - 4.3",
+ "version": "v1"
+ },
+ "paths": {
+ "/v1/apiKeys": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "vpcId": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "apiKeys"
+ ],
+ "summary": "Retrieves a list of API keys",
+ "operationId": "v1ApiKeysList",
+ "responses": {
+ "200": {
+ "description": "Retrieves a list of API keys",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "List of API keys",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "API key information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "API key specification",
+ "type": "object",
+ "properties": {
+ "expiry": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "key": {
+ "description": "Deprecated: API key field will be no longer available",
+ "type": "string"
+ },
+ "user": {
+ "description": "API key user information",
+ "type": "object",
+ "properties": {
+ "firstName": {
+ "description": "First name of user",
+ "type": "string"
+ },
+ "lastName": {
+ "description": "Last name of user",
+ "type": "string"
+ },
+ "uid": {
+ "description": "User uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "API key status",
+ "type": "object",
+ "properties": {
+ "isActive": {
+ "description": "API key active state",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "V1GcpPropertiesValidateSpec": {
- "description": "Gcp properties validate spec",
- "properties": {
- "azs": {
- "items": {
- "type": "string"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "cloudAccountUid": {
- "type": "string"
- },
- "projectId": {
- "type": "string"
- },
- "region": {
- "type": "string"
- }
- },
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "apiKeys"
+ ],
+ "summary": "Create an API key",
+ "operationId": "v1ApiKeysCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "API key request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "API key specification",
+ "type": "object",
+ "properties": {
+ "expiry": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "userUid": {
+ "description": "User to whom the API key has to be created",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "APIKey Created successfully",
+ "schema": {
+ "description": "Response of create API key",
+ "type": "object",
+ "properties": {
+ "apiKey": {
+ "description": "Api key is used for authentication",
+ "type": "string"
+ },
+ "uid": {
+ "description": "User uid",
+ "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"
+ "/v1/apiKeys/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "managed": {
- "description": "Managed - Whether to enable managed AAD.",
- "type": "boolean",
- "x-omitempty": false
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "apiKeys"
+ ],
+ "summary": "Returns the specified API key",
+ "operationId": "v1ApiKeysUidGet",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "API key information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "API key specification",
+ "type": "object",
+ "properties": {
+ "expiry": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "key": {
+ "description": "Deprecated: API key field will be no longer available",
+ "type": "string"
+ },
+ "user": {
+ "description": "API key user information",
+ "type": "object",
+ "properties": {
+ "firstName": {
+ "description": "First name of user",
+ "type": "string"
+ },
+ "lastName": {
+ "description": "Last name of user",
+ "type": "string"
+ },
+ "uid": {
+ "description": "User uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "API key status",
+ "type": "object",
+ "properties": {
+ "isActive": {
+ "description": "API key active state",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "apiKeys"
+ ],
+ "summary": "Update the specified API key",
+ "operationId": "v1ApiKeysUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "API key update request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "API key update request specification",
+ "properties": {
+ "expiry": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "apiKeys"
+ ],
+ "summary": "Deletes the specified API key",
+ "operationId": "v1ApiKeysUidDelete",
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object"
- },
- "v1AWSVolumeTypes": {
- "description": "AWS Volume Types",
- "properties": {
- "volumeTypes": {
- "items": {
- "$ref": "#/definitions/v1AwsVolumeType"
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "apiKeys"
+ ],
+ "summary": "Activate or de-active the specified API key",
+ "operationId": "v1ApiKeysUidActiveState",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "isActive": {
+ "description": "API key active state",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Specify API key uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1ActiveTenantResources": {
- "description": "Active resources of tenant",
- "properties": {
- "activeResources": {
- "additionalProperties": {
- "items": {
- "type": "string"
- },
- "type": "array"
+ "/v1/apiKeys/{uid}/state": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "object"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "apiKeys"
+ ],
+ "summary": "Revoke or re-activate the API key access",
+ "operationId": "v1ApiKeysUidState",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "isActive": {
+ "description": "API key active state",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Specify API key uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1Alert": {
- "properties": {
- "channels": {
- "items": {
- "$ref": "#/definitions/v1Channel"
+ "/v1/appDeployments": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "component": {
- "type": "string"
- }
- },
- "type": "object"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Creates a application deployment in the virtual cluster",
+ "operationId": "v1AppDeploymentsVirtualClusterCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application deployment virtual cluster request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application deployment virtual cluster spec",
+ "type": "object",
+ "properties": {
+ "config": {
+ "description": "Application deployment virtual cluster config",
+ "type": "object",
+ "properties": {
+ "targetSpec": {
+ "description": "Application deployment virtual cluster target spec",
+ "type": "object",
+ "required": [
+ "clusterUid"
+ ],
+ "properties": {
+ "clusterUid": {
+ "description": "Application deployment virtual cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "profile": {
+ "description": "Application deployment profile request payload",
+ "type": "object",
+ "required": [
+ "appProfileUid"
+ ],
+ "properties": {
+ "appProfileUid": {
+ "description": "Application deployment profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
},
- "v1AlertEntity": {
- "properties": {
- "channels": {
- "items": {
- "$ref": "#/definitions/v1Channel"
+ "/v1/appDeployments/clusterGroup": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Creates a application deployment in one of virtual clusters in the cluster group",
+ "operationId": "v1AppDeploymentsClusterGroupCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application deployment cluster group request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application deployment cluster group spec",
+ "type": "object",
+ "properties": {
+ "config": {
+ "description": "Application deployment cluster group config",
+ "type": "object",
+ "properties": {
+ "targetSpec": {
+ "description": "Application deployment cluster group target spec",
+ "type": "object",
+ "required": [
+ "clusterName",
+ "clusterGroupUid"
+ ],
+ "properties": {
+ "clusterGroupUid": {
+ "description": "Application deployment cluster group uid",
+ "type": "string"
+ },
+ "clusterLimits": {
+ "description": "Application deployment target cluster limits",
+ "properties": {
+ "cpu": {
+ "description": "CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "Memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "storageGiB": {
+ "description": "Storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "clusterName": {
+ "description": "Application deployment virtual cluster name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "profile": {
+ "description": "Application deployment profile request payload",
+ "type": "object",
+ "required": [
+ "appProfileUid"
+ ],
+ "properties": {
+ "appProfileUid": {
+ "description": "Application deployment profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1AlertNotificationStatus": {
- "properties": {
- "isSucceeded": {
- "type": "boolean",
- "x-omitempty": false
- },
- "message": {
- "type": "string"
- },
- "time": {
- "$ref": "#/definitions/v1Time"
+ "/v1/appDeployments/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Returns the specified application deployment",
+ "operationId": "v1AppDeploymentsUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Application deployment response",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application deployment spec",
+ "type": "object",
+ "properties": {
+ "config": {
+ "description": "Application deployment config response",
+ "type": "object",
+ "properties": {
+ "target": {
+ "description": "Application deployment target config response",
+ "type": "object",
+ "properties": {
+ "clusterRef": {
+ "description": "Application deployment cluster reference",
+ "type": "object",
+ "properties": {
+ "deploymentClusterType": {
+ "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]",
+ "type": "string",
+ "enum": [
+ "virtual",
+ "host"
+ ]
+ },
+ "name": {
+ "description": "Application deployment cluster name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Application deployment cluster uid",
+ "type": "string"
+ }
+ }
+ },
+ "envRef": {
+ "description": "Application deployment target environment reference",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profile": {
+ "description": "Application deployment profile",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Application deployment profile metadata",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "template": {
+ "description": "Application profile template information",
+ "type": "object",
+ "properties": {
+ "appTiers": {
+ "description": "Application profile tiers",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Application tier reference",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Application tier name",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "manifest",
+ "enum": [
+ "manifest",
+ "helm",
+ "operator-instance",
+ "container"
+ ]
+ },
+ "uid": {
+ "description": "Application tier uid to uniquely identify the tier",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "registryRefs": {
+ "description": "Application profile registries reference",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Application deployment status",
+ "type": "object",
+ "properties": {
+ "appTiers": {
+ "description": "Application deployment tiers",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lifecycleStatus": {
+ "properties": {
+ "msg": {
+ "description": "error or success msg of lifecycle",
+ "type": "string"
+ },
+ "status": {
+ "description": "lifecycle status",
+ "type": "string",
+ "enum": [
+ "Pausing",
+ "Paused",
+ "Resuming",
+ "Running",
+ "Error"
+ ]
+ }
+ }
+ },
+ "state": {
+ "description": "Application deployment state [ \"Pending\", \"Deploying\", \"Deployed\", \"Updating\" ]",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1Alerts": {
- "items": {
- "$ref": "#/definitions/v1Alert"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Deletes the specified application deployment",
+ "operationId": "v1AppDeploymentsUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
},
- "type": "array"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application deployment uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/appDeployments/{uid}/profile": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Returns profile of the specified application deployment",
+ "operationId": "v1AppDeploymentsUidProfileGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Application deployment profile spec",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Application deployment profile metadata",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "template": {
+ "description": "Application profile template specs",
+ "type": "object",
+ "properties": {
+ "appTiers": {
+ "description": "Application profile tiers",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application tier specs",
+ "type": "object",
+ "properties": {
+ "containerRegistryUid": {
+ "description": "Application tier container registry uid",
+ "type": "string"
+ },
+ "installOrder": {
+ "description": "Application tier installation order",
+ "type": "integer",
+ "format": "int32"
+ },
+ "manifests": {
+ "description": "Application tier attached manifest content in yaml format",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "properties": {
+ "description": "Application tier properties",
+ "type": "array",
+ "items": {
+ "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"
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Registry uid",
+ "type": "string"
+ },
+ "sourceAppTierUid": {
+ "description": "Application tier source pack uid",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "manifest",
+ "enum": [
+ "manifest",
+ "helm",
+ "operator-instance",
+ "container"
+ ]
+ },
+ "values": {
+ "description": "Application tier configuration values in yaml format",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "registryRefs": {
+ "description": "Application profile registries reference",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "host",
- "port"
- ],
- "type": "object"
- },
- "v1ApiKey": {
- "description": "API key information",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1ApiKeySpec"
- },
- "status": {
- "$ref": "#/definitions/v1ApiKeyStatus"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Updates the specified application deployment profile",
+ "operationId": "v1AppDeploymentsUidProfileUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application deployment profile request payload",
+ "type": "object",
+ "required": [
+ "appProfileUid"
+ ],
+ "properties": {
+ "appProfileUid": {
+ "description": "Application deployment profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1ApiKeyActiveState": {
- "properties": {
- "isActive": {
- "description": "API key active state",
- "type": "boolean"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application deployment uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ApiKeyCreateResponse": {
- "description": "Response of create API key",
- "properties": {
- "apiKey": {
- "description": "Api key is used for authentication",
- "type": "string"
- },
- "uid": {
- "description": "User uid",
- "type": "string"
+ "/v1/appDeployments/{uid}/profile/apply": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Apply the application deployment profile updates",
+ "operationId": "v1AppDeploymentsUidProfileApply",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1ApiKeyEntity": {
- "description": "API key request payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application deployment uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "spec": {
- "$ref": "#/definitions/v1ApiKeySpecEntity"
+ {
+ "type": "string",
+ "description": "Application deployment notification uid",
+ "name": "notify",
+ "in": "query"
}
- },
- "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"
+ "/v1/appDeployments/{uid}/profile/tiers/{tierUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Returns the specified application deployment profile tier information",
+ "operationId": "v1AppDeploymentsProfileTiersUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application tier specs",
+ "type": "object",
+ "properties": {
+ "containerRegistryUid": {
+ "description": "Application tier container registry uid",
+ "type": "string"
+ },
+ "installOrder": {
+ "description": "Application tier installation order",
+ "type": "integer",
+ "format": "int32"
+ },
+ "manifests": {
+ "description": "Application tier attached manifest content in yaml format",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "properties": {
+ "description": "Application tier properties",
+ "type": "array",
+ "items": {
+ "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"
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Registry uid",
+ "type": "string"
+ },
+ "sourceAppTierUid": {
+ "description": "Application tier source pack uid",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "manifest",
+ "enum": [
+ "manifest",
+ "helm",
+ "operator-instance",
+ "container"
+ ]
+ },
+ "values": {
+ "description": "Application tier configuration values in yaml format",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Updates the specified application deployment profile tier information",
+ "operationId": "v1AppDeploymentsProfileTiersUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application tier update request payload",
+ "type": "object",
+ "properties": {
+ "containerRegistryUid": {
+ "description": "Application tier container registry uid",
+ "type": "string"
+ },
+ "installOrder": {
+ "description": "Application tier installation order",
+ "type": "integer",
+ "format": "int32"
+ },
+ "manifests": {
+ "description": "Application tier manifests",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Application tier name",
+ "type": "string"
+ },
+ "properties": {
+ "description": "Application tier properties",
+ "type": "array",
+ "items": {
+ "description": "Application tier property object",
+ "properties": {
+ "name": {
+ "description": "Application tier property name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Application tier property value",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "values": {
+ "description": "Application tier configuration values in yaml format",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1ApiKeySpecUpdate": {
- "description": "API key update request specification",
- "properties": {
- "expiry": {
- "$ref": "#/definitions/v1Time",
- "description": "API key expiry date"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application deployment uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Application deployment tier uid",
+ "name": "tierUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ApiKeyStatus": {
- "description": "API key status",
- "properties": {
- "isActive": {
- "description": "API key active state",
- "type": "boolean"
+ "/v1/appDeployments/{uid}/profile/tiers/{tierUid}/manifests": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Retrieves a list of manifests of the specified application deployment profile tier",
+ "operationId": "v1AppDeploymentsProfileTiersUidManifestsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Application tier manifests data",
+ "properties": {
+ "manifests": {
+ "description": "Application tier manifests array",
+ "type": "array",
+ "items": {
+ "description": "Manifest object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Manifest spec",
+ "properties": {
+ "published": {
+ "description": "Published manifest object",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "digest": {
+ "description": "Manifest digest",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1ApiKeyUpdate": {
- "description": "API key update request payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application deployment uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "spec": {
- "$ref": "#/definitions/v1ApiKeySpecUpdate"
+ {
+ "type": "string",
+ "description": "Application deployment tier uid",
+ "name": "tierUid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/appDeployments/{uid}/profile/tiers/{tierUid}/manifests/{manifestUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Returns the specified application deployment tier manifest information",
+ "operationId": "v1AppDeploymentsProfileTiersManifestsUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Manifest object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Manifest spec",
+ "properties": {
+ "published": {
+ "description": "Published manifest object",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "digest": {
+ "description": "Manifest digest",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1ApiProfiler": {
- "properties": {
- "api": {
- "type": "string"
- },
- "endTime": {
- "format": "date-time",
- "type": "string"
- },
- "ops": {
- "items": {
- "type": "string"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Updates the specified application deployment tier manifest information",
+ "operationId": "v1AppDeploymentsProfileTiersManifestsUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1AppDeploymentClusterGroupEntity": {
- "description": "Application deployment cluster group request payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMetaInputEntity"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application deployment uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "spec": {
- "$ref": "#/definitions/v1AppDeploymentClusterGroupSpec"
- }
- },
- "type": "object"
- },
- "v1AppDeploymentClusterGroupSpec": {
- "description": "Application deployment cluster group spec",
- "properties": {
- "config": {
- "$ref": "#/definitions/v1AppDeploymentClusterGroupConfigEntity"
+ {
+ "type": "string",
+ "description": "Application deployment tier uid",
+ "name": "tierUid",
+ "in": "path",
+ "required": true
},
- "profile": {
- "$ref": "#/definitions/v1AppDeploymentProfileEntity"
+ {
+ "type": "string",
+ "description": "Application deployment tier manifest uid",
+ "name": "manifestUid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/appDeployments/{uid}/profile/versions": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appDeployments"
+ ],
+ "summary": "Retrieves a list of profile versions of the specified application deployment",
+ "operationId": "v1AppDeploymentsUidProfileVersionsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Application deployment profile versions",
+ "type": "object",
+ "properties": {
+ "availableVersions": {
+ "description": "Application deployment profile available versions",
+ "type": "array",
+ "items": {
+ "description": "Application deployment profile version",
+ "type": "object",
+ "properties": {
+ "uid": {
+ "description": "Application deployment profile uid",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application deployment profile version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "latestVersions": {
+ "description": "Application deployment profile latest versions",
+ "type": "array",
+ "items": {
+ "description": "Application deployment profile version",
+ "type": "object",
+ "properties": {
+ "uid": {
+ "description": "Application deployment profile uid",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application deployment profile version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "Application deployment profile metadata",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application deployment uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/appProfiles": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Creates a application profile",
+ "operationId": "v1AppProfilesCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application profile request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application profile spec",
+ "type": "object",
+ "properties": {
+ "template": {
+ "description": "Application profile template spec",
+ "type": "object",
+ "properties": {
+ "appTiers": {
+ "description": "Application profile tiers",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Application tier request payload",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "containerRegistryUid": {
+ "description": "Application tier container registry uid",
+ "type": "string"
+ },
+ "installOrder": {
+ "description": "Application tier installation order",
+ "type": "integer",
+ "format": "int32"
+ },
+ "manifests": {
+ "description": "Application tier manifests",
+ "type": "array",
+ "items": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Application tier name",
+ "type": "string"
+ },
+ "properties": {
+ "description": "Application tier properties",
+ "type": "array",
+ "items": {
+ "description": "Application tier property object",
+ "properties": {
+ "name": {
+ "description": "Application tier property name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Application tier property value",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Application tier registry uid",
+ "type": "string"
+ },
+ "sourceAppTierUid": {
+ "description": "Application tier source pack uid",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "manifest",
+ "enum": [
+ "manifest",
+ "helm",
+ "operator-instance",
+ "container"
+ ]
+ },
+ "values": {
+ "description": "Application tier configuration values in yaml format",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "version": {
+ "description": "Application profile version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
}
},
- "v1AppDeploymentClusterStatus": {
- "description": "Application deployment cluster status",
- "properties": {
- "health": {
- "$ref": "#/definitions/v1AppDeploymentClusterHealth"
- },
- "state": {
- "type": "string"
+ "/v1/appProfiles/macros": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Retrieves a list of application profile macros",
+ "operationId": "v1AppProfilesMacrosList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "properties": {
+ "macros": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
}
},
- "v1AppDeploymentConfig": {
- "description": "Application deployment config response",
- "properties": {
- "target": {
- "$ref": "#/definitions/v1AppDeploymentTargetConfig"
+ "/v1/appProfiles/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Returns the specified application profile",
+ "operationId": "v1AppProfilesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Application profile response",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "parentUid": {
+ "description": "Application profile parent profile uid",
+ "type": "string"
+ },
+ "template": {
+ "description": "Application profile template information",
+ "type": "object",
+ "properties": {
+ "appTiers": {
+ "description": "Application profile tiers",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Application tier reference",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Application tier name",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "manifest",
+ "enum": [
+ "manifest",
+ "helm",
+ "operator-instance",
+ "container"
+ ]
+ },
+ "uid": {
+ "description": "Application tier uid to uniquely identify the tier",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "registryRefs": {
+ "description": "Application profile registries reference",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "version": {
+ "description": "Application profile version",
+ "type": "string"
+ },
+ "versions": {
+ "description": "Application profile versions list",
+ "type": "array",
+ "items": {
+ "description": "Application profile version",
+ "type": "object",
+ "properties": {
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Application profile status",
+ "type": "object",
+ "properties": {
+ "inUseApps": {
+ "description": "Application profile apps array",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Updates the specified application profile",
+ "operationId": "v1AppProfilesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application profile request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application profile spec",
+ "type": "object",
+ "properties": {
+ "template": {
+ "description": "Application profile template spec",
+ "type": "object",
+ "properties": {
+ "appTiers": {
+ "description": "Application profile tiers",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Application tier request payload",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "containerRegistryUid": {
+ "description": "Application tier container registry uid",
+ "type": "string"
+ },
+ "installOrder": {
+ "description": "Application tier installation order",
+ "type": "integer",
+ "format": "int32"
+ },
+ "manifests": {
+ "description": "Application tier manifests",
+ "type": "array",
+ "items": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Application tier name",
+ "type": "string"
+ },
+ "properties": {
+ "description": "Application tier properties",
+ "type": "array",
+ "items": {
+ "description": "Application tier property object",
+ "properties": {
+ "name": {
+ "description": "Application tier property name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Application tier property value",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Application tier registry uid",
+ "type": "string"
+ },
+ "sourceAppTierUid": {
+ "description": "Application tier source pack uid",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "manifest",
+ "enum": [
+ "manifest",
+ "helm",
+ "operator-instance",
+ "container"
+ ]
+ },
+ "values": {
+ "description": "Application tier configuration values in yaml format",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "version": {
+ "description": "Application profile version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1AppDeploymentProfileEntity": {
- "description": "Application deployment profile request payload",
- "properties": {
- "appProfileUid": {
- "description": "Application deployment profile uid",
- "type": "string"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Deletes the specified application profile",
+ "operationId": "v1AppProfilesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "required": [
- "appProfileUid"
- ],
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/appProfiles/{uid}/clone": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Clones the specified application profile",
+ "operationId": "v1AppProfilesUidClone",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application profile clone request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Application profile clone metadata",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "description": "Application profile name",
+ "type": "string"
+ },
+ "target": {
+ "description": "Application profile clone target",
+ "type": "object",
+ "properties": {
+ "projectUid": {
+ "description": "Application profile clone target project uid",
+ "type": "string"
+ }
+ }
+ },
+ "version": {
+ "description": "Application profile version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1AppDeploymentProfileMetadataSummary": {
- "description": "Application deployment profile metadata summary",
- "properties": {
- "name": {
- "type": "string"
- },
- "uid": {
- "type": "string"
- },
- "version": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1AppDeploymentProfileSpec": {
- "description": "Application deployment profile spec",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1AppDeploymentProfileMeta"
- },
- "template": {
- "$ref": "#/definitions/v1AppProfileTemplateSpec"
+ "/v1/appProfiles/{uid}/clone/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Validates the specified application profile clone",
+ "operationId": "v1AppProfilesUidCloneValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application profile clone metadata",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "description": "Application profile name",
+ "type": "string"
+ },
+ "target": {
+ "description": "Application profile clone target",
+ "type": "object",
+ "properties": {
+ "projectUid": {
+ "description": "Application profile clone target project uid",
+ "type": "string"
+ }
+ }
+ },
+ "version": {
+ "description": "Application profile version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AppDeploymentProfileVersions": {
- "description": "Application deployment profile versions",
- "properties": {
- "availableVersions": {
- "description": "Application deployment profile available versions",
- "items": {
- "$ref": "#/definitions/v1AppDeploymentProfileVersion"
+ "/v1/appProfiles/{uid}/metadata": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "latestVersions": {
- "description": "Application deployment profile latest versions",
- "items": {
- "$ref": "#/definitions/v1AppDeploymentProfileVersion"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Updates the specified application profile metadata",
+ "operationId": "v1AppProfilesUidMetadataUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application profile metadata request payload",
+ "type": "object",
+ "required": [
+ "metadata"
+ ],
+ "properties": {
+ "metadata": {
+ "description": "Application profile metadata update request payload",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Application profile annotations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "description": "Application profile labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "version": {
+ "description": "Application profile version",
+ "type": "string"
+ }
+ }
+ }
},
- "type": "array"
- },
- "metadata": {
- "$ref": "#/definitions/v1AppDeploymentProfileMeta"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AppDeploymentStatus": {
- "description": "Application deployment status",
- "properties": {
- "appTiers": {
- "description": "Application deployment tiers",
- "items": {
- "$ref": "#/definitions/v1ClusterPackStatus"
+ "/v1/appProfiles/{uid}/tiers": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Retrieves a list of tiers of the specified application profile",
+ "operationId": "v1AppProfilesUidTiersGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Application profile tiers information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application profile tiers information",
+ "type": "object",
+ "properties": {
+ "appTiers": {
+ "description": "Application profile tiers",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application tier specs",
+ "type": "object",
+ "properties": {
+ "containerRegistryUid": {
+ "description": "Application tier container registry uid",
+ "type": "string"
+ },
+ "installOrder": {
+ "description": "Application tier installation order",
+ "type": "integer",
+ "format": "int32"
+ },
+ "manifests": {
+ "description": "Application tier attached manifest content in yaml format",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "properties": {
+ "description": "Application tier properties",
+ "type": "array",
+ "items": {
+ "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"
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Registry uid",
+ "type": "string"
+ },
+ "sourceAppTierUid": {
+ "description": "Application tier source pack uid",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "manifest",
+ "enum": [
+ "manifest",
+ "helm",
+ "operator-instance",
+ "container"
+ ]
+ },
+ "values": {
+ "description": "Application tier configuration values in yaml format",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "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"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Adds tier to the specified application profile",
+ "operationId": "v1AppProfilesUidTiersCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application tier request payload",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "containerRegistryUid": {
+ "description": "Application tier container registry uid",
+ "type": "string"
+ },
+ "installOrder": {
+ "description": "Application tier installation order",
+ "type": "integer",
+ "format": "int32"
+ },
+ "manifests": {
+ "description": "Application tier manifests",
+ "type": "array",
+ "items": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Application tier name",
+ "type": "string"
+ },
+ "properties": {
+ "description": "Application tier properties",
+ "type": "array",
+ "items": {
+ "description": "Application tier property object",
+ "properties": {
+ "name": {
+ "description": "Application tier property name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Application tier property value",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Application tier registry uid",
+ "type": "string"
+ },
+ "sourceAppTierUid": {
+ "description": "Application tier source pack uid",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "manifest",
+ "enum": [
+ "manifest",
+ "helm",
+ "operator-instance",
+ "container"
+ ]
+ },
+ "values": {
+ "description": "Application tier configuration values in yaml format",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "type": "string"
+ }
+ }
}
},
- "type": "object"
- },
- "status": {
- "$ref": "#/definitions/v1AppDeploymentStatusSummary"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "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"
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Updates app tier of the specified application profile",
+ "operationId": "v1AppProfilesUidTiersPatch",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application tier patch request payload",
+ "properties": {
+ "appTier": {
+ "description": "Application tier request payload",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "containerRegistryUid": {
+ "description": "Application tier container registry uid",
+ "type": "string"
+ },
+ "installOrder": {
+ "description": "Application tier installation order",
+ "type": "integer",
+ "format": "int32"
+ },
+ "manifests": {
+ "description": "Application tier manifests",
+ "type": "array",
+ "items": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Application tier name",
+ "type": "string"
+ },
+ "properties": {
+ "description": "Application tier properties",
+ "type": "array",
+ "items": {
+ "description": "Application tier property object",
+ "properties": {
+ "name": {
+ "description": "Application tier property name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Application tier property value",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Application tier registry uid",
+ "type": "string"
+ },
+ "sourceAppTierUid": {
+ "description": "Application tier source pack uid",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "manifest",
+ "enum": [
+ "manifest",
+ "helm",
+ "operator-instance",
+ "container"
+ ]
+ },
+ "values": {
+ "description": "Application tier configuration values in yaml format",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "type": "string"
+ }
+ }
+ },
+ "replaceWithAppTier": {
+ "description": "Application tier UID to be replaced with new tier",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AppDeploymentVirtualClusterConfigEntity": {
- "description": "Application deployment virtual cluster config",
- "properties": {
- "targetSpec": {
- "$ref": "#/definitions/v1AppDeploymentVirtualClusterTargetSpec"
+ "/v1/appProfiles/{uid}/tiers/{tierUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Returns the specified application profile tier information",
+ "operationId": "v1AppProfilesUidTiersUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application tier specs",
+ "type": "object",
+ "properties": {
+ "containerRegistryUid": {
+ "description": "Application tier container registry uid",
+ "type": "string"
+ },
+ "installOrder": {
+ "description": "Application tier installation order",
+ "type": "integer",
+ "format": "int32"
+ },
+ "manifests": {
+ "description": "Application tier attached manifest content in yaml format",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "properties": {
+ "description": "Application tier properties",
+ "type": "array",
+ "items": {
+ "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"
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Registry uid",
+ "type": "string"
+ },
+ "sourceAppTierUid": {
+ "description": "Application tier source pack uid",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "manifest",
+ "enum": [
+ "manifest",
+ "helm",
+ "operator-instance",
+ "container"
+ ]
+ },
+ "values": {
+ "description": "Application tier configuration values in yaml format",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Updates the specified application profile tier",
+ "operationId": "v1AppProfilesUidTiersUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application tier update request payload",
+ "type": "object",
+ "properties": {
+ "containerRegistryUid": {
+ "description": "Application tier container registry uid",
+ "type": "string"
+ },
+ "installOrder": {
+ "description": "Application tier installation order",
+ "type": "integer",
+ "format": "int32"
+ },
+ "manifests": {
+ "description": "Application tier manifests",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Application tier name",
+ "type": "string"
+ },
+ "properties": {
+ "description": "Application tier properties",
+ "type": "array",
+ "items": {
+ "description": "Application tier property object",
+ "properties": {
+ "name": {
+ "description": "Application tier property name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Application tier property value",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "values": {
+ "description": "Application tier configuration values in yaml format",
+ "type": "string"
+ },
+ "version": {
+ "description": "Application tier version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1AppDeploymentVirtualClusterTargetSpec": {
- "description": "Application deployment virtual cluster target spec",
- "properties": {
- "clusterUid": {
- "description": "Application deployment virtual cluster uid",
- "type": "string"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Deletes the specified application profile tier",
+ "operationId": "v1AppProfilesUidTiersUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "required": [
- "clusterUid"
- ],
- "type": "object"
- },
- "v1AppDeploymentsFilterSpec": {
- "description": "Application deployment filter summary spec",
- "properties": {
- "filter": {
- "$ref": "#/definitions/v1AppDeploymentFilterSpec"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "sort": {
- "items": {
- "$ref": "#/definitions/v1AppDeploymentSortSpec"
- },
- "type": "array",
- "uniqueItems": true
+ {
+ "type": "string",
+ "description": "Application profile tier uid",
+ "name": "tierUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1AppDeploymentsSummary": {
- "properties": {
- "appDeployments": {
- "items": {
- "$ref": "#/definitions/v1AppDeploymentSummary"
+ "/v1/appProfiles/{uid}/tiers/{tierUid}/manifests": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Retrieves a list of manifests of the specified application profile tier",
+ "operationId": "v1AppProfilesUidTiersUidManifestsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Application tier manifests data",
+ "properties": {
+ "manifests": {
+ "description": "Application tier manifests array",
+ "type": "array",
+ "items": {
+ "description": "Manifest object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Manifest spec",
+ "properties": {
+ "published": {
+ "description": "Published manifest object",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "digest": {
+ "description": "Manifest digest",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
- }
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "object"
- },
- "status": {
- "description": "Application profile status",
- "properties": {
- "inUseApps": {
- "description": "Application profile apps array",
- "items": {
- "$ref": "#/definitions/v1ObjectResReference"
- },
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Adds manifest to the specified application profile tier",
+ "operationId": "v1AppProfilesUidTiersUidManifestsCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ }
+ }
}
},
- "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"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
},
- "version": {
- "description": "Application profile version",
- "type": "string"
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
}
- },
- "type": "object"
+ }
}
},
- "type": "object"
- },
- "v1AppProfileFilterSpec": {
- "description": "Application profile filter spec",
- "properties": {
- "profileName": {
- "$ref": "#/definitions/v1FilterString"
- },
- "tags": {
- "$ref": "#/definitions/v1FilterArray"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "version": {
- "$ref": "#/definitions/v1FilterVersionString"
+ {
+ "type": "string",
+ "description": "Application profile tier uid",
+ "name": "tierUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1AppProfileMetaEntity": {
- "description": "Application profile metadata request payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1AppProfileMetaUpdateEntity"
- },
- "version": {
- "description": "Application profile version",
- "type": "string"
+ "/v1/appProfiles/{uid}/tiers/{tierUid}/manifests/{manifestUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Returns the specified application profile tier manifest information",
+ "operationId": "v1AppProfilesUidTiersUidManifestsUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Manifest object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Manifest spec",
+ "properties": {
+ "published": {
+ "description": "Published manifest object",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "digest": {
+ "description": "Manifest digest",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "metadata"
- ],
- "type": "object"
- },
- "v1AppProfileMetaUpdateEntity": {
- "description": "Application profile metadata update request payload",
- "properties": {
- "annotations": {
- "additionalProperties": {
- "type": "string"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "description": "Application profile annotations",
- "type": "object"
- },
- "labels": {
- "additionalProperties": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Updates the specified application profile tier manifest information",
+ "operationId": "v1AppProfilesUidTiersUidManifestsUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
},
- "description": "Application profile labels",
- "type": "object"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1AppProfileMetadata": {
- "description": "Application profile metadata summary",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectEntity"
- },
- "spec": {
- "properties": {
- "version": {
- "type": "string"
- }
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Deletes the specified application profile tier manifest",
+ "operationId": "v1AppProfilesUidTiersUidManifestsUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
}
}
},
- "type": "object"
- },
- "v1AppProfileSortFields": {
- "enum": [
- "profileName",
- "creationTimestamp",
- "lastModifiedTimestamp"
- ],
- "type": "string",
- "x-nullable": true
- },
- "v1AppProfileSortSpec": {
- "properties": {
- "field": {
- "$ref": "#/definitions/v1AppProfileSortFields"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "order": {
- "$ref": "#/definitions/v1SortOrder"
+ {
+ "type": "string",
+ "description": "Application profile tier uid",
+ "name": "tierUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Application profile tier manifest uid",
+ "name": "manifestUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
- }
+ "/v1/appProfiles/{uid}/tiers/{tierUid}/resolvedValues": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "object"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "appProfiles"
+ ],
+ "summary": "Returns the specified application profile tier resolved values",
+ "operationId": "v1AppProfilesUidTiersUidResolvedValuesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Application tier resolved macro values",
+ "properties": {
+ "resolved": {
+ "description": "Application tier resolved macro values map",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1AppProfileTemplate": {
- "description": "Application profile template information",
- "properties": {
- "appTiers": {
- "description": "Application profile tiers",
- "items": {
- "$ref": "#/definitions/v1AppTierRef"
- },
- "type": "array",
- "uniqueItems": true
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Application profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "registryRefs": {
- "description": "Application profile registries reference",
- "items": {
- "$ref": "#/definitions/v1ObjectReference"
- },
- "type": "array"
+ {
+ "type": "string",
+ "description": "Application profile tier uid",
+ "name": "tierUid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AppProfileTemplateEntity": {
- "description": "Application profile template spec",
- "properties": {
- "appTiers": {
- "description": "Application profile tiers",
- "items": {
- "$ref": "#/definitions/v1AppTierEntity"
+ "/v1/audits": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- }
- },
- "type": "object"
- },
- "v1AppProfileTemplateSpec": {
- "description": "Application profile template specs",
- "properties": {
- "appTiers": {
- "description": "Application profile tiers",
- "items": {
- "$ref": "#/definitions/v1AppTier"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "audits"
+ ],
+ "summary": "Retrieves the list of audit logs",
+ "operationId": "v1AuditsList",
+ "parameters": [
+ {
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "name": "startTime",
+ "in": "query"
},
- "type": "array",
- "uniqueItems": true
- },
- "registryRefs": {
- "description": "Application profile registries reference",
- "items": {
- "$ref": "#/definitions/v1ObjectReference"
+ {
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "name": "endTime",
+ "in": "query"
},
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1AppProfileTemplateSummary": {
- "description": "Application profile template summary",
- "properties": {
- "appTiers": {
- "items": {
- "$ref": "#/definitions/v1AppTierSummary"
+ {
+ "type": "string",
+ "description": "Specify the user uid, to retrieve the specific user audit logs",
+ "name": "userUid",
+ "in": "query"
},
- "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": "string",
+ "description": "Specify the project uid, to retrieve the specific project audit logs",
+ "name": "projectUid",
+ "in": "query"
},
- "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": "string",
+ "description": "Specify the tenant uid, to retrieve the specific tenant audit logs",
+ "name": "tenantUid",
+ "in": "query"
},
- "type": "array",
- "uniqueItems": true
+ {
+ "type": "string",
+ "description": "Specify the resource name, to retrieve the specific resource audit logs",
+ "name": "resourceKind",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the resource uid, to retrieve the specific resource audit logs",
+ "name": "resourceUid",
+ "in": "query"
+ },
+ {
+ "enum": [
+ "create",
+ "update",
+ "delete",
+ "publish",
+ "deploy"
+ ],
+ "type": "string",
+ "name": "actionType",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "List of audit message",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Audit response payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Audit specifications",
+ "properties": {
+ "actionMsg": {
+ "description": "Audit action message",
+ "type": "string"
+ },
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "create",
+ "update",
+ "delete",
+ "publish",
+ "deploy"
+ ]
+ },
+ "actor": {
+ "description": "Audit actor object",
+ "properties": {
+ "actorType": {
+ "type": "string",
+ "enum": [
+ "user",
+ "system",
+ "service"
+ ]
+ },
+ "project": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "serviceName": {
+ "type": "string"
+ },
+ "user": {
+ "type": "object",
+ "properties": {
+ "emailId": {
+ "type": "string"
+ },
+ "firstName": {
+ "type": "string"
+ },
+ "lastName": {
+ "type": "string"
+ },
+ "org": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "contentMsg": {
+ "description": "Audit content message",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Audit resource reference object",
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "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"
+ }
+ }
+ },
+ "userMsg": {
+ "description": "Audit user message",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
}
}
},
- "v1AppProfilesMetadata": {
- "properties": {
- "appProfiles": {
- "items": {
- "$ref": "#/definitions/v1AppProfileMetadata"
+ "/v1/audits/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "audits"
+ ],
+ "summary": "Returns the specified audit log",
+ "operationId": "v1AuditsUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Audit response payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Audit specifications",
+ "properties": {
+ "actionMsg": {
+ "description": "Audit action message",
+ "type": "string"
+ },
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "create",
+ "update",
+ "delete",
+ "publish",
+ "deploy"
+ ]
+ },
+ "actor": {
+ "description": "Audit actor object",
+ "properties": {
+ "actorType": {
+ "type": "string",
+ "enum": [
+ "user",
+ "system",
+ "service"
+ ]
+ },
+ "project": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "serviceName": {
+ "type": "string"
+ },
+ "user": {
+ "type": "object",
+ "properties": {
+ "emailId": {
+ "type": "string"
+ },
+ "firstName": {
+ "type": "string"
+ },
+ "lastName": {
+ "type": "string"
+ },
+ "org": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "contentMsg": {
+ "description": "Audit content message",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Audit resource reference object",
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "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"
+ }
+ }
+ },
+ "userMsg": {
+ "description": "Audit user message",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Specify the audit uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1AppProfilesSummary": {
- "properties": {
- "appProfiles": {
- "items": {
- "$ref": "#/definitions/v1AppProfileSummary"
+ "/v1/audits/{uid}/sysMsg": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "audits"
+ ],
+ "summary": "Returns the specified system audit message",
+ "operationId": "v1AuditsUidGetSysMsg",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Audit system message",
+ "type": "object",
+ "properties": {
+ "actionMsg": {
+ "description": "Audit resource action message",
+ "type": "string"
+ },
+ "contentMsg": {
+ "description": "Audit resource content message",
+ "type": "string"
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1AppTier": {
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1AppTierSpec"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Specify the audit uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
+ "/v1/audits/{uid}/userMsg": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "name": {
- "description": "Application tier name",
- "type": "string"
- },
- "properties": {
- "description": "Application tier properties",
- "items": {
- "$ref": "#/definitions/v1AppTierPropertyEntity"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "audits"
+ ],
+ "summary": "Updates the specified user message for the specified audit",
+ "operationId": "v1AuditsUidMsgUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Audit user message update request payload",
+ "type": "object",
+ "properties": {
+ "userMsg": {
+ "description": "User message",
+ "type": "string",
+ "maxLength": 255,
+ "minLength": 3
+ }
+ }
+ }
},
- "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"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "name"
- ],
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Specify the audit uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1AppTierManifests": {
- "description": "Application tier manifests data",
- "properties": {
- "manifests": {
- "description": "Application tier manifests array",
- "items": {
- "$ref": "#/definitions/v1Manifest"
+ "/v1/auth/authenticate": {
+ "post": {
+ "description": "Creates a authentication request with the specified credentials",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Authenticates the user for the specified crendentials",
+ "operationId": "v1Authenticate",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": true,
+ "description": "Describes a way to set cookie from backend.",
+ "name": "setCookie",
+ "in": "query"
},
- "type": "array"
+ {
+ "description": "Describes the credential details required for authentication",
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Describes the credential details required for authentication",
+ "type": "object",
+ "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",
+ "type": "string",
+ "format": "password"
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Returns the Authorization token. To be used for further api calls",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
}
}
},
- "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"
+ "/v1/auth/org": {
+ "get": {
+ "description": "Returns the allowed login method and information with the organization details",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Returns the user organization details",
+ "operationId": "v1AuthOrg",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "orgName",
+ "in": "query"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Returns the allowed login method and information with the organization details",
+ "type": "object",
+ "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]",
+ "type": "string",
+ "enum": [
+ "password",
+ "sso"
+ ]
+ },
+ "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": {
+ "description": "Describes the allowed sso logins",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Describes the allowed sso login details",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "totalTenants": {
+ "description": "Describes the total number of tenant present in the system",
+ "type": "number",
+ "format": "int64"
+ }
+ }
+ }
+ }
}
}
},
- "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"
+ "/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",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Creates a request to switch organization",
+ "operationId": "V1AuthOrgSwitch",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": true,
+ "description": "Describes a way to set cookie from backend for switched organization",
+ "name": "setCookie",
+ "in": "query"
},
- "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"
+ {
+ "type": "string",
+ "description": "Organization name for which switch request has to be created",
+ "name": "orgName",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Returns the Authorization token. To be used for further api calls",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
}
}
},
- "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"
+ "/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.",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Idp authorization code callback",
+ "operationId": "V1OidcCallback",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Returns the Authorization token. To be used for further api calls",
+ "type": "object",
+ "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"
- },
- "v1AppTierSummary": {
- "description": "Application profile's tier summary",
- "properties": {
- "name": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Organization name",
+ "name": "org",
+ "in": "path",
+ "required": true
},
- "source": {
- "$ref": "#/definitions/v1AppTierSourceSummary"
+ {
+ "type": "string",
+ "description": "Describes temporary and very short lived code sent by IDP to validate the token",
+ "name": "code",
+ "in": "query"
},
- "type": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Describes a state to validate and associate request and response",
+ "name": "state",
+ "in": "query"
},
- "uid": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Describes a error code in case the IDP is not able to validate and authenticates the user",
+ "name": "error",
+ "in": "query"
},
- "version": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Describes a error in case the IDP is not able to validate and authenticates the user",
+ "name": "error_description",
+ "in": "query"
}
- }
- },
- "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"
+ "/v1/auth/org/{org}/oidc/logout": {
+ "get": {
+ "description": "Returns No Content. Works as a callback url after the IDP logout from their server.",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Identity provider logout url for the Oidc",
+ "operationId": "V1OidcLogout",
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1AppVersion": {
- "description": "spectro application management app version information",
- "properties": {
- "intermediateVersions": {
- "items": {
- "$ref": "#/definitions/v1ReleaseVersion"
- },
- "type": "array",
- "uniqueItems": true
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Organization name",
+ "name": "org",
+ "in": "path",
+ "required": true
},
- "latestVerson": {
- "$ref": "#/definitions/v1ReleaseVersion"
+ {
+ "type": "string",
+ "description": "Describes a state to validate and associate request and response",
+ "name": "state",
+ "in": "query"
}
- }
- },
- "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"
+ "/v1/auth/org/{org}/saml/callback": {
+ "post": {
+ "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.",
+ "consumes": [
+ "application/x-www-form-urlencoded"
+ ],
+ "tags": [
+ "auth"
+ ],
+ "summary": "Identity provider callback url for the SMAL authentication",
+ "operationId": "V1SamlCallback",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Describe the SAML compliant response sent by IDP which will be validated by Palette",
+ "name": "SAMLResponse",
+ "in": "formData"
+ },
+ {
+ "type": "string",
+ "description": "Describes a state to validate and associate request and response",
+ "name": "RelayState",
+ "in": "formData"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Returns the Authorization token. To be used for further api calls",
+ "type": "object",
+ "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"
- },
- "v1AsyncResult": {
- "properties": {
- "data": {
- "type": "object"
- },
- "error": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Organization name",
+ "name": "org",
+ "in": "path",
+ "required": true
},
- "isSuccess": {
- "type": "boolean"
+ {
+ "type": "string",
+ "description": "Deprecated.",
+ "name": "authToken",
+ "in": "query"
}
- },
- "type": "object"
+ ]
},
- "v1AsyncStatus": {
- "properties": {
- "endTime": {
- "$ref": "#/definitions/v1Time"
- },
- "result": {
- "$ref": "#/definitions/v1AsyncResult",
- "type": "object"
- },
- "stage": {
- "type": "string"
- },
- "startTime": {
- "$ref": "#/definitions/v1Time"
+ "/v1/auth/org/{org}/saml/logout": {
+ "post": {
+ "description": "Returns No Content. Works as a callback url after the IDP logout from their server.",
+ "consumes": [
+ "application/x-www-form-urlencoded"
+ ],
+ "tags": [
+ "auth"
+ ],
+ "summary": "Identity provider logout url for the SMAL",
+ "operationId": "V1SamlLogout",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Describe the SAML compliant response sent by IDP which will be validated by Palette to perform logout.",
+ "name": "SAMLResponse",
+ "in": "formData"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1Audit": {
- "description": "Audit response payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Organization name",
+ "name": "org",
+ "in": "path",
+ "required": true
},
- "spec": {
- "$ref": "#/definitions/v1AuditSpec"
+ {
+ "type": "string",
+ "description": "Deprecated.",
+ "name": "authToken",
+ "in": "query"
}
- },
- "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"
+ "/v1/auth/orgs": {
+ "get": {
+ "description": "Returns a list of user's organizations details and login methods",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Returns a list of user's organizations",
+ "operationId": "V1AuthOrgs",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Returns a list of user's organizations details and login methods",
+ "type": "object",
+ "properties": {
+ "organizations": {
+ "description": "Describes a list of user's organization",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Describes user's organization details",
+ "type": "object",
+ "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": {
+ "description": "Describes the allowed sso logins",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Describes the allowed sso login details",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
}
},
- "v1AuditMsgUpdate": {
- "description": "Audit user message update request payload",
- "properties": {
- "userMsg": {
- "description": "User message",
- "maxLength": 255,
- "minLength": 3,
- "type": "string"
+ "/v1/auth/password/{passwordToken}/activate": {
+ "patch": {
+ "description": "Updates and Activates user password with the help of password token",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Updates and Activates the specified user password using the password token",
+ "operationId": "v1PasswordActivate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "required": [
+ "password"
+ ],
+ "properties": {
+ "password": {
+ "description": "Describes the new password for the user",
+ "type": "string",
+ "format": "password"
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Describes the expirable password token for the user to be used for authentication of user",
+ "name": "passwordToken",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/auth/password/{passwordToken}/reset": {
+ "patch": {
+ "description": "Updates the new user password with the help of password token",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Resets the user password using the password token",
+ "operationId": "v1PasswordReset",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "required": [
+ "password"
+ ],
+ "properties": {
+ "password": {
+ "description": "Describes the new password for the user",
+ "type": "string",
+ "format": "password"
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Describes the expirable password token for the user to be used for authentication of user",
+ "name": "passwordToken",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1Audits": {
- "properties": {
- "items": {
- "description": "List of audit message",
- "items": {
- "$ref": "#/definitions/v1Audit"
- },
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
+ "/v1/auth/refresh/{token}": {
+ "get": {
+ "description": "Returns a new token within refresh timeout and same session id is maintained",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Refreshes authentication token",
+ "operationId": "v1AuthRefresh",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Returns the Authorization token. To be used for further api calls",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1AuthAllyTokenRequest": {
- "properties": {
- "edgeAuthToken": {
- "type": "string"
- },
- "edgeHostUid": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": true,
+ "description": "Describes a way to set cookie from backend.",
+ "name": "setCookie",
+ "in": "query"
},
- "spectroClusterUid": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Non expired Authorization token",
+ "name": "token",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AuthCertsGet": {
- "description": "Auth certs get",
- "properties": {
- "caCert": {
- "type": "string",
- "x-omitempty": false
- },
- "insecureSkipVerify": {
- "type": "boolean",
- "x-omitempty": false
+ "/v1/auth/sso/idps": {
+ "get": {
+ "description": "Returns a list of predefined Identity Provider (IDP)",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Returns a list of predefined Identity Provider (IDP)",
+ "operationId": "V1SsoIdps",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Describes a list of predefined Identity Provider (IDP)",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Describes a predefined Identity Provider (IDP)",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
}
}
},
- "v1AuthEdgeJetKeyRequest": {
- "properties": {
- "edgeAuthToken": {
- "type": "string"
- },
- "edgeHostUid": {
- "type": "string"
- },
- "spectroClusterUid": {
- "type": "string"
+ "/v1/auth/sso/logins": {
+ "get": {
+ "description": "Returns a list of supported sso logins and their authentication mechanism",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Returns a list of supported sso logins",
+ "operationId": "V1SsoLogins",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "org",
+ "in": "query"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Describes the allowed sso logins",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Describes the allowed sso login details",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
}
- },
- "required": [
- "edgeAuthToken",
- "edgeHostUid"
- ],
- "type": "object"
+ }
},
- "v1AuthJetKeyRequest": {
- "properties": {
- "allyAuthToken": {
- "type": "string"
- },
- "hostClusterUid": {
- "type": "string"
+ "/v1/auth/sso/providers": {
+ "get": {
+ "description": "Returns a list of supported sso auth providers",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Returns a list of supported sso auth providers",
+ "operationId": "V1AuthSsoProviders",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Describes the allowed sso logins",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Describes the allowed sso login details",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
}
- },
- "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"
+ "/v1/auth/sso/{ssoApp}/callback": {
+ "get": {
+ "description": "Returns Authorization token. Works as a callback url for the system defined sso apps",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Returns Authorization token. Works as a callback url for the system defined sso apps",
+ "operationId": "V1SsoCallback",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Returns the Authorization token. To be used for further api calls",
+ "type": "object",
+ "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"
- },
- "v1AuthLoginEntity": {
- "description": "Auth login entity",
- "properties": {
- "authType": {
- "enum": [
- "password",
- "sso"
- ],
- "type": "string"
- },
- "orgName": {
- "type": "string"
- },
- "redirectUrl": {
+ "parameters": [
+ {
"type": "string",
- "x-omitempty": false
- }
- },
- "type": "object"
- },
- "v1AuthLogins": {
- "description": "Deprecated. Applicable auth logins with multiple orgs",
- "properties": {
- "appEnv": {
- "type": "string"
+ "description": "Describes the sso app use to login into the system",
+ "name": "ssoApp",
+ "in": "path",
+ "required": true
},
- "authType": {
- "description": "Deprecated.",
- "enum": [
- "password",
- "sso"
- ],
- "type": "string"
+ {
+ "type": "string",
+ "description": "Describes temporary and very short lived code sent by IDP to validate the token",
+ "name": "code",
+ "in": "query"
},
- "orgName": {
- "description": "Deprecated.",
- "type": "string"
+ {
+ "type": "string",
+ "description": "Describes a state to validate and associate request and response",
+ "name": "state",
+ "in": "query"
},
- "orgs": {
- "items": {
- "$ref": "#/definitions/v1AuthLoginEntity"
- },
- "type": "array"
+ {
+ "type": "string",
+ "description": "Describes a error code in case the IDP is not able to validate and authenticates the user",
+ "name": "error",
+ "in": "query"
},
- "redirectUrl": {
- "description": "Deprecated.",
+ {
"type": "string",
- "x-omitempty": false
+ "description": "Describes a error in case the IDP is not able to validate and authenticates the user",
+ "name": "error_description",
+ "in": "query"
}
- },
- "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"
+ "/v1/auth/user/org/forgot": {
+ "get": {
+ "description": "Returns No Content. Sends the user organization(s) information via email",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Returns No Content. Sends the user organization information via email",
+ "operationId": "V1AuthUserOrgForgot",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Describes user's email id for sending organzation(s) details via email.",
+ "name": "emailId",
+ "in": "query",
+ "required": true
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
}
- },
- "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
+ "/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.",
+ "tags": [
+ "auth"
+ ],
+ "summary": "Creates request to reset password via email",
+ "operationId": "v1PasswordResetRequest",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "required": [
+ "emailId"
+ ],
+ "properties": {
+ "emailId": {
+ "description": "Describes email if for which password reset email has to be sent",
+ "type": "string"
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
}
},
- "v1AwsAMI": {
- "properties": {
- "id": {
- "type": "string"
- },
- "os": {
- "type": "string"
- },
- "region": {
- "type": "string"
- },
- "state": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "v1AwsAccount": {
- "description": "Aws cloud account information",
- "properties": {
- "kind": {
- "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"
+ "/v1/cloudaccounts/aws": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Retrieves a list of AWS cloud accounts",
+ "operationId": "v1CloudAccountsAwsList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cloud account items",
+ "schema": {
+ "description": "List of AWS accounts",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Aws cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "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"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Creates an AWS cloud account",
+ "operationId": "v1CloudAccountsAwsCreate",
+ "parameters": [
+ {
+ "description": "Request payload to validate AWS cloud account",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Aws cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1AwsAvailabilityZones": {
- "properties": {
- "zones": {
- "description": "List of AWS Zones",
- "items": {
- "$ref": "#/definitions/v1AwsAvailabilityZone"
+ "/v1/cloudaccounts/aws/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Returns the specified AWS account",
+ "operationId": "v1CloudAccountsAwsGet",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": false,
+ "name": "assumeCredentials",
+ "in": "query"
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Aws cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Updates the specified AWS account",
+ "operationId": "v1CloudAccountsAwsUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Aws cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Deletes the specified AWS account",
+ "operationId": "v1CloudAccountsAwsDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object"
- },
- "v1AwsCloudConfig": {
- "description": "AwsCloudConfig is the Schema for the awscloudconfigs API",
- "properties": {
- "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/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1AwsCloudConfigSpec"
- },
- "status": {
- "$ref": "#/definitions/v1AwsCloudConfigStatus"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "AWS cloud account uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/cloudaccounts/azure": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Retrieves a list of azure cloud accounts",
+ "operationId": "v1CloudAccountsAzureList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
},
- "type": "array"
- },
- "images": {
- "description": "Images array items should be 1-to-1 mapping to Spec.MachinePoolConfig",
- "items": {
- "$ref": "#/definitions/v1AwsAMI"
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
},
- "type": "array"
- },
- "isAddonLayer": {
- "description": "addon layers present in spc",
- "type": "boolean"
- },
- "roleDigest": {
- "additionalProperties": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
},
- "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": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of azure cloud account items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Azure account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "tenantId",
+ "clientId",
+ "clientSecret"
+ ],
+ "properties": {
+ "azureEnvironment": {
+ "description": "Contains configuration for Azure cloud",
+ "type": "string",
+ "default": "AzurePublicCloud",
+ "enum": [
+ "AzureChinaCloud",
+ "AzurePublicCloud",
+ "AzureUSGovernment",
+ "AzureUSGovernmentCloud"
+ ]
+ },
+ "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": {
+ "description": "Cloud account settings",
+ "type": "object",
+ "properties": {
+ "disablePropertiesRequest": {
+ "description": "Will disable certain properties request to cloud and the input is collected directly from the user",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "v1AwsCloudCostSummaryCloudCost": {
- "description": "AWS cloud account usage cost summary of monthlyCosts and totalCost",
- "properties": {
- "monthlyCosts": {
- "description": "Monthly cost of AWS cost",
- "items": {
- "$ref": "#/definitions/v1AwsCloudCostSummaryMonthlyCost"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "total": {
- "description": "Total cost of AWS cost",
- "format": "float64",
- "type": "number",
- "x-omitempty": false
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Create azure cloud account",
+ "operationId": "v1CloudAccountsAzureCreate",
+ "parameters": [
+ {
+ "description": "Request payload to validate Azure cloud account",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "tenantId",
+ "clientId",
+ "clientSecret"
+ ],
+ "properties": {
+ "azureEnvironment": {
+ "description": "Contains configuration for Azure cloud",
+ "type": "string",
+ "default": "AzurePublicCloud",
+ "enum": [
+ "AzureChinaCloud",
+ "AzurePublicCloud",
+ "AzureUSGovernment",
+ "AzureUSGovernmentCloud"
+ ]
+ },
+ "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": {
+ "description": "Cloud account settings",
+ "type": "object",
+ "properties": {
+ "disablePropertiesRequest": {
+ "description": "Will disable certain properties request to cloud and the input is collected directly from the user",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "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"
+ "/v1/cloudaccounts/azure/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Returns the specified azure cloud account",
+ "operationId": "v1CloudAccountsAzureGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Azure account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "tenantId",
+ "clientId",
+ "clientSecret"
+ ],
+ "properties": {
+ "azureEnvironment": {
+ "description": "Contains configuration for Azure cloud",
+ "type": "string",
+ "default": "AzurePublicCloud",
+ "enum": [
+ "AzureChinaCloud",
+ "AzurePublicCloud",
+ "AzureUSGovernment",
+ "AzureUSGovernmentCloud"
+ ]
+ },
+ "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": {
+ "description": "Cloud account settings",
+ "type": "object",
+ "properties": {
+ "disablePropertiesRequest": {
+ "description": "Will disable certain properties request to cloud and the input is collected directly from the user",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Updates the specified azure account",
+ "operationId": "v1CloudAccountsAzureUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "tenantId",
+ "clientId",
+ "clientSecret"
+ ],
+ "properties": {
+ "azureEnvironment": {
+ "description": "Contains configuration for Azure cloud",
+ "type": "string",
+ "default": "AzurePublicCloud",
+ "enum": [
+ "AzureChinaCloud",
+ "AzurePublicCloud",
+ "AzureUSGovernment",
+ "AzureUSGovernmentCloud"
+ ]
+ },
+ "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": {
+ "description": "Cloud account settings",
+ "type": "object",
+ "properties": {
+ "disablePropertiesRequest": {
+ "description": "Will disable certain properties request to cloud and the input is collected directly from the user",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "region"
- ],
- "type": "object"
- },
- "v1AwsCreditAccount": {
- "properties": {
- "creditLimitInDollars": {
- "format": "float64",
- "type": "number"
- },
- "loginCredentials": {
- "$ref": "#/definitions/v1AwsLoginCredentials"
- },
- "userCloudAccount": {
- "$ref": "#/definitions/v1AwsUserCloudAccount"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Deletes the specified azure account",
+ "operationId": "v1CloudAccountsAzureDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Azure cloud account uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AwsFindImageRequest": {
- "description": "AWS image name and credentials",
- "properties": {
- "amiName": {
- "description": "AWS image ami name",
- "type": "string"
- },
- "awsAccount": {
- "$ref": "#/definitions/v1AwsCloudAccount"
+ "/v1/cloudaccounts/cloudTypes/{cloudType}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Retrieves a list of cloud accounts by cloud type",
+ "operationId": "v1CloudAccountsCustomList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cloud account by specified cloud type items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Custom account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "credentials"
+ ],
+ "properties": {
+ "credentials": {
+ "description": "Cloud account credentials",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "v1AwsIamPolicy": {
- "description": "Aws policy",
- "properties": {
- "arn": {
- "type": "string"
- },
- "policyId": {
- "type": "string"
- },
- "policyName": {
- "type": "string"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Creates an cloud account of specific cloud type",
+ "operationId": "v1CloudAccountsCustomCreate",
+ "parameters": [
+ {
+ "description": "Request payload to validate Custom cloud account",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Custom account information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "credentials"
+ ],
+ "properties": {
+ "credentials": {
+ "description": "Cloud account credentials",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Custom cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AwsInstanceTypes": {
- "description": "List of AWS instance types",
- "properties": {
- "instanceTypes": {
- "items": {
- "$ref": "#/definitions/v1InstanceType"
+ "/v1/cloudaccounts/cloudTypes/{cloudType}/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Returns the specified account by cloud type",
+ "operationId": "v1CloudAccountsCustomGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Custom account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "credentials"
+ ],
+ "properties": {
+ "credentials": {
+ "description": "Cloud account credentials",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1AwsKeyPairs": {
- "description": "List of AWS keypairs",
- "properties": {
- "keyNames": {
- "description": "Array of Aws Keypair names",
- "items": {
- "type": "string"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Updates the specified account by cloud type",
+ "operationId": "v1CloudAccountsCustomUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Custom account information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "credentials"
+ ],
+ "properties": {
+ "credentials": {
+ "description": "Cloud account credentials",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Deletes the specified account by cloud type",
+ "operationId": "v1CloudAccountsCustomDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Custom cloud account uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "keyId": {
- "description": "The globally unique identifier for the KMS key",
- "type": "string"
+ {
+ "type": "string",
+ "description": "Custom cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AwsKmsKeys": {
- "description": "List of AWS Keys",
- "properties": {
- "kmsKeys": {
- "items": {
- "$ref": "#/definitions/v1AwsKmsKey"
+ "/v1/cloudaccounts/coxedge": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Retrieves a list of CoxEdge cloud accounts",
+ "operationId": "v1CloudAccountsCoxEdgeList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
},
- "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": "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cloud account items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "CoxEdge cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "CoxEdge cloud account",
+ "type": "object",
+ "required": [
+ "apiBaseUrl",
+ "apiKey"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "v1AwsLoginCredentials": {
- "properties": {
- "iamUser": {
- "type": "string"
- },
- "password": {
- "format": "password",
- "type": "string"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Creates an CoxEdge cloud account",
+ "operationId": "v1CloudAccountsCoxEdgeCreate",
+ "parameters": [
+ {
+ "description": "Request payload to validate CoxEdge cloud account",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "CoxEdge cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "CoxEdge cloud account",
+ "type": "object",
+ "required": [
+ "apiBaseUrl",
+ "apiKey"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1AwsMachine": {
- "description": "AWS cloud VM definition",
- "properties": {
- "kind": {
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1AwsMachineSpec"
- },
- "status": {
- "$ref": "#/definitions/v1CloudMachineStatus"
+ "/v1/cloudaccounts/coxedge/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Returns the specified CoxEdge account",
+ "operationId": "v1CloudAccountsCoxEdgeGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "CoxEdge cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "CoxEdge cloud account",
+ "type": "object",
+ "required": [
+ "apiBaseUrl",
+ "apiKey"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1AwsMachinePoolCloudConfigEntity": {
- "properties": {
- "additionalSecurityGroups": {
- "description": "Additional Security groups",
- "items": {
- "$ref": "#/definitions/v1AwsResourceReference"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "azs": {
- "items": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Updates the specified CoxEdge account",
+ "operationId": "v1CloudAccountsCoxEdgeUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "CoxEdge cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "CoxEdge cloud account",
+ "type": "object",
+ "required": [
+ "apiBaseUrl",
+ "apiKey"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Deletes the specified CoxEdge account",
+ "operationId": "v1CloudAccountsCoxEdgeDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "required": [
- "instanceType"
- ],
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "CoxEdge cloud account uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1AwsMachinePoolConfig": {
- "properties": {
- "additionalLabels": {
- "additionalProperties": {
- "type": "string"
+ "/v1/cloudaccounts/gcp": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "description": "additionalLabels",
- "type": "object"
- },
- "additionalSecurityGroups": {
- "description": "Additional Security groups",
- "items": {
- "$ref": "#/definitions/v1AwsResourceReference"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Retrieves a list of gcp cloud accounts",
+ "operationId": "v1CloudAccountsGcpList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
},
- "type": "array"
- },
- "additionalTags": {
- "additionalProperties": {
- "type": "string"
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
},
- "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": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
},
- "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": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
},
- "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"
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
},
- "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": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
},
- "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"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of gcp cloud account items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "GCP account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "jsonCredentials": {
+ "description": "Gcp cloud account json credentials",
+ "type": "string"
+ },
+ "jsonCredentialsFileName": {
+ "description": "Reference of the credentials stored in the file",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "cloudConfig"
- ],
- "type": "object"
- },
- "v1AwsMachineSpec": {
- "description": "AWS cloud VM definition spec",
- "properties": {
- "additionalSecurityGroups": {
- "description": "Additional Security groups",
- "items": {
- "$ref": "#/definitions/v1AwsResourceReference"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "ami": {
- "type": "string"
- },
- "az": {
- "type": "string"
- },
- "dnsName": {
- "type": "string"
- },
- "iamProfile": {
- "type": "string"
- },
- "instanceType": {
- "type": "string"
- },
- "nics": {
- "items": {
- "$ref": "#/definitions/v1AwsNic"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Creates a GCP cloud account",
+ "operationId": "v1CloudAccountsGcpCreate",
+ "parameters": [
+ {
+ "description": "Request payload to validate GCP cloud account",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "GCP account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "jsonCredentials": {
+ "description": "Gcp cloud account json credentials",
+ "type": "string"
+ },
+ "jsonCredentialsFileUid": {
+ "description": "Reference of the credentials stored in the file",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
- },
- "phase": {
- "type": "string"
- },
- "sshKeyName": {
- "type": "string"
- },
- "subnetId": {
- "type": "string"
- },
- "type": {
- "type": "string"
- },
- "vpcId": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "required": [
- "instanceType",
- "vpcId",
- "ami"
- ],
- "type": "object"
+ }
},
- "v1AwsMachines": {
- "description": "AWS machine list",
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1AwsMachine"
+ "/v1/cloudaccounts/gcp/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Returns the specified GCP cloud account",
+ "operationId": "v1CloudAccountsGcpGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "GCP account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "jsonCredentials": {
+ "description": "Gcp cloud account json credentials",
+ "type": "string"
+ },
+ "jsonCredentialsFileName": {
+ "description": "Reference of the credentials stored in the file",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1AwsNic": {
- "description": "AWS network interface",
- "properties": {
- "index": {
- "format": "int8",
- "type": "integer"
- },
- "privateIPs": {
- "items": {
- "type": "string"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Updates the specified GCP account",
+ "operationId": "v1CloudAccountsGcpUpdate",
+ "parameters": [
+ {
+ "description": "Request payload to validate GCP cloud account",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "GCP account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "jsonCredentials": {
+ "description": "Gcp cloud account json credentials",
+ "type": "string"
+ },
+ "jsonCredentialsFileUid": {
+ "description": "Reference of the credentials stored in the file",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "policies"
- ],
- "type": "object"
- },
- "v1AwsPolicyArnsSpec": {
- "description": "Aws policy ARNs spec",
- "properties": {
- "account": {
- "$ref": "#/definitions/v1AwsCloudAccount"
- },
- "policyArns": {
- "items": {
- "type": "string"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Deletes the specified GCP account",
+ "operationId": "v1CloudAccountsGcpDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "GCP cloud account uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AwsRegions": {
- "properties": {
- "regions": {
- "description": "List of AWS regions",
- "items": {
- "$ref": "#/definitions/v1AwsRegion"
+ "/v1/cloudaccounts/maas": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Retrieves a list of Maas cloud accounts",
+ "operationId": "v1CloudAccountsMaasList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cloud account items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "apiKey",
+ "apiEndpoint"
+ ],
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "regions"
- ],
- "type": "object"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Creates an Maas cloud account",
+ "operationId": "v1CloudAccountsMaasCreate",
+ "parameters": [
+ {
+ "description": "Request payload to validate Maas cloud account",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Maas cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "apiKey",
+ "apiEndpoint"
+ ],
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
},
- "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"
+ "/v1/cloudaccounts/maas/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Returns the specified Maas account",
+ "operationId": "v1CloudAccountsMaasGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Maas cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "apiKey",
+ "apiEndpoint"
+ ],
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "id": {
- "description": "ID of resource",
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Updates the specified Maas account",
+ "operationId": "v1CloudAccountsMaasUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Maas cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "apiKey",
+ "apiEndpoint"
+ ],
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Deletes the specified Maas account",
+ "operationId": "v1CloudAccountsMaasDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "required": [
- "credentials",
- "bucket",
- "region"
- ],
- "type": "object"
- },
- "v1AwsSecurityGroups": {
- "properties": {
- "groups": {
- "items": {
- "$ref": "#/definitions/v1AwsSecuritygroup"
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Patches the specified CloudAccount Maas",
+ "operationId": "v1CloudAccountsMaasPatch",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "op",
+ "path"
+ ],
+ "properties": {
+ "from": {
+ "description": "A path to the pointer from which reference will be taken",
+ "type": "string"
+ },
+ "op": {
+ "description": "The operation to be performed",
+ "type": "string",
+ "enum": [
+ "add",
+ "remove",
+ "replace",
+ "move",
+ "copy"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "groups"
- ],
- "type": "object"
- },
- "v1AwsSecuritygroup": {
- "description": "Aws security group",
- "properties": {
- "groupId": {
- "type": "string"
- },
- "groupName": {
- "type": "string"
- },
- "ownerId": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Maas cloud account uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AwsStorageTypes": {
- "properties": {
- "storageTypes": {
- "description": "List of AWS storage types",
- "items": {
- "$ref": "#/definitions/v1StorageType"
+ "/v1/cloudaccounts/maas/{uid}/properties/azs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the maas azs for a given account",
+ "operationId": "v1MaasAccountsUidAzs",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Maas zones",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas zone",
+ "type": "object",
+ "properties": {
+ "description": {
+ "description": "Description of Maas domain",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of Maas zone",
+ "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1AwsVolumeSize": {
- "description": "AWS Volume Size entity",
- "properties": {
- "sizeGB": {
- "description": "AWS volume size",
- "type": "integer"
+ "/v1/cloudaccounts/maas/{uid}/properties/domains": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the maas domains for a given account",
+ "operationId": "v1MaasAccountsUidDomains",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Maas domains",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas domain",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of Maas domain",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/cloudaccounts/maas/{uid}/properties/resourcePools": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "vpcId": {
- "description": "Id of the virtual network",
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the maas pools for a given account",
+ "operationId": "v1MaasAccountsUidPools",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Maas pools",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas pool",
+ "type": "object",
+ "properties": {
+ "description": {
+ "description": "Description of Maas domain",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of Maas pool",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "vpcId"
- ],
- "type": "object"
- },
- "v1AwsVpcs": {
- "description": "List of AWS VPCs",
- "properties": {
- "vpcs": {
- "items": {
- "$ref": "#/definitions/v1AwsVpc"
- },
- "type": "array"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "required": [
- "vpcs"
- ],
- "type": "object"
+ ]
},
- "v1AzValidateEntity": {
- "description": "Az validate entity",
- "properties": {
- "azs": {
- "description": "Gcp Azs",
- "items": {
- "type": "string"
+ "/v1/cloudaccounts/maas/{uid}/properties/subnets": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "project": {
- "description": "Gcp project",
- "type": "string"
- },
- "region": {
- "description": "Gcp region",
- "type": "string"
- },
- "uid": {
- "description": "Cloud account uid",
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the maas subnets for a given account",
+ "operationId": "v1MaasAccountsUidSubnets",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Maas subnets",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas subnet",
+ "type": "object",
+ "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": {
+ "description": "Maas vlan entity",
+ "type": "object",
+ "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"
- },
- "v1AzureAccount": {
- "description": "Azure account information",
- "properties": {
- "kind": {
- "description": "Cloud account kind",
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1AzureCloudAccount"
- },
- "status": {
- "$ref": "#/definitions/v1CloudAccountStatus"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AzureAccounts": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1AzureAccount"
+ "/v1/cloudaccounts/maas/{uid}/properties/tags": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the maas tags for a given account",
+ "operationId": "v1MaasAccountsUidTags",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Maas tags",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas tag",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1AzureAvailabilityZone": {
- "description": "Azure availability zone",
- "properties": {
- "name": {
- "description": "Azure availability zone name",
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/cloudaccounts/openstack": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Retrieves a list of OpenStack cloud accounts",
+ "operationId": "v1CloudAccountsOpenStackList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cloud account items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "auth-url,project,username,password,domain,cacert etc",
+ "type": "object",
+ "required": [
+ "identityEndpoint",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "v1AzureCloudConfig": {
- "description": "AzureCloudConfig is the Schema for the azurecloudconfigs API",
- "properties": {
- "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/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1AzureCloudConfigSpec"
- },
- "status": {
- "$ref": "#/definitions/v1AzureCloudConfigStatus"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Creates a OpenStack cloud account",
+ "operationId": "v1CloudAccountsOpenStackCreate",
+ "parameters": [
+ {
+ "description": "Request payload to validate OpenStack cloud account",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "OpenStack account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "auth-url,project,username,password,domain,cacert etc",
+ "type": "object",
+ "required": [
+ "identityEndpoint",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "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"
+ "/v1/cloudaccounts/openstack/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Returns the specified OpenStack account",
+ "operationId": "v1CloudAccountsOpenStackGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "OpenStack account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "auth-url,project,username,password,domain,cacert etc",
+ "type": "object",
+ "required": [
+ "identityEndpoint",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Updates the specified OpenStack account",
+ "operationId": "v1CloudAccountsOpenStackUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "OpenStack account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "auth-url,project,username,password,domain,cacert etc",
+ "type": "object",
+ "required": [
+ "identityEndpoint",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Deletes the specified OpenStack account",
+ "operationId": "v1CloudAccountsOpenStackDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "OpenStack cloud account uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AzureGroups": {
- "description": "List of Azure groups",
- "properties": {
- "groups": {
- "items": {
- "$ref": "#/definitions/v1AzureGroup"
+ "/v1/cloudaccounts/openstack/{uid}/properties/azs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the openstack azs for a given account and region",
+ "operationId": "v1OpenstackAccountsUidAzs",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "region",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "name": "project",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "name": "domain",
+ "in": "query"
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of OpenStack azs",
+ "type": "object",
+ "required": [
+ "azs"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack az entity",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of OpenStack az",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AzureInstanceTypes": {
- "description": "List of Azure instance types",
- "properties": {
- "instanceTypes": {
- "items": {
- "$ref": "#/definitions/v1InstanceType"
+ "/v1/cloudaccounts/openstack/{uid}/properties/flavors": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the openstack keypairs for a given account and scope",
+ "operationId": "v1OpenstackAccountsUidFlavors",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "project",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "name": "region",
+ "in": "query"
},
- "type": "array"
+ {
+ "type": "string",
+ "name": "domain",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of OpenStack flavours",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack flavor entity. Flavor represent (virtual) hardware configurations for server resources",
+ "type": "object",
+ "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1AzureMachine": {
- "description": "Azure cloud VM definition",
- "properties": {
- "kind": {
- "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"
+ "/v1/cloudaccounts/openstack/{uid}/properties/keypairs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the openstack keypairs for a given account and scope",
+ "operationId": "v1OpenstackAccountsUidKeypairs",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "project",
+ "in": "query"
},
- "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": "string",
+ "name": "region",
+ "in": "query"
},
- "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": "string",
+ "name": "domain",
+ "in": "query"
},
- "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
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of OpenStack keypairs",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack keypair. KeyPair is an SSH key known to the OpenStack Cloud that is available to be injected into servers",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "isControlPlane"
- ],
- "type": "object"
- },
- "v1AzureMachinePoolConfigEntity": {
- "properties": {
- "cloudConfig": {
- "$ref": "#/definitions/v1AzureMachinePoolCloudConfigEntity"
- },
- "managedPoolConfig": {
- "$ref": "#/definitions/v1AzureManagedMachinePoolConfig"
- },
- "poolConfig": {
- "$ref": "#/definitions/v1MachinePoolConfigEntity"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "required": [
- "cloudConfig"
- ],
- "type": "object"
+ ]
},
- "v1AzureMachineSpec": {
- "description": "Azure cloud VM definition spec",
- "properties": {
- "additionalTags": {
- "additionalProperties": {
- "type": "string"
+ "/v1/cloudaccounts/openstack/{uid}/properties/networks": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "object"
- },
- "allocatePublicIP": {
- "type": "boolean"
- },
- "availabilityZone": {
- "$ref": "#/definitions/v1AzureMachineSpecAvailabilityZone"
- },
- "image": {
- "$ref": "#/definitions/v1AzureMachineSpecImage"
- },
- "instanceType": {
- "type": "string"
- },
- "location": {
- "type": "string"
- },
- "nics": {
- "items": {
- "$ref": "#/definitions/v1AzureNic"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the openstack networks for a given account and scope",
+ "operationId": "v1OpenstackAccountsUidNetworks",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "project",
+ "in": "query"
},
- "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": "string",
+ "name": "region",
+ "in": "query"
},
- "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": "string",
+ "name": "domain",
+ "in": "query"
},
- "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of OpenStack networks",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack network",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack subnet entity",
+ "type": "object",
+ "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"
- },
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AzurePrivateDnsZones": {
- "description": "List of Azure storage accounts",
- "properties": {
- "privateDnsZones": {
- "items": {
- "$ref": "#/definitions/v1AzurePrivateDnsZone"
+ "/v1/cloudaccounts/openstack/{uid}/properties/projects": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the openstack projects for a given account",
+ "operationId": "v1OpenstackAccountsUidProjects",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Array of OpenStack projects",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Project represents an OpenStack Identity Project",
+ "type": "object",
+ "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"
- },
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AzureRegions": {
- "description": "List of Azure regions",
- "properties": {
- "regions": {
- "items": {
- "$ref": "#/definitions/v1AzureRegion"
+ "/v1/cloudaccounts/openstack/{uid}/properties/regions": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the openstack regions for a given account",
+ "operationId": "v1OpenstackAccountsUidRegions",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of OpenStack regions and domains",
+ "type": "object",
+ "required": [
+ "regions",
+ "domains"
+ ],
+ "properties": {
+ "domains": {
+ "description": "List of OpenStack domains",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack domain. A Domain is a collection of projects, users, and roles",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "regions": {
+ "description": "List of OpenStack regions",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack region entity",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "regions"
- ],
- "type": "object"
- },
- "v1AzureResourceGroupList": {
- "description": "List of Azure resource group",
- "properties": {
- "resourceGroupList": {
- "items": {
- "$ref": "#/definitions/v1ResourceGroup"
- },
- "type": "array"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AzureStorageAccountEntity": {
- "description": "Azure Storage Account Entity",
- "properties": {
- "storageAccountTypes": {
- "items": {
- "$ref": "#/definitions/v1StorageAccountEntity"
+ "/v1/cloudaccounts/summary": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1AzureStorageAccounts": {
- "description": "List of Azure storage accounts",
- "properties": {
- "accounts": {
- "items": {
- "$ref": "#/definitions/v1StorageAccount"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Retrieves a list of cloud accounts summary",
+ "operationId": "v1CloudAccountsListSummary",
+ "parameters": [
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cloud account summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cloud account summary",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "specSummary": {
+ "description": "Cloud account spec summary",
+ "type": "object",
+ "properties": {
+ "accountId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
+ }
},
- "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"
+ "/v1/cloudaccounts/tencent": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Retrieves a list of Tencent cloud accounts",
+ "operationId": "v1CloudAccountsTencentList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cloud account items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Tencent cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "secretId",
+ "secretKey"
+ ],
+ "properties": {
+ "secretId": {
+ "description": "Tencent api secretID",
+ "type": "string"
+ },
+ "secretKey": {
+ "description": "Tencent api secret key",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "resourceGroup",
- "containerName",
- "storageName",
- "credentials"
- ],
- "type": "object"
- },
- "v1AzureStorageContainers": {
- "description": "List of Azure storage containers",
- "properties": {
- "containers": {
- "items": {
- "$ref": "#/definitions/v1StorageContainer"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Creates an Tencent cloud account",
+ "operationId": "v1CloudAccountsTencentCreate",
+ "parameters": [
+ {
+ "description": "Request payload to validate Tencent cloud account",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Tencent cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "secretId",
+ "secretKey"
+ ],
+ "properties": {
+ "secretId": {
+ "description": "Tencent api secretID",
+ "type": "string"
+ },
+ "secretKey": {
+ "description": "Tencent api secret key",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1AzureStorageTypes": {
- "description": "List of Azure storage types",
- "properties": {
- "storageTypes": {
- "items": {
- "$ref": "#/definitions/v1StorageType"
+ "/v1/cloudaccounts/tencent/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Returns the specified Tencent account",
+ "operationId": "v1CloudAccountsTencentGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Tencent cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "secretId",
+ "secretKey"
+ ],
+ "properties": {
+ "secretId": {
+ "description": "Tencent api secretID",
+ "type": "string"
+ },
+ "secretKey": {
+ "description": "Tencent api secret key",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1AzureSubscriptionList": {
- "description": "List of Azure subscription",
- "properties": {
- "subscriptionList": {
- "items": {
- "$ref": "#/definitions/v1Subscription"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Updates the specified Tencent account",
+ "operationId": "v1CloudAccountsTencentUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Tencent cloud account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "secretId",
+ "secretKey"
+ ],
+ "properties": {
+ "secretId": {
+ "description": "Tencent api secretID",
+ "type": "string"
+ },
+ "secretKey": {
+ "description": "Tencent api secret key",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Deletes the specified Tencent account",
+ "operationId": "v1CloudAccountsTencentDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Tencent cloud account uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1AzureVirtualNetworkList": {
- "description": "List of Azure virtual network",
- "properties": {
- "virtualNetworkList": {
- "items": {
- "$ref": "#/definitions/v1VirtualNetwork"
+ "/v1/cloudaccounts/vsphere": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1AzureZoneEntity": {
- "description": "List of Azure zone",
- "properties": {
- "zoneList": {
- "items": {
- "$ref": "#/definitions/v1ZoneEntity"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Retrieves a list of vSphere cloud accounts",
+ "operationId": "v1CloudAccountsVsphereList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cloud account items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "VSphere account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "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"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Creates a vSphere cloud account",
+ "operationId": "v1CloudAccountsVsphereCreate",
+ "parameters": [
+ {
+ "description": "Request payload to validate VSphere cloud account",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "VSphere account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
}
},
- "v1BackupState": {
- "description": "Backup state",
- "properties": {
- "backupTime": {
- "$ref": "#/definitions/v1Time"
- },
- "deleteState": {
- "type": "string"
- },
- "msg": {
- "type": "string"
- },
- "state": {
- "type": "string"
+ "/v1/cloudaccounts/vsphere/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Returns the specified vSphere account",
+ "operationId": "v1CloudAccountsVsphereGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "VSphere account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
- }
- },
- "v1BackupStatusConfig": {
- "description": "Backup config",
- "properties": {
- "includeAllDisks": {
- "type": "boolean"
- },
- "includeClusterResources": {
- "type": "boolean"
- },
- "namespaces": {
- "items": {
- "type": "string"
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Updates the specified VSphere account",
+ "operationId": "v1CloudAccountsVsphereUpdate",
+ "parameters": [
+ {
+ "description": "Request payload to validate VSphere cloud account",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "VSphere account information",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the account.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the account",
+ "type": "object",
+ "properties": {
+ "state": {
+ "description": "Cloud account status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
- }
- },
- "v1BackupStatusMeta": {
- "description": "Backup status meta",
- "properties": {
- "backupName": {
- "type": "string"
- },
- "backupState": {
- "$ref": "#/definitions/v1BackupState"
- },
- "backupedNamespaces": {
- "items": {
- "type": "string"
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "expiryDate": {
- "$ref": "#/definitions/v1Time"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Deletes the specified vSphere account",
+ "operationId": "v1CloudAccountsVsphereDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
- }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "VSphere cloud account uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1BasicOciRegistry": {
- "description": "Basic oci registry information",
- "properties": {
- "kind": {
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1BasicOciRegistrySpec"
+ "/v1/cloudaccounts/vsphere/{uid}/properties/computecluster/resources": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the vSphere computecluster resources for the given overlord account",
+ "operationId": "v1VsphereAccountsUidClusterRes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Datacenter and its resources like datastore, resoucepool, folders",
+ "type": "object",
+ "properties": {
+ "computecluster": {
+ "description": "Vsphere compute cluster",
+ "type": "object",
+ "properties": {
+ "datastores": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "resourcePools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "datacenter": {
+ "description": "Name of the datacenter",
+ "type": "string"
+ }
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "registryUid": {
- "description": "Basic oci registry uid",
- "type": "string"
+ {
+ "type": "string",
+ "name": "datacenter",
+ "in": "query",
+ "required": true
},
- "scope": {
- "type": "string"
- }
- },
- "required": [
- "endpoint",
- "auth"
- ],
- "type": "object"
- },
- "v1Billing": {
- "description": "billing preference",
- "properties": {
- "billingDay": {
- "type": "integer"
+ {
+ "type": "string",
+ "name": "computecluster",
+ "in": "query",
+ "required": true
},
- "tierPricing": {
- "$ref": "#/definitions/v1TierPrice"
+ {
+ "type": "boolean",
+ "name": "useQualifiedNetworkName",
+ "in": "query"
}
- }
+ ]
},
- "v1BrokerLogin": {
- "description": "Request for broker login request",
- "properties": {
- "subscriberSubjects": {
- "description": "subjects that client need to subscribe",
- "items": {
- "type": "string"
+ "/v1/cloudaccounts/vsphere/{uid}/properties/datacenters": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Get the vSphere datacenters & datacluster for the given overlord account",
+ "operationId": "v1VsphereAccountsUidDatacenters",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Datacenters with computeclusters",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "List of associated datacenters",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "List of Datacenter with computeclusters",
+ "type": "object",
+ "properties": {
+ "computeclusters": {
+ "description": "List of the VSphere compute clusters in datacenter",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "datacenter": {
+ "description": "name of the datacenter of the VSphere",
+ "type": "string"
+ },
+ "folders": {
+ "description": "List of the VSphere folders in datacenter",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/cloudaccounts/{uid}/geoLocation": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "subscriberSubjects": {
- "description": "subjects that client has subscribed",
- "items": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudaccounts"
+ ],
+ "summary": "Update the geolocation annotation",
+ "operationId": "v1AccountsGeolocationPatch",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1BulkDeleteFailure": {
- "properties": {
- "errMsg": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "uid": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1BulkDeleteRequest": {
- "properties": {
- "uids": {
- "items": {
- "type": "string"
+ "/v1/cloudconfigs/aks/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified AKS cloud config",
+ "operationId": "v1CloudConfigsAksGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "AzureCloudConfig is the Schema for the azurecloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "AzureCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "subscriptionId",
+ "location",
+ "sshKey"
+ ],
+ "properties": {
+ "aadProfile": {
+ "description": "AADProfile - AAD integration is managed by AKS.",
+ "type": "object",
+ "required": [
+ "managed",
+ "adminGroupObjectIDs"
+ ],
+ "properties": {
+ "adminGroupObjectIDs": {
+ "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "managed": {
+ "description": "Managed - Whether to enable managed AAD.",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "apiServerAccessProfile": {
+ "description": "APIServerAccessProfile - access profile for AKS API server.",
+ "type": "object",
+ "properties": {
+ "authorizedIPRanges": {
+ "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "containerName": {
+ "type": "string"
+ },
+ "controlPlaneSubnet": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "enablePrivateCluster": {
+ "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster",
+ "type": "boolean"
+ },
+ "infraLBConfig": {
+ "type": "object",
+ "properties": {
+ "apiServerLB": {
+ "description": "LoadBalancerSpec defines an Azure load balancer.",
+ "type": "object",
+ "properties": {
+ "apiServerLBStaticIP": {
+ "type": "string"
+ },
+ "ipAllocationMethod": {
+ "type": "string",
+ "default": "Dynamic",
+ "enum": [
+ "Static",
+ "Dynamic"
+ ]
+ },
+ "privateDNSName": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Load Balancer type",
+ "type": "string",
+ "default": "Public",
+ "enum": [
+ "Internal",
+ "Public"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "isControlPlane"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "spotVMOptions": {
+ "description": "SpotVMOptions defines the options relevant to running the Machine on Spot VMs",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "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",
+ "type": "object",
+ "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\"`",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "images": {
+ "description": "Refers to Azure Shared Gallery image",
+ "type": "object",
+ "properties": {
+ "gallery": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "resourceGroup": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "subscriptionID": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "isAddonLayer": {
+ "description": "addon layers present in spc",
+ "type": "boolean"
+ },
+ "roleDigest": {
+ "description": "this map will be for ansible roles present in eack pack",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Mold always create VHD image for custom image, and this can be use as golden images",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "os": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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": {
+ "parameters": [
+ {
"type": "string",
- "x-omitempty": false
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- }
- },
- "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"
+ "/v1/cloudconfigs/aks/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsAksUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "subscriptionId",
+ "location",
+ "sshKey"
+ ],
+ "properties": {
+ "aadProfile": {
+ "description": "AADProfile - AAD integration is managed by AKS.",
+ "type": "object",
+ "required": [
+ "managed",
+ "adminGroupObjectIDs"
+ ],
+ "properties": {
+ "adminGroupObjectIDs": {
+ "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "managed": {
+ "description": "Managed - Whether to enable managed AAD.",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "apiServerAccessProfile": {
+ "description": "APIServerAccessProfile - access profile for AKS API server.",
+ "type": "object",
+ "properties": {
+ "authorizedIPRanges": {
+ "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "containerName": {
+ "type": "string"
+ },
+ "controlPlaneSubnet": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "enablePrivateCluster": {
+ "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster",
+ "type": "boolean"
+ },
+ "infraLBConfig": {
+ "type": "object",
+ "properties": {
+ "apiServerLB": {
+ "description": "LoadBalancerSpec defines an Azure load balancer.",
+ "type": "object",
+ "properties": {
+ "apiServerLBStaticIP": {
+ "type": "string"
+ },
+ "ipAllocationMethod": {
+ "type": "string",
+ "default": "Dynamic",
+ "enum": [
+ "Static",
+ "Dynamic"
+ ]
+ },
+ "privateDNSName": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Load Balancer type",
+ "type": "string",
+ "default": "Public",
+ "enum": [
+ "Internal",
+ "Public"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1CPUPassthroughSpec": {
- "properties": {
- "cachePassthrough": {
- "type": "boolean"
- },
- "isEnabled": {
- "description": "Enables the CPU Passthrough for the libvirt domain",
- "type": "boolean"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/cloudconfigs/aks/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates an AKS cloud config's machine pool",
+ "operationId": "v1CloudConfigsAksMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "Instance type stands for VMSize in Azure",
+ "type": "string"
+ },
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "managedPoolConfig": {
+ "type": "object",
+ "properties": {
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
},
"headers": {
- "additionalProperties": {
- "type": "string"
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
}
- },
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1CleanUpResource": {
- "description": "Resources of tenant",
- "properties": {
- "activeResources": {
- "$ref": "#/definitions/v1ActiveTenantResources"
- },
- "tenantStatus": {
- "$ref": "#/definitions/v1TenantCleanUpStatus"
+ "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified AKS cloud config's machine pool",
+ "operationId": "v1CloudConfigsAksMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "Instance type stands for VMSize in Azure",
+ "type": "string"
+ },
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "managedPoolConfig": {
+ "type": "object",
+ "properties": {
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1CloudAccountMeta": {
- "description": "Cloud account meta information",
- "properties": {
- "name": {
- "type": "string"
- },
- "uid": {
- "type": "string"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsAksMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object"
- },
- "v1CloudAccountMetadata": {
- "description": "Cloud account metadata summary",
- "properties": {
- "kind": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "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": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1CloudAccountStatus": {
- "description": "Status of the account",
- "properties": {
- "state": {
- "description": "Cloud account status",
- "type": "string"
+ "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of AKS machines",
+ "operationId": "v1CloudConfigsAksPoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of AKS machine items",
+ "schema": {
+ "description": "Azure machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Azure cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Azure cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "location",
+ "osDisk"
+ ],
+ "properties": {
+ "additionalTags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "allocatePublicIP": {
+ "type": "boolean"
+ },
+ "availabilityZone": {
+ "description": "Azure Machine Spec Availability zone",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ },
+ "image": {
+ "description": "Azure Machine Spec Image",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "location": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "sshPublicKey": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "v1CloudAccountSummary": {
- "description": "Cloud account summary",
- "properties": {
- "kind": {
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "specSummary": {
- "description": "Cloud account spec summary",
- "properties": {
- "accountId": {
- "type": "string"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsAksPoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Azure cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "location",
+ "osDisk"
+ ],
+ "properties": {
+ "additionalTags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "allocatePublicIP": {
+ "type": "boolean"
+ },
+ "availabilityZone": {
+ "description": "Azure Machine Spec Availability zone",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ },
+ "image": {
+ "description": "Azure Machine Spec Image",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "location": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "sshPublicKey": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "status": {
- "$ref": "#/definitions/v1CloudAccountStatus"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1CloudAccountUidEntity": {
- "description": "Cloud account uid entity",
- "properties": {
- "uid": {
- "description": "Cloud account uid",
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1CloudAccountsMetadata": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1CloudAccountMetadata"
+ "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified AKS machine",
+ "operationId": "v1CloudConfigsAksPoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Azure cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Azure cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "location",
+ "osDisk"
+ ],
+ "properties": {
+ "additionalTags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "allocatePublicIP": {
+ "type": "boolean"
+ },
+ "availabilityZone": {
+ "description": "Azure Machine Spec Availability zone",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ },
+ "image": {
+ "description": "Azure Machine Spec Image",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "location": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "sshPublicKey": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1CloudAccountsPatch": {
- "items": {
- "$ref": "#/definitions/v1HttpPatch"
- },
- "type": "array"
- },
- "v1CloudAccountsSummary": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1CloudAccountSummary"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to the cloud config's machine pool",
+ "operationId": "v1CloudConfigsAksPoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Azure cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "location",
+ "osDisk"
+ ],
+ "properties": {
+ "additionalTags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "allocatePublicIP": {
+ "type": "boolean"
+ },
+ "availabilityZone": {
+ "description": "Azure Machine Spec Availability zone",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ },
+ "image": {
+ "description": "Azure Machine Spec Image",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "location": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "sshPublicKey": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified Azure machine",
+ "operationId": "v1CloudConfigsAksPoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "instanceState": {
- "enum": [
- "Pending",
- "Provisioning",
- "Provisioned",
- "Running",
- "Deleting",
- "Deleted",
- "Failed",
- "Unknown"
- ],
- "type": "string"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
},
- "maintenanceStatus": {
- "$ref": "#/definitions/v1MachineMaintenanceStatus"
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1CloudRate": {
- "description": "Cloud estimated rate information",
- "properties": {
- "compute": {
- "$ref": "#/definitions/v1ComputeRate"
- },
- "storage": {
- "items": {
- "$ref": "#/definitions/v1StorageRate"
+ "/v1/cloudconfigs/aws/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "total": {
- "format": "float64",
- "type": "number",
- "x-omitempty": false
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified AWS cloud config",
+ "operationId": "v1CloudConfigsAwsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "AwsCloudConfig is the Schema for the awscloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "AwsCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "Cluster level configuration for aws cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "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"
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "isControlPlane"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "azs": {
+ "description": "AZs is only used for dynamic placement",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64"
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnetIds": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "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",
+ "type": "object",
+ "properties": {
+ "ansibleRoleDigest": {
+ "description": "For mold controller to identify if is there any changes in Pack",
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "images": {
+ "description": "Images array items should be 1-to-1 mapping to Spec.MachinePoolConfig",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "os": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "isAddonLayer": {
+ "description": "addon layers present in spc",
+ "type": "boolean"
+ },
+ "roleDigest": {
+ "description": "this map will be for ansible roles present in eack pack",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1CloudResourceMetadata": {
- "description": "Cloud resource metadata",
- "properties": {
- "instanceTypes": {
- "additionalProperties": {
- "$ref": "#/definitions/v1InstanceType"
+ "/v1/cloudconfigs/aws/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "object"
- },
- "storageTypes": {
- "additionalProperties": {
- "$ref": "#/definitions/v1StorageType"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsAwsUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "AWS cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for aws cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "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"
+ }
+ }
+ }
+ }
+ }
},
- "type": "object"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1CloudWatch": {
- "properties": {
- "credentials": {
- "$ref": "#/definitions/v1AwsCloudAccount"
- },
- "group": {
- "type": "string"
- },
- "region": {
- "type": "string"
- },
- "stream": {
- "type": "string"
+ "/v1/cloudconfigs/aws/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates an AWS cloud config's machine pool",
+ "operationId": "v1CloudConfigsAwsMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1ClusterBackup": {
- "description": "Cluster Backup",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1ClusterBackupSpec"
- },
- "status": {
- "$ref": "#/definitions/v1ClusterBackupStatus"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
+ "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "schedule": {
- "$ref": "#/definitions/v1ClusterFeatureSchedule"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified AWS cloud config's machine pool",
+ "operationId": "v1CloudConfigsAwsMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
- }
- },
- "v1ClusterBackupLocationType": {
- "description": "Cluster backup location type",
- "properties": {
- "locationType": {
- "type": "string"
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsAwsMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "required": [
- "locationType"
- ]
- },
- "v1ClusterBackupSpec": {
- "description": "Cluster Backup Spec",
- "properties": {
- "clusterUid": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "config": {
- "$ref": "#/definitions/v1ClusterBackupConfig"
- }
- }
- },
- "v1ClusterBackupStatus": {
- "description": "Cluster Backup Status",
- "properties": {
- "clusterBackupStatuses": {
- "items": {
- "$ref": "#/definitions/v1ClusterBackupStatusMeta"
- },
- "type": "array"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
+ "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "restoreStatusMeta": {
- "items": {
- "$ref": "#/definitions/v1BackupRestoreStatusMeta"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of AWS machines",
+ "operationId": "v1CloudConfigsAwsPoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
},
- "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": "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.",
+ "name": "filters",
+ "in": "query"
},
- "type": "array"
- },
- "kubeHunterLogs": {
- "items": {
- "$ref": "#/definitions/v1ClusterScanLogKubeHunter"
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
},
- "type": "array"
- },
- "sonobuoyLogs": {
- "items": {
- "$ref": "#/definitions/v1ClusterScanLogSonobuoy"
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
},
- "type": "array"
- },
- "syftLogs": {
- "items": {
- "$ref": "#/definitions/v1ClusterScanLogSyft"
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
},
- "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": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
},
- "type": "object"
- }
- }
- },
- "v1ClusterComplianceScanSyftConfig": {
- "description": "Cluster compliance scan config for syft driver",
- "properties": {
- "config": {
- "$ref": "#/definitions/v1ClusterComplianceScanSyftDriverConfig"
- },
- "runScan": {
- "type": "boolean"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of AWS machine items",
+ "schema": {
+ "description": "AWS machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "AWS cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "AWS cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "vpcId",
+ "ami"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "type": "string"
+ },
+ "az": {
+ "type": "string"
+ },
+ "dnsName": {
+ "type": "string"
+ },
+ "iamProfile": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "phase": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
}
- }
- },
- "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"
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsAwsPoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "AWS cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "AWS cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "vpcId",
+ "ami"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "type": "string"
+ },
+ "az": {
+ "type": "string"
+ },
+ "dnsName": {
+ "type": "string"
+ },
+ "iamProfile": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "phase": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- }
- },
- "v1ClusterComplianceScheduleConfig": {
- "description": "Cluster compliance scan schedule configuration",
- "properties": {
- "kubeBench": {
- "$ref": "#/definitions/v1ClusterComplianceScanKubeBenchScheduleConfig"
- },
- "kubeHunter": {
- "$ref": "#/definitions/v1ClusterComplianceScanKubeHunterScheduleConfig"
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "sonobuoy": {
- "$ref": "#/definitions/v1ClusterComplianceScanSonobuoyScheduleConfig"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
+ "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified AWS machine",
+ "operationId": "v1CloudConfigsAwsPoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "AWS cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "AWS cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "vpcId",
+ "ami"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "type": "string"
+ },
+ "az": {
+ "type": "string"
+ },
+ "dnsName": {
+ "type": "string"
+ },
+ "iamProfile": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "phase": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to the cloud config's machine pool",
+ "operationId": "v1CloudConfigsAwsPoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "AWS cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "AWS cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "vpcId",
+ "ami"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "type": "string"
+ },
+ "az": {
+ "type": "string"
+ },
+ "dnsName": {
+ "type": "string"
+ },
+ "iamProfile": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "phase": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified AWS machine",
+ "operationId": "v1CloudConfigsAwsPoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "resources": {
- "$ref": "#/definitions/v1ClusterResourcesEntity"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
},
- "updateWorkerPoolsInParallel": {
- "type": "boolean"
- }
- },
- "type": "object"
- },
- "v1ClusterConfigResponse": {
- "properties": {
- "hostClusterConfig": {
- "$ref": "#/definitions/v1HostClusterConfigResponse",
- "description": "HostClusterConfig defines the configuration entity of host clusters config entity"
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1ClusterEdgeInstallerConfig": {
- "properties": {
- "installerDownloadLinks": {
- "additionalProperties": {
- "type": "string"
+ "/v1/cloudconfigs/azure/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified Azure cloud config",
+ "operationId": "v1CloudConfigsAzureGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "AzureCloudConfig is the Schema for the azurecloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "AzureCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "subscriptionId",
+ "location",
+ "sshKey"
+ ],
+ "properties": {
+ "aadProfile": {
+ "description": "AADProfile - AAD integration is managed by AKS.",
+ "type": "object",
+ "required": [
+ "managed",
+ "adminGroupObjectIDs"
+ ],
+ "properties": {
+ "adminGroupObjectIDs": {
+ "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "managed": {
+ "description": "Managed - Whether to enable managed AAD.",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "apiServerAccessProfile": {
+ "description": "APIServerAccessProfile - access profile for AKS API server.",
+ "type": "object",
+ "properties": {
+ "authorizedIPRanges": {
+ "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "containerName": {
+ "type": "string"
+ },
+ "controlPlaneSubnet": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "enablePrivateCluster": {
+ "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster",
+ "type": "boolean"
+ },
+ "infraLBConfig": {
+ "type": "object",
+ "properties": {
+ "apiServerLB": {
+ "description": "LoadBalancerSpec defines an Azure load balancer.",
+ "type": "object",
+ "properties": {
+ "apiServerLBStaticIP": {
+ "type": "string"
+ },
+ "ipAllocationMethod": {
+ "type": "string",
+ "default": "Dynamic",
+ "enum": [
+ "Static",
+ "Dynamic"
+ ]
+ },
+ "privateDNSName": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Load Balancer type",
+ "type": "string",
+ "default": "Public",
+ "enum": [
+ "Internal",
+ "Public"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "isControlPlane"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "spotVMOptions": {
+ "description": "SpotVMOptions defines the options relevant to running the Machine on Spot VMs",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "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",
+ "type": "object",
+ "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\"`",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "images": {
+ "description": "Refers to Azure Shared Gallery image",
+ "type": "object",
+ "properties": {
+ "gallery": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "resourceGroup": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "subscriptionID": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "isAddonLayer": {
+ "description": "addon layers present in spc",
+ "type": "boolean"
+ },
+ "roleDigest": {
+ "description": "this map will be for ansible roles present in eack pack",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Mold always create VHD image for custom image, and this can be use as golden images",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "os": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "state": {
+ "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"
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterGroupClusterRefs": {
- "description": "Cluster group clusters reference",
- "properties": {
- "clusterRefs": {
- "items": {
- "$ref": "#/definitions/v1ClusterGroupClusterRef"
+ "/v1/cloudconfigs/azure/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- }
- }
- },
- "v1ClusterGroupClustersConfig": {
- "description": "Clusters config of cluster group",
- "properties": {
- "endpointType": {
- "description": "Host cluster endpoint type",
- "enum": [
- "Ingress",
- "LoadBalancer"
- ],
- "type": "string"
- },
- "hostClustersConfig": {
- "items": {
- "$ref": "#/definitions/v1ClusterGroupHostClusterConfig"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsAzureUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "subscriptionId",
+ "location",
+ "sshKey"
+ ],
+ "properties": {
+ "aadProfile": {
+ "description": "AADProfile - AAD integration is managed by AKS.",
+ "type": "object",
+ "required": [
+ "managed",
+ "adminGroupObjectIDs"
+ ],
+ "properties": {
+ "adminGroupObjectIDs": {
+ "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "managed": {
+ "description": "Managed - Whether to enable managed AAD.",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "apiServerAccessProfile": {
+ "description": "APIServerAccessProfile - access profile for AKS API server.",
+ "type": "object",
+ "properties": {
+ "authorizedIPRanges": {
+ "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "containerName": {
+ "type": "string"
+ },
+ "controlPlaneSubnet": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "enablePrivateCluster": {
+ "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster",
+ "type": "boolean"
+ },
+ "infraLBConfig": {
+ "type": "object",
+ "properties": {
+ "apiServerLB": {
+ "description": "LoadBalancerSpec defines an Azure load balancer.",
+ "type": "object",
+ "properties": {
+ "apiServerLBStaticIP": {
+ "type": "string"
+ },
+ "ipAllocationMethod": {
+ "type": "string",
+ "default": "Dynamic",
+ "enum": [
+ "Static",
+ "Dynamic"
+ ]
+ },
+ "privateDNSName": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Load Balancer type",
+ "type": "string",
+ "default": "Public",
+ "enum": [
+ "Internal",
+ "Public"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "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": "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"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
- }
- },
- "v1ClusterGroupHostClusterConfig": {
- "properties": {
- "clusterUid": {
- "type": "string"
- },
- "endpointConfig": {
- "$ref": "#/definitions/v1HostClusterEndpointConfig",
- "description": "host cluster endpoint configuration"
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterGroupHostClusterEntity": {
- "description": "Clusters and clusters config of cluster group",
- "properties": {
- "clusterRefs": {
- "items": {
- "$ref": "#/definitions/v1ClusterGroupClusterRef"
+ "/v1/cloudconfigs/azure/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates an Azure cloud config's machine pool",
+ "operationId": "v1CloudConfigsAzureMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "Instance type stands for VMSize in Azure",
+ "type": "string"
+ },
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "managedPoolConfig": {
+ "type": "object",
+ "properties": {
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- }
- },
- "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
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
+ "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "clusterRefs": {
- "items": {
- "$ref": "#/definitions/v1ClusterGroupClusterRef"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified Azure cloud config's machine pool",
+ "operationId": "v1CloudConfigsAzureMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "Instance type stands for VMSize in Azure",
+ "type": "string"
+ },
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "managedPoolConfig": {
+ "type": "object",
+ "properties": {
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "array",
- "uniqueItems": true
- },
- "clustersConfig": {
- "$ref": "#/definitions/v1ClusterGroupClustersConfig"
- },
- "type": {
- "enum": [
- "hostCluster"
- ],
- "type": "string"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
- }
- },
- "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"
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "type": {
- "enum": [
- "hostCluster"
- ],
- "type": "string"
- }
- }
- },
- "v1ClusterGroupStatus": {
- "description": "Cluster group status",
- "properties": {
- "isActive": {
- "type": "boolean",
- "x-omitempty": false
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsAzureMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
- }
- },
- "v1ClusterGroupSummary": {
- "description": "Cluster group summay",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "spec": {
- "$ref": "#/definitions/v1ClusterGroupSummarySpec"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterGroupSummarySpec": {
- "description": "Cluster group summay spec",
- "properties": {
- "clusterProfileTemplates": {
- "items": {
- "$ref": "#/definitions/v1ClusterProfileTemplateMeta"
+ "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "cpu": {
- "$ref": "#/definitions/v1ClusterGroupResource",
- "description": "Deprecated"
- },
- "endpointType": {
- "enum": [
- "Ingress",
- "LoadBalancer"
- ],
- "type": "string"
- },
- "hostClusters": {
- "items": {
- "$ref": "#/definitions/v1ObjectResReference"
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns all the Azure machines restricted to the user role and filters.",
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of Azure machines",
+ "operationId": "v1CloudConfigsAzurePoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
},
- "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": "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.",
+ "name": "filters",
+ "in": "query"
},
- "type": "array",
- "uniqueItems": true
- }
- },
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1ClusterGroupsHostClusterSummary": {
- "properties": {
- "summaries": {
- "items": {
- "$ref": "#/definitions/v1ClusterGroupSummary"
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
},
- "type": "array",
- "uniqueItems": true
- }
- },
- "required": [
- "summaries"
- ],
- "type": "object"
- },
- "v1ClusterHelmChart": {
- "description": "Cluster helm chart metadata",
- "properties": {
- "localName": {
- "type": "string"
- },
- "matchedRegistries": {
- "items": {
- "$ref": "#/definitions/v1ClusterHelmRegistry"
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
},
- "type": "array",
- "uniqueItems": true
- },
- "name": {
- "type": "string"
- },
- "values": {
- "type": "string"
- },
- "version": {
- "type": "string"
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of AWS machine items",
+ "schema": {
+ "description": "Azure machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Azure cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Azure cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "location",
+ "osDisk"
+ ],
+ "properties": {
+ "additionalTags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "allocatePublicIP": {
+ "type": "boolean"
+ },
+ "availabilityZone": {
+ "description": "Azure Machine Spec Availability zone",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ },
+ "image": {
+ "description": "Azure Machine Spec Image",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "location": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "sshPublicKey": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
}
- }
- },
- "v1ClusterHelmCharts": {
- "description": "Cluster helm charts metadata",
- "properties": {
- "charts": {
- "items": {
- "$ref": "#/definitions/v1ClusterHelmChart"
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsAzurePoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Azure cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "location",
+ "osDisk"
+ ],
+ "properties": {
+ "additionalTags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "allocatePublicIP": {
+ "type": "boolean"
+ },
+ "availabilityZone": {
+ "description": "Azure Machine Spec Availability zone",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ },
+ "image": {
+ "description": "Azure Machine Spec Image",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "location": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "sshPublicKey": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- }
- },
- "v1ClusterHelmRegistry": {
- "description": "Cluster helm registry information",
- "properties": {
- "name": {
- "type": "string"
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "uid": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
+ "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns a Azure machine for the specified uid.",
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified Azure machine",
+ "operationId": "v1CloudConfigsAzurePoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Azure cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Azure cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "location",
+ "osDisk"
+ ],
+ "properties": {
+ "additionalTags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "allocatePublicIP": {
+ "type": "boolean"
+ },
+ "availabilityZone": {
+ "description": "Azure Machine Spec Availability zone",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ },
+ "image": {
+ "description": "Azure Machine Spec Image",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "location": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "sshPublicKey": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsAzurePoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Azure cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "location",
+ "osDisk"
+ ],
+ "properties": {
+ "additionalTags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "allocatePublicIP": {
+ "type": "boolean"
+ },
+ "availabilityZone": {
+ "description": "Azure Machine Spec Availability zone",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ },
+ "image": {
+ "description": "Azure Machine Spec Image",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "location": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "sshPublicKey": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "object"
- },
- "requestUid": {
- "type": "string"
- },
- "scanTime": {
- "$ref": "#/definitions/v1ClusterScanTime"
- },
- "state": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
- }
- },
- "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"
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified Azure machine",
+ "operationId": "v1CloudConfigsAzurePoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object"
- },
- "v1ClusterLogFetcher": {
- "description": "Cluster Log Fetcher",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "spec": {
- "$ref": "#/definitions/v1ClusterLogFetcherSpec"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
},
- "status": {
- "$ref": "#/definitions/v1ClusterLogFetcherStatus"
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterLogFetcherK8sRequest": {
- "description": "Cluster Log Fetcher K8s",
- "properties": {
- "labelSelector": {
- "items": {
- "type": "string"
+ "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified Custom cloud config",
+ "operationId": "v1CloudConfigsCustomGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "CustomCloudConfig is the Schema for the custom cloudconfigs API",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Cloud type of the cloud config",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "CustomCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "values"
+ ],
+ "properties": {
+ "values": {
+ "description": "YAML string for Cluster and CloudCluster",
+ "type": "string"
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "isControlPlane"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
},
- "namespaces": {
- "items": {
- "type": "string"
- },
- "type": "array",
- "uniqueItems": true
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterLogFetcherNodeRequest": {
- "description": "Cluster Log Fetcher Node Request",
- "properties": {
- "logs": {
- "description": "Array of logs",
- "items": {
- "type": "string"
+ "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsCustomUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Custom cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "values"
+ ],
+ "properties": {
+ "values": {
+ "description": "YAML string for Cluster and CloudCluster",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
- }
- },
- "v1ClusterLogFetcherSpec": {
- "description": "Cluster Log Fetcher Spec",
- "properties": {
- "clusterUid": {
- "type": "string"
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
},
- "log": {
- "type": "string"
- }
- }
- },
- "v1ClusterLogFetcherStatus": {
- "description": "Cluster Log Fetcher Status",
- "properties": {
- "state": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
+ "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates an Custom cloud config's machine pool",
+ "operationId": "v1CloudConfigsCustomMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "values": {
+ "description": "Machine pool configuration as yaml content",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the custom cluster",
+ "type": "object",
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "isControlPlane": {
+ "description": "Whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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": "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
},
- "spec": {
- "$ref": "#/definitions/v1ClusterNamespaceSpec"
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1ClusterNamespaceResources": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1ClusterNamespaceResource"
+ "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified Custom cloud config's machine pool",
+ "operationId": "v1CloudConfigsCustomMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "values": {
+ "description": "Machine pool configuration as yaml content",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the custom cluster",
+ "type": "object",
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "isControlPlane": {
+ "description": "Whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1ClusterNamespaceResourcesUpdateEntity": {
- "properties": {
- "namespaces": {
- "items": {
- "$ref": "#/definitions/v1ClusterNamespaceResourceInputEntity"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsCustomMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object"
- },
- "v1ClusterNamespaceSpec": {
- "description": "Cluster namespace spec",
- "properties": {
- "isRegex": {
- "type": "boolean",
- "x-omitempty": false
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
},
- "relatedObject": {
- "$ref": "#/definitions/v1RelatedObject"
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "resourceAllocation": {
- "$ref": "#/definitions/v1ClusterNamespaceResourceAllocation"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterNamespaceStatus": {
- "description": "Cluster namespace status",
- "properties": {
- "errors": {
- "items": {
- "$ref": "#/definitions/v1ClusterResourceError"
+ "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- }
- }
- },
- "v1ClusterNamespaces": {
- "description": "Cluster's available namespaces",
- "properties": {
- "namespaces": {
- "items": {
- "$ref": "#/definitions/v1ClusterNamespace"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of Custom machines",
+ "operationId": "v1CloudConfigsCustomPoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
},
- "type": "array"
- }
- }
- },
- "v1ClusterNotificationUpdateEntity": {
- "description": "Cluster input for notification update",
- "properties": {
- "profiles": {
- "items": {
- "$ref": "#/definitions/v1ClusterProfileNotificationUpdateEntity"
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
},
- "type": "array",
- "uniqueItems": true
- },
- "spcApplySettings": {
- "$ref": "#/definitions/v1SpcApplySettings"
- }
- },
- "type": "object"
- },
- "v1ClusterPackManifestStatus": {
- "properties": {
- "condition": {
- "$ref": "#/definitions/v1ClusterCondition"
- },
- "name": {
- "type": "string"
- },
- "uid": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of Custom machine items",
+ "schema": {
+ "description": "List of Custom machines",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Custom cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Custom cloud VM definition spec",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "hostName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a custom machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a custom machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number in a custom machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Custom network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "v1ClusterPackStatus": {
- "properties": {
- "condition": {
- "$ref": "#/definitions/v1ClusterCondition"
- },
- "endTime": {
- "$ref": "#/definitions/v1Time"
- },
- "manifests": {
- "items": {
- "$ref": "#/definitions/v1ClusterPackManifestStatus"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "name": {
- "type": "string"
- },
- "profileUid": {
- "type": "string"
- },
- "services": {
- "items": {
- "$ref": "#/definitions/v1LoadBalancerService"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsCustomPoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Custom cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Custom cloud VM definition spec",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "hostName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a custom machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a custom machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number in a custom machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Custom network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
- },
- "startTime": {
- "$ref": "#/definitions/v1Time"
- },
- "type": {
- "type": "string"
- },
- "version": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
},
- "healthPollIntervalInMinutes": {
- "description": "clusters health poll interval",
- "maximum": 60,
- "minimum": 3,
- "type": "integer"
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "monitorIntervalInMinutes": {
- "description": "clusters state and consistency monitor",
- "type": "integer"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterProfile": {
- "description": "ClusterProfile is the Schema for the clusterprofiles API",
- "properties": {
- "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/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1ClusterProfileSpec"
- },
- "status": {
- "$ref": "#/definitions/v1ClusterProfileStatus"
+ "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified Custom machine",
+ "operationId": "v1CloudConfigsCustomPoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Custom cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Custom cloud VM definition spec",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "hostName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a custom machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a custom machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number in a custom machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Custom network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1ClusterProfileCloneEntity": {
- "description": "Cluster profile clone request payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ClusterProfileCloneMetaInputEntity"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to the cloud config's machine pool",
+ "operationId": "v1CloudConfigsCustomPoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Custom cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Custom cloud VM definition spec",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "hostName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a custom machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a custom machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number in a custom machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Custom network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified Custom machine",
+ "operationId": "v1CloudConfigsCustomPoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "required": [
- "name"
- ],
- "type": "object"
- },
- "v1ClusterProfileCloneTarget": {
- "description": "Cluster profile clone meta input entity",
- "properties": {
- "projectUid": {
- "description": "Cloned cluster profile project uid",
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
},
- "scope": {
- "$ref": "#/definitions/v1Scope"
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
}
- },
- "required": [
- "scope"
- ],
- "type": "object"
+ ]
},
- "v1ClusterProfileEntity": {
- "description": "Cluster profile request payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "properties": {
- "template": {
- "$ref": "#/definitions/v1ClusterProfileTemplateDraft"
- },
- "version": {
- "description": "Cluster profile version",
- "type": "string"
- }
+ "/v1/cloudconfigs/coxedge/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "object"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified CoxEdge cloud config",
+ "operationId": "v1CloudConfigsCoxEdgeGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "CoxEdgeCloudConfig is the Schema for the coxedgecloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "CoxEdgeCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "sshAuthorizedKeys",
+ "coxEdgeLoadBalancerConfig"
+ ],
+ "properties": {
+ "coxEdgeLoadBalancerConfig": {
+ "description": "CoxEdge loadbalancer config",
+ "type": "object",
+ "properties": {
+ "pops": {
+ "description": "CoxEdge PoPs - geographical location for the loadbalancer",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "coxEdgeWorkerLoadBalancerConfig": {
+ "description": "CoxEdge loadbalancer config",
+ "type": "object",
+ "properties": {
+ "pops": {
+ "description": "CoxEdge PoPs - geographical location for the loadbalancer",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "environment": {
+ "type": "string"
+ },
+ "organizationId": {
+ "type": "string"
+ },
+ "sshAuthorizedKeys": {
+ "description": "CoxEdge ssh authorized keys",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "isControlPlane"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "deployments": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cpuUtilization": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "enableAutoScaling": {
+ "type": "boolean"
+ },
+ "instancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "minInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "pops": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean"
+ },
+ "labels": {
+ "description": "labels for this pool, example: master/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "persistentStorages": {
+ "description": "Array of coxedge load persistent storages",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "CoxEdge load persistent storage",
+ "type": "object",
+ "properties": {
+ "path": {
+ "description": "Coxedge load persistent storage path",
+ "type": "string"
+ },
+ "size": {
+ "description": "Coxedge load persistent storage size",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ }
+ },
+ "securityGroupRules": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "block",
+ "allow"
+ ]
+ },
+ "description": {
+ "type": "string"
+ },
+ "portRange": {
+ "type": "string"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "TCP",
+ "UDP",
+ "TCP_UDP",
+ "ESP",
+ "AH",
+ "ICMP",
+ "GRE"
+ ]
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "spec": {
+ "type": "string"
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "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",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "imageID": {
+ "description": "For mold controller to identify if is there any changes in Pack",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1ClusterProfileFilterSpec": {
- "description": "Cluster profile filter spec",
- "properties": {
- "environment": {
- "items": {
- "type": "string"
+ "/v1/cloudconfigs/coxedge/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "fips": {
- "$ref": "#/definitions/v1ClusterFipsMode"
- },
- "profileName": {
- "$ref": "#/definitions/v1FilterString"
- },
- "profileType": {
- "items": {
- "$ref": "#/definitions/v1ProfileType"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsCoxEdgeUidClusterConfigUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "CoxEdge cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "sshAuthorizedKeys",
+ "coxEdgeLoadBalancerConfig"
+ ],
+ "properties": {
+ "coxEdgeLoadBalancerConfig": {
+ "description": "CoxEdge loadbalancer config",
+ "type": "object",
+ "properties": {
+ "pops": {
+ "description": "CoxEdge PoPs - geographical location for the loadbalancer",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "coxEdgeWorkerLoadBalancerConfig": {
+ "description": "CoxEdge loadbalancer config",
+ "type": "object",
+ "properties": {
+ "pops": {
+ "description": "CoxEdge PoPs - geographical location for the loadbalancer",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "environment": {
+ "type": "string"
+ },
+ "organizationId": {
+ "type": "string"
+ },
+ "sshAuthorizedKeys": {
+ "description": "CoxEdge ssh authorized keys",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
},
- "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1ClusterProfileMetadata": {
- "description": "Cluster profile filter spec",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectEntity"
- },
- "spec": {
- "properties": {
- "cloudType": {
- "type": "string"
+ "/v1/cloudconfigs/coxedge/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates a CoxEdge cloud config's machine pool",
+ "operationId": "v1CloudConfigsCoxEdgeMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "deployments": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cpuUtilization": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "enableAutoScaling": {
+ "type": "boolean"
+ },
+ "instancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "minInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "pops": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "persistentStorages": {
+ "description": "Array of coxedge load persistent storages",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "CoxEdge load persistent storage",
+ "type": "object",
+ "properties": {
+ "path": {
+ "description": "Coxedge load persistent storage path",
+ "type": "string"
+ },
+ "size": {
+ "description": "Coxedge load persistent storage size",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ }
+ },
+ "securityGroupRules": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "block",
+ "allow"
+ ]
+ },
+ "description": {
+ "type": "string"
+ },
+ "portRange": {
+ "type": "string"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "TCP",
+ "UDP",
+ "TCP_UDP",
+ "ESP",
+ "AH",
+ "ICMP",
+ "GRE"
+ ]
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "spec": {
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
},
- "version": {
- "type": "string"
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
}
}
}
- }
- },
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1ClusterProfileNotificationUpdateEntity": {
- "description": "Cluster profile notification update request payload",
- "properties": {
- "packs": {
- "description": "Cluster profile packs array",
- "items": {
- "$ref": "#/definitions/v1PackManifestUpdateEntity"
+ "/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "uid": {
- "description": "Cluster profile uid",
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified CoxEdge cloud config's machine pool",
+ "operationId": "v1CloudConfigsCoxEdgeMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "deployments": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cpuUtilization": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "enableAutoScaling": {
+ "type": "boolean"
+ },
+ "instancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "minInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "pops": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "persistentStorages": {
+ "description": "Array of coxedge load persistent storages",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "CoxEdge load persistent storage",
+ "type": "object",
+ "properties": {
+ "path": {
+ "description": "Coxedge load persistent storage path",
+ "type": "string"
+ },
+ "size": {
+ "description": "Coxedge load persistent storage size",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ }
+ },
+ "securityGroupRules": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "block",
+ "allow"
+ ]
+ },
+ "description": {
+ "type": "string"
+ },
+ "portRange": {
+ "type": "string"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "TCP",
+ "UDP",
+ "TCP_UDP",
+ "ESP",
+ "AH",
+ "ICMP",
+ "GRE"
+ ]
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "spec": {
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1ClusterProfilePackConfigList": {
- "properties": {
- "items": {
- "description": "Cluster profile packs array",
- "items": {
- "$ref": "#/definitions/v1PackConfig"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsCoxEdgeMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1ClusterProfilePackManifests": {
- "description": "Cluster profile pack manifests",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1PackManifestsSpec"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "status": {
- "$ref": "#/definitions/v1PackSummaryStatus"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of CoxEdge machines",
+ "operationId": "v1CloudConfigsCoxEdgePoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of CoxEdge machine items",
+ "schema": {
+ "description": "CoxEdge machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "CoxEdge cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "CoxEdge cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "addAnycastIpAddress": {
+ "type": "boolean"
+ },
+ "deployments": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cpuUtilization": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "enableAutoScaling": {
+ "type": "boolean"
+ },
+ "instancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "minInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "pops": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "image": {
+ "type": "string"
+ },
+ "persistentStorages": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge load persistent storage",
+ "type": "object",
+ "properties": {
+ "path": {
+ "description": "Coxedge load persistent storage path",
+ "type": "string"
+ },
+ "size": {
+ "description": "Coxedge load persistent storage size",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ }
+ },
+ "ports": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge network port",
+ "type": "object",
+ "properties": {
+ "protocol": {
+ "type": "string"
+ },
+ "publicPort": {
+ "type": "string"
+ },
+ "publicPortDesc": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "providerId": {
+ "type": "string"
+ },
+ "specs": {
+ "type": "string"
+ },
+ "sshAuthorizedKeys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "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
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsCoxEdgePoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "CoxEdge cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "CoxEdge cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "addAnycastIpAddress": {
+ "type": "boolean"
+ },
+ "deployments": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cpuUtilization": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "enableAutoScaling": {
+ "type": "boolean"
+ },
+ "instancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "minInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "pops": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "image": {
+ "type": "string"
+ },
+ "persistentStorages": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge load persistent storage",
+ "type": "object",
+ "properties": {
+ "path": {
+ "description": "Coxedge load persistent storage path",
+ "type": "string"
+ },
+ "size": {
+ "description": "Coxedge load persistent storage size",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ }
+ },
+ "ports": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge network port",
+ "type": "object",
+ "properties": {
+ "protocol": {
+ "type": "string"
+ },
+ "publicPort": {
+ "type": "string"
+ },
+ "publicPortDesc": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "providerId": {
+ "type": "string"
+ },
+ "specs": {
+ "type": "string"
+ },
+ "sshAuthorizedKeys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "order": {
- "$ref": "#/definitions/v1SortOrder"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
+ "/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified CoxEdge machine",
+ "operationId": "v1CloudConfigsCoxEdgePoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "CoxEdge cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "CoxEdge cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "addAnycastIpAddress": {
+ "type": "boolean"
+ },
+ "deployments": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cpuUtilization": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "enableAutoScaling": {
+ "type": "boolean"
+ },
+ "instancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "minInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "pops": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "image": {
+ "type": "string"
+ },
+ "persistentStorages": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge load persistent storage",
+ "type": "object",
+ "properties": {
+ "path": {
+ "description": "Coxedge load persistent storage path",
+ "type": "string"
+ },
+ "size": {
+ "description": "Coxedge load persistent storage size",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ }
+ },
+ "ports": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge network port",
+ "type": "object",
+ "properties": {
+ "protocol": {
+ "type": "string"
+ },
+ "publicPort": {
+ "type": "string"
+ },
+ "publicPortDesc": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "providerId": {
+ "type": "string"
+ },
+ "specs": {
+ "type": "string"
+ },
+ "sshAuthorizedKeys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1ClusterProfileSpecEntity": {
- "description": "Cluster profile update spec",
- "properties": {
- "version": {
- "description": "Cluster profile version",
- "type": "string"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to the cloud config's machine pool",
+ "operationId": "v1CloudConfigsCoxEdgePoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "CoxEdge cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "CoxEdge cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "addAnycastIpAddress": {
+ "type": "boolean"
+ },
+ "deployments": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cpuUtilization": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "enableAutoScaling": {
+ "type": "boolean"
+ },
+ "instancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "minInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "pops": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "image": {
+ "type": "string"
+ },
+ "persistentStorages": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge load persistent storage",
+ "type": "object",
+ "properties": {
+ "path": {
+ "description": "Coxedge load persistent storage path",
+ "type": "string"
+ },
+ "size": {
+ "description": "Coxedge load persistent storage size",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ }
+ },
+ "ports": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge network port",
+ "type": "object",
+ "properties": {
+ "protocol": {
+ "type": "string"
+ },
+ "publicPort": {
+ "type": "string"
+ },
+ "publicPortDesc": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "providerId": {
+ "type": "string"
+ },
+ "specs": {
+ "type": "string"
+ },
+ "sshAuthorizedKeys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1ClusterProfileSpecImportEntity": {
- "description": "Cluster profile import spec",
- "properties": {
- "template": {
- "$ref": "#/definitions/v1ClusterProfileTemplateImportEntity"
- },
- "version": {
- "description": "Cluster profile version",
- "type": "string"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified CoxEdge machine",
+ "operationId": "v1CloudConfigsCoxEdgePoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "inUseClusters": {
- "items": {
- "$ref": "#/definitions/v1ObjectResReference"
- },
- "type": "array"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
},
- "isPublished": {
- "type": "boolean",
- "x-omitempty": false
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/cloudconfigs/edge-native/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "isPublished": {
- "type": "boolean",
- "x-omitempty": false
- },
- "pack": {
- "$ref": "#/definitions/v1ClusterProfilePackSummary"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified edge-native cloud config",
+ "operationId": "v1CloudConfigsEdgeNativeGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "EdgeNativeCloudConfig is the Schema for the edgenativecloudconfigs API",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeNativeCloudConfigSpec defines the desired state of EdgeNativeCloudConfig",
+ "type": "object",
+ "required": [
+ "clusterConfig",
+ "machinePoolConfig"
+ ],
+ "properties": {
+ "clusterConfig": {
+ "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "overlayNetworkConfiguration": {
+ "type": "object",
+ "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
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "hosts"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "AdditionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "hosts": {
+ "type": "array",
+ "items": {
+ "description": "EdgeNativeHost is the underlying appliance",
+ "type": "object",
+ "required": [
+ "hostUid",
+ "hostAddress"
+ ],
+ "properties": {
+ "IsCandidateCaption": {
+ "description": "Is Edge host nominated as candidate",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ },
+ "caCert": {
+ "description": "CACert for TLS connections",
+ "type": "string"
+ },
+ "hostAddress": {
+ "description": "HostAddress is a FQDN or IP address of the Host",
+ "type": "string",
+ "default": ""
+ },
+ "hostName": {
+ "description": "Qualified name of host",
+ "type": "string",
+ "default": ""
+ },
+ "hostUid": {
+ "description": "HostUid is the ID of the EdgeHost",
+ "type": "string",
+ "default": ""
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "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",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ }
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean"
+ },
+ "labels": {
+ "description": "labels for this pool, example: master/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "EdgeNativeCloudConfigStatus defines the observed state of EdgeNativeCloudConfig",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "nodeImage": {
+ "type": "string"
+ },
+ "sourceImageId": {
+ "description": "SourceImageId can be from packref's annotations or from pack.json",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/cloudconfigs/edge-native/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsEdgeNativeUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "EdgeNative cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "overlayNetworkConfiguration": {
+ "type": "object",
+ "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
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "status": {
- "$ref": "#/definitions/v1ClusterProfileStatusSummary"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/cloudconfigs/edge-native/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates a edge-native cloud config's machine pool",
+ "operationId": "v1CloudConfigsEdgeNativeMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
+ "properties": {
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "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",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "type": {
- "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified edge-native cloud config's machine pool",
+ "operationId": "v1CloudConfigsEdgeNativeMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
+ "properties": {
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "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",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsEdgeNativeMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object"
- },
- "v1ClusterProfileTemplateSummary": {
- "description": "Cluster profile template summary",
- "properties": {
- "cloudType": {
- "type": "string"
- },
- "packs": {
- "items": {
- "$ref": "#/definitions/v1PackRefSummary"
- },
- "type": "array"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "type": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1ClusterProfileTemplateUpdate": {
- "description": "Cluster profile template update spec",
- "properties": {
- "packs": {
- "description": "Cluster profile packs array",
- "items": {
- "$ref": "#/definitions/v1PackManifestUpdateEntity"
+ "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "type": {
- "$ref": "#/definitions/v1ProfileType"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of edge-native machines",
+ "operationId": "v1CloudConfigsEdgeNativePoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of edge-native machine items",
+ "schema": {
+ "description": "EdgeNative machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeNative cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "EdgeNativeInstanceType defines the instance configuration for a docker container node",
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "description": "Name is the instance name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Generic network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the edge-native machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsEdgeNativePoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeNative cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "EdgeNativeInstanceType defines the instance configuration for a docker container node",
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "description": "Name is the instance name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Generic network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- }
- },
- "type": "object"
- },
- "v1ClusterProfileValidatorResponse": {
- "description": "Cluster profile validator response",
- "properties": {
- "packs": {
- "$ref": "#/definitions/v1ConstraintValidatorResponse"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1ClusterProfileVersion": {
- "description": "Cluster profile with version",
- "properties": {
- "uid": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "version": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterProfiles": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1ClusterProfile"
+ "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified edge-native machine",
+ "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeNative cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "EdgeNativeInstanceType defines the instance configuration for a docker container node",
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "description": "Name is the instance name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Generic network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1ClusterProfilesFilterSpec": {
- "description": "Spectro cluster filter summary spec",
- "properties": {
- "filter": {
- "$ref": "#/definitions/v1ClusterProfileFilterSpec"
- },
- "sort": {
- "items": {
- "$ref": "#/definitions/v1ClusterProfileSortSpec"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- }
- }
- },
- "v1ClusterProfilesMetadata": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1ClusterProfileMetadata"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeNative cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "EdgeNativeInstanceType defines the instance configuration for a docker container node",
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "description": "Name is the instance name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Generic network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array",
- "uniqueItems": true
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1ClusterProfilesSummary": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1ClusterProfileSummary"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified edge-native machine",
+ "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1ClusterProxySpec": {
- "description": "cluster proxy config spec",
- "properties": {
- "caContainerMountPath": {
- "description": "Location to mount Proxy CA cert inside container",
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "caHostPath": {
- "description": "Location for Proxy CA cert on host nodes",
- "type": "string"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
},
- "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": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1ClusterRbacBinding": {
- "description": "Cluster RBAC binding",
- "properties": {
- "namespace": {
- "type": "string"
- },
- "role": {
- "$ref": "#/definitions/v1ClusterRoleRef"
- },
- "subjects": {
- "items": {
- "$ref": "#/definitions/v1ClusterRbacSubjects"
+ "/v1/cloudconfigs/edge/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "type": {
- "enum": [
- "RoleBinding",
- "ClusterRoleBinding"
- ],
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified edge cloud config",
+ "operationId": "v1CloudConfigsEdgeGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "EdgeCloudConfig is the Schema for the Edgecloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeCloudConfigSpec defines the desired state of EdgeCloudConfig",
+ "type": "object",
+ "required": [
+ "clusterConfig",
+ "machinePoolConfig"
+ ],
+ "properties": {
+ "clusterConfig": {
+ "description": "EdgeClusterConfig defines Edge Cluster specific Spec",
+ "type": "object",
+ "properties": {
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "hosts"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "hosts": {
+ "type": "array",
+ "items": {
+ "description": "EdgeHost of Edge clusters",
+ "type": "object",
+ "required": [
+ "hostUid",
+ "hostAddress"
+ ],
+ "properties": {
+ "hostAddress": {
+ "description": "HostAddress is a FQDN or IP address of the Host",
+ "type": "string"
+ },
+ "hostIdentity": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "hostName": {
+ "description": "HostName is the name of the EdgeHost",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "HostUid is the ID of the EdgeHost",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean"
+ },
+ "labels": {
+ "description": "labels for this pool, example: master/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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"
- },
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1ClusterRbacResourcesUpdateEntity": {
- "properties": {
- "rbacs": {
- "items": {
- "$ref": "#/definitions/v1ClusterRbacInputEntity"
+ "/v1/cloudconfigs/edge/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- }
- },
- "type": "object"
- },
- "v1ClusterRbacSpec": {
- "description": "Cluster RBAC spec",
- "properties": {
- "bindings": {
- "items": {
- "$ref": "#/definitions/v1ClusterRbacBinding"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsEdgeUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "EdgeClusterConfig defines Edge Cluster specific Spec",
+ "type": "object",
+ "properties": {
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array",
- "uniqueItems": true
- },
- "relatedObject": {
- "$ref": "#/definitions/v1RelatedObject"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1ClusterRbacStatus": {
- "description": "Cluster rbac status",
- "properties": {
- "errors": {
- "items": {
- "$ref": "#/definitions/v1ClusterResourceError"
- },
- "type": "array",
- "uniqueItems": true
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterRbacSubjects": {
- "description": "Cluster role ref",
- "properties": {
- "name": {
- "type": "string"
- },
- "namespace": {
- "type": "string"
- },
- "type": {
- "enum": [
- "User",
- "Group",
- "ServiceAccount"
- ],
- "type": "string"
+ "/v1/cloudconfigs/edge/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates a edge cloud config's machine pool",
+ "operationId": "v1CloudConfigsEdgeMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
+ "properties": {
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostUid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1ClusterRbacs": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1ClusterRbac"
+ "/v1/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified Edge cloud config's machine pool",
+ "operationId": "v1CloudConfigsEdgeMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
+ "properties": {
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostUid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1ClusterRefs": {
- "description": "Cluster Object References",
- "properties": {
- "clusters": {
- "items": {
- "$ref": "#/definitions/v1ObjectReference"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- }
- }
- },
- "v1ClusterRepaveSource": {
- "enum": [
- "user",
- "hubble",
- "palette",
- "stylus"
- ],
- "type": "string"
- },
- "v1ClusterRepaveState": {
- "default": "Pending",
- "enum": [
- "Pending",
- "Approved",
- "InProgress",
- "Completed"
- ],
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsEdgeMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
- }
- },
- "v1ClusterResourceError": {
- "description": "Cluster resource error",
- "properties": {
- "msg": {
- "type": "string"
- },
- "name": {
- "type": "string"
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "resourceType": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterResources": {
- "properties": {
- "namespaces": {
- "description": "Cluster namespaces",
- "items": {
- "$ref": "#/definitions/v1ResourceReference"
- },
- "type": "array"
- },
- "rbacs": {
- "description": "Cluster RBAC role bindings",
- "items": {
- "$ref": "#/definitions/v1ResourceReference"
+ "/v1/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of Edge machines",
+ "operationId": "v1CloudConfigsEdgePoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of Edge machine items",
+ "schema": {
+ "description": "Edge machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Edge cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Edge cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "bootstrapped": {
+ "type": "boolean"
+ },
+ "customImage": {
+ "type": "string"
+ },
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "EdgeInstanceType defines the instance configuration for a docker container node",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "loadBalancerConfigured": {
+ "type": "boolean"
+ },
+ "mounts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Edge mounts",
+ "type": "object",
+ "properties": {
+ "containerPath": {
+ "type": "string"
+ },
+ "hostPath": {
+ "type": "string"
+ },
+ "readonly": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1ClusterResourcesEntity": {
- "properties": {
- "namespaces": {
- "items": {
- "$ref": "#/definitions/v1ClusterNamespaceResourceInputEntity"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "rbacs": {
- "items": {
- "$ref": "#/definitions/v1ClusterRbacInputEntity"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the Edge machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsEdgePoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Edge cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "bootstrapped": {
+ "type": "boolean"
+ },
+ "customImage": {
+ "type": "string"
+ },
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "EdgeInstanceType defines the instance configuration for a docker container node",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "loadBalancerConfigured": {
+ "type": "boolean"
+ },
+ "mounts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Edge mounts",
+ "type": "object",
+ "properties": {
+ "containerPath": {
+ "type": "string"
+ },
+ "hostPath": {
+ "type": "string"
+ },
+ "readonly": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array",
- "uniqueItems": true
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1ClusterRestore": {
- "description": "Cluster Restore",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1ClusterRestoreSpec"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "status": {
- "$ref": "#/definitions/v1ClusterRestoreStatus"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterRestoreConfig": {
- "description": "Cluster restore config",
- "properties": {
- "backupName": {
- "type": "string"
- },
- "backupRequestUid": {
- "type": "string"
- },
- "destinationClusterUid": {
- "type": "string"
- },
- "includeClusterResources": {
- "type": "boolean"
- },
- "includeNamespaces": {
- "items": {
- "type": "string"
+ "/v1/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "preserveNodePorts": {
- "type": "boolean"
- },
- "restorePVs": {
- "type": "boolean"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified Edge machine",
+ "operationId": "v1CloudConfigsEdgePoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Edge cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Edge cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "bootstrapped": {
+ "type": "boolean"
+ },
+ "customImage": {
+ "type": "string"
+ },
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "EdgeInstanceType defines the instance configuration for a docker container node",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "loadBalancerConfigured": {
+ "type": "boolean"
+ },
+ "mounts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Edge mounts",
+ "type": "object",
+ "properties": {
+ "containerPath": {
+ "type": "string"
+ },
+ "hostPath": {
+ "type": "string"
+ },
+ "readonly": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "backupRequestUid",
- "backupName",
- "destinationClusterUid"
- ]
- },
- "v1ClusterRestoreSpec": {
- "description": "Cluster Restore Spec",
- "properties": {
- "clusterUid": {
- "type": "string"
- }
- }
- },
- "v1ClusterRestoreStatus": {
- "description": "Cluster Restore Status",
- "properties": {
- "clusterRestoreStatuses": {
- "items": {
- "$ref": "#/definitions/v1ClusterRestoreStatusMeta"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsEdgePoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Edge cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "bootstrapped": {
+ "type": "boolean"
+ },
+ "customImage": {
+ "type": "string"
+ },
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "EdgeInstanceType defines the instance configuration for a docker container node",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "loadBalancerConfigured": {
+ "type": "boolean"
+ },
+ "mounts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Edge mounts",
+ "type": "object",
+ "properties": {
+ "containerPath": {
+ "type": "string"
+ },
+ "hostPath": {
+ "type": "string"
+ },
+ "readonly": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified Edge machine",
+ "operationId": "v1CloudConfigsEdgePoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
- }
- },
- "v1ClusterScanLogSyft": {
- "description": "Cluster Compliance Scan Syft Log",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1ClusterComplianceScanLogSpec"
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "status": {
- "$ref": "#/definitions/v1ClusterSyftLogStatus"
- }
- }
- },
- "v1ClusterScanTime": {
- "description": "Cluster compliance scan Time",
- "properties": {
- "endTime": {
- "$ref": "#/definitions/v1Time"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
},
- "startTime": {
- "$ref": "#/definitions/v1Time"
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterSearchInputSpec": {
- "properties": {
- "inputs": {
- "additionalProperties": {
- "$ref": "#/definitions/v1ClusterSearchInputSpecProperty"
+ "/v1/cloudconfigs/eks/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "object"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified EKS cloud config",
+ "operationId": "v1CloudConfigsEksGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "EksCloudConfig is the Schema for the ekscloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EksCloudConfigSpec defines the cloud configuration input by user",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "EksClusterConfig defines EKS specific config",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "properties": {
+ "addons": {
+ "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters",
+ "type": "array",
+ "items": {
+ "description": "EksAddon represents a EKS addon",
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "endpointAccess": {
+ "description": "EndpointAccess specifies how control plane endpoints are accessible",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "public": {
+ "description": "Public controls whether control plane endpoints are publicly accessible",
+ "type": "boolean"
+ },
+ "publicCIDRs": {
+ "description": "PublicCIDRs specifies which blocks can access the public endpoint",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "fargateProfiles": {
+ "type": "array",
+ "items": {
+ "description": "FargateProfile defines the desired state of FargateProfile",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "name specifies the profile name.",
+ "type": "string"
+ },
+ "selectors": {
+ "description": "Selectors specify fargate pod selectors.",
+ "type": "array",
+ "items": {
+ "description": "FargateSelector specifies a selector for pods that should run on this fargate pool",
+ "type": "object",
+ "required": [
+ "namespace"
+ ],
+ "properties": {
+ "labels": {
+ "description": "Labels specifies which pod labels this selector should match.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "description": "Namespace specifies which namespace this selector should match.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "subnetIds": {
+ "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "isControlPlane"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "awsLaunchTemplate": {
+ "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group",
+ "type": "object",
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "description": "AMI is the reference to the AMI from which to create the machine instance",
+ "type": "object",
+ "properties": {
+ "eksOptimizedLookupType": {
+ "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store",
+ "type": "string",
+ "enum": [
+ "AmazonLinux",
+ "AmazonLinuxGPU"
+ ]
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "description": "Volume encapsulates the configuration options for the storage device.",
+ "type": "object",
+ "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",
+ "type": "integer",
+ "format": "int64"
+ },
+ "throughput": {
+ "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "type": {
+ "description": "Type is the type of the volume (e.g. gp2, io1, etc...)",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "azs": {
+ "description": "AZs is only used for dynamic placement",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "enableAwsLaunchTemplate": {
+ "description": "flag to know if aws launch template is enabled",
+ "type": "boolean"
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64"
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnetIds": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- }
- },
- "v1ClusterSearchInputSpecProperty": {
- "properties": {
- "values": {
- "items": {
- "$ref": "#/definitions/v1ObjectEntity"
- },
- "type": "array",
- "x-omitempty": true
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1ClusterSonobuoyLogStatus": {
- "description": "Cluster compliance scan Sonobuoy Log Status",
- "properties": {
- "actor": {
- "$ref": "#/definitions/v1ClusterFeatureActor"
- },
- "message": {
- "type": "string"
- },
- "reports": {
- "additionalProperties": {
- "$ref": "#/definitions/v1SonobuoyReport"
+ "/v1/cloudconfigs/eks/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsEksUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "EKS cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "EksClusterConfig defines EKS specific config",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "properties": {
+ "addons": {
+ "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters",
+ "type": "array",
+ "items": {
+ "description": "EksAddon represents a EKS addon",
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "endpointAccess": {
+ "description": "EndpointAccess specifies how control plane endpoints are accessible",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "public": {
+ "description": "Public controls whether control plane endpoints are publicly accessible",
+ "type": "boolean"
+ },
+ "publicCIDRs": {
+ "description": "PublicCIDRs specifies which blocks can access the public endpoint",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
},
- "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/cloudconfigs/eks/{configUid}/fargateProfiles": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates EKS cloud config's fargate profiles",
+ "operationId": "v1CloudConfigsEksUidFargateProfilesUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Fargate profiles",
+ "type": "object",
+ "properties": {
+ "fargateProfiles": {
+ "type": "array",
+ "items": {
+ "description": "FargateProfile defines the desired state of FargateProfile",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "name specifies the profile name.",
+ "type": "string"
+ },
+ "selectors": {
+ "description": "Selectors specify fargate pod selectors.",
+ "type": "array",
+ "items": {
+ "description": "FargateSelector specifies a selector for pods that should run on this fargate pool",
+ "type": "object",
+ "required": [
+ "namespace"
+ ],
+ "properties": {
+ "labels": {
+ "description": "Labels specifies which pod labels this selector should match.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "description": "Namespace specifies which namespace this selector should match.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "subnetIds": {
+ "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/cloudconfigs/eks/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates an EKS cloud config's machine pool",
+ "operationId": "v1CloudConfigsEksMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "cloudConfig": {
+ "properties": {
+ "awsLaunchTemplate": {
+ "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group",
+ "type": "object",
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "description": "AMI is the reference to the AMI from which to create the machine instance",
+ "type": "object",
+ "properties": {
+ "eksOptimizedLookupType": {
+ "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store",
+ "type": "string",
+ "enum": [
+ "AmazonLinux",
+ "AmazonLinuxGPU"
+ ]
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "description": "Volume encapsulates the configuration options for the storage device.",
+ "type": "object",
+ "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",
+ "type": "integer",
+ "format": "int64"
+ },
+ "throughput": {
+ "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "type": {
+ "description": "Type is the type of the volume (e.g. gp2, io1, etc...)",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "enableAwsLaunchTemplate": {
+ "description": "flag to know if aws launch template is enabled",
+ "type": "boolean"
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "required": [
- "template"
- ],
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified EKS cloud config's machine pool",
+ "operationId": "v1CloudConfigsEksMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "cloudConfig": {
+ "properties": {
+ "awsLaunchTemplate": {
+ "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group",
+ "type": "object",
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "description": "AMI is the reference to the AMI from which to create the machine instance",
+ "type": "object",
+ "properties": {
+ "eksOptimizedLookupType": {
+ "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store",
+ "type": "string",
+ "enum": [
+ "AmazonLinux",
+ "AmazonLinuxGPU"
+ ]
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "description": "Volume encapsulates the configuration options for the storage device.",
+ "type": "object",
+ "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",
+ "type": "integer",
+ "format": "int64"
+ },
+ "throughput": {
+ "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "type": {
+ "description": "Type is the type of the volume (e.g. gp2, io1, etc...)",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "enableAwsLaunchTemplate": {
+ "description": "flag to know if aws launch template is enabled",
+ "type": "boolean"
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsEksMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object",
- "x-nullable": true
- },
- "v1ClusterVirtualPacksValue": {
- "description": "Virtual cluster packs value",
- "properties": {
- "distroType": {
- "type": "string"
- },
- "layer": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "values": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1ClusterVirtualPacksValues": {
- "description": "Virtual cluster packs values",
- "properties": {
- "packs": {
- "items": {
- "$ref": "#/definitions/v1ClusterVirtualPacksValue"
+ "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1ClusterWorkload": {
- "description": "Cluster workload summary",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMetaInputEntity"
- },
- "spec": {
- "$ref": "#/definitions/v1ClusterWorkloadSpec"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of EKS machines",
+ "operationId": "v1CloudConfigsEksPoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of EKS machine items",
+ "schema": {
+ "description": "AWS machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "AWS cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "AWS cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "vpcId",
+ "ami"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "type": "string"
+ },
+ "az": {
+ "type": "string"
+ },
+ "dnsName": {
+ "type": "string"
+ },
+ "iamProfile": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "phase": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "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"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsEksPoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "AWS cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "AWS cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "vpcId",
+ "ami"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "type": "string"
+ },
+ "az": {
+ "type": "string"
+ },
+ "dnsName": {
+ "type": "string"
+ },
+ "iamProfile": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "phase": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1ClusterWorkloadCronJob": {
- "description": "Cluster workload cronjob summary",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ClusterWorkloadMetadata"
- },
- "spec": {
- "$ref": "#/definitions/v1ClusterWorkloadCronJobSpec"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "status": {
- "$ref": "#/definitions/v1ClusterWorkloadCronJobStatus"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1ClusterWorkloadCronJobSpec": {
- "description": "Cluster workload cronjob spec",
- "properties": {
- "schedule": {
- "type": "string"
+ "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified EKS machine",
+ "operationId": "v1CloudConfigsEksPoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "AWS cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "AWS cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "vpcId",
+ "ami"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "type": "string"
+ },
+ "az": {
+ "type": "string"
+ },
+ "dnsName": {
+ "type": "string"
+ },
+ "iamProfile": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "phase": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1ClusterWorkloadCronJobStatus": {
- "description": "Cluster workload cronjob status",
- "properties": {
- "lastScheduleTime": {
- "$ref": "#/definitions/v1Time"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to the cloud config's machine pool",
+ "operationId": "v1CloudConfigsEksPoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "AWS cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "AWS cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "vpcId",
+ "ami"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "type": "string"
+ },
+ "az": {
+ "type": "string"
+ },
+ "dnsName": {
+ "type": "string"
+ },
+ "iamProfile": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "AWS network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "phase": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1ClusterWorkloadCronJobs": {
- "description": "Cluster workload cronjobs summary",
- "properties": {
- "cronJobs": {
- "items": {
- "$ref": "#/definitions/v1ClusterWorkloadCronJob"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified EKS machine",
+ "operationId": "v1CloudConfigsEksPoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object"
- },
- "v1ClusterWorkloadDaemonSet": {
- "description": "Cluster workload daemonset summary",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ClusterWorkloadMetadata"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "status": {
- "$ref": "#/definitions/v1ClusterWorkloadDaemonSetStatus"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1ClusterWorkloadDaemonSetStatus": {
- "description": "Cluster workload daemonset status",
- "properties": {
- "available": {
- "format": "int32",
- "type": "integer"
- },
- "currentScheduled": {
- "format": "int32",
- "type": "integer"
+ "/v1/cloudconfigs/gcp/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified GCP cloud config",
+ "operationId": "v1CloudConfigsGcpGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "GcpCloudConfig is the Schema for the gcpcloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "GcpCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
+ "properties": {
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
+ "type": "object",
+ "properties": {
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
+ "type": "boolean"
+ },
+ "location": {
+ "description": "Can be Region or Zone",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "isControlPlane",
+ "instanceType"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "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",
+ "type": "object",
+ "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\"`",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "images": {
+ "description": "Refers to GCP image",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "os": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "isAddonLayer": {
+ "description": "addon layers present in spc",
+ "type": "boolean"
+ },
+ "roleDigest": {
+ "description": "this map will be for ansible roles present in each pack",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/gcp/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsGcpUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Gcp cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
+ "properties": {
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
+ "type": "object",
+ "properties": {
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
+ "type": "boolean"
+ },
+ "location": {
+ "description": "Can be Region or Zone",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/gcp/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates a Gcp cloud config's machine pool",
+ "operationId": "v1CloudConfigsGcpMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified GCP cloud config's machine pool",
+ "operationId": "v1CloudConfigsGcpMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsGcpMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "desiredScheduled": {
- "format": "int32",
- "type": "integer"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of GCP machines",
+ "operationId": "v1CloudConfigsGcpPoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of GCP machine items",
+ "schema": {
+ "description": "GCP machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "GCP cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "GCP cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "GCP network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "project": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "zone": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsGcpPoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "GCP cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "GCP cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "GCP network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "project": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "zone": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "misScheduled": {
- "format": "int32",
- "type": "integer"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified GCP machine",
+ "operationId": "v1CloudConfigsGcpPoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "GCP cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "GCP cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "GCP network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "project": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "zone": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to the cloud config's machine pool",
+ "operationId": "v1CloudConfigsGcpPoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "GCP cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "GCP cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "GCP network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "project": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "zone": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified GCP machine",
+ "operationId": "v1CloudConfigsGcpPoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
},
- "ready": {
- "format": "int32",
- "type": "integer"
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
},
- "updatedScheduled": {
- "format": "int32",
- "type": "integer"
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/generic/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified Generic cloud config",
+ "operationId": "v1CloudConfigsGenericGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Generic CloudConfig for all cloud types",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Generic CloudConfig spec for all cloud types",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "Generic cluster config",
+ "type": "object",
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "region": {
+ "description": "cluster region information",
+ "type": "string"
+ }
+ }
+ },
+ "edgeHostRefs": {
+ "description": "Appliances (Edge Host) uids",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "isControlPlane"
+ ],
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "useControlPlaneAsWorker": {
+ "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/generic/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsGenericUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Generic cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Generic cluster config",
+ "type": "object",
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "region": {
+ "description": "cluster region information",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/generic/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates a generic cloud config's machine pool",
+ "operationId": "v1CloudConfigsGenericMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "cloudConfig": {
+ "description": "Generic cluster config",
+ "type": "object",
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "region": {
+ "description": "cluster region information",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified generic cloud config's machine pool",
+ "operationId": "v1CloudConfigsGenericMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "cloudConfig": {
+ "description": "Generic cluster config",
+ "type": "object",
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "region": {
+ "description": "cluster region information",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsGenericMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of Generic machines",
+ "operationId": "v1CloudConfigsGenericPoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of Generic machine items",
+ "schema": {
+ "description": "Generic machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Generic cloud VM definition spec",
+ "properties": {
+ "hostName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Generic network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsGenericPoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Generic cloud VM definition spec",
+ "properties": {
+ "hostName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Generic network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified generic machine",
+ "operationId": "v1CloudConfigsGenericPoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Generic cloud VM definition spec",
+ "properties": {
+ "hostName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Generic network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to the cloud config's machine pool",
+ "operationId": "v1CloudConfigsGenericPoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Generic cloud VM definition spec",
+ "properties": {
+ "hostName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Generic network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine",
+ "operationId": "v1CloudConfigsGenericPoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/gke/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified GKE cloud config",
+ "operationId": "v1CloudConfigsGkeGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "GcpCloudConfig is the Schema for the gcpcloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "GcpCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
+ "properties": {
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
+ "type": "object",
+ "properties": {
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
+ "type": "boolean"
+ },
+ "location": {
+ "description": "Can be Region or Zone",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "isControlPlane",
+ "instanceType"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "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",
+ "type": "object",
+ "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\"`",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "images": {
+ "description": "Refers to GCP image",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "os": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "isAddonLayer": {
+ "description": "addon layers present in spc",
+ "type": "boolean"
+ },
+ "roleDigest": {
+ "description": "this map will be for ansible roles present in each pack",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/gke/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsGkeUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Gcp cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
+ "properties": {
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
+ "type": "object",
+ "properties": {
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
+ "type": "boolean"
+ },
+ "location": {
+ "description": "Can be Region or Zone",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/gke/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates an GKE cloud config's machine pool",
+ "operationId": "v1CloudConfigsGkeMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified GKE cloud config's machine pool",
+ "operationId": "v1CloudConfigsGkeMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsGkeMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of GKE machines",
+ "operationId": "v1CloudConfigsGkePoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of GKE machine items",
+ "schema": {
+ "description": "GCP machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "GCP cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "GCP cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "GCP network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "project": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "zone": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsGkePoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "GCP cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "GCP cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "GCP network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "project": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "zone": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified GKE machine",
+ "operationId": "v1CloudConfigsGkePoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "GCP cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "GCP cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "GCP network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "project": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "zone": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to the cloud config's machine pool",
+ "operationId": "v1CloudConfigsGkePoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "GCP cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "GCP cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "GCP network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "project": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "zone": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified Gcp machine",
+ "operationId": "v1CloudConfigsGkePoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/libvirt/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified libvirt cloud config",
+ "operationId": "v1CloudConfigsLibvirtGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "LibvirtCloudConfig is the Schema for the libvirtcloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "LibvirtCloudConfigSpec defines the desired state of LibvirtCloudConfig",
+ "type": "object",
+ "required": [
+ "clusterConfig",
+ "machinePoolConfig"
+ ],
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "instanceType",
+ "placements",
+ "rootDiskInGB"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean"
+ },
+ "labels": {
+ "description": "labels for this pool, example: master/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "nonRootDisksInGB": {
+ "description": "NonRootDisksInGB is the list of additional disks, if required, in GB",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "placements": {
+ "description": "Placements defines the configurations of the failureDomains(hosts) for the machine pool",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "hostUid",
+ "hostAddress",
+ "networks",
+ "sourceStoragePool"
+ ],
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "hostAddress": {
+ "description": "HostAddress is a FQDN or IP address of the LibvirtHost",
+ "type": "string"
+ },
+ "hostIdentity": {
+ "type": "object",
+ "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": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "SSH secret name",
+ "type": "string"
+ },
+ "privateKey": {
+ "description": "Private Key to access the host",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the libvirt network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "rootDiskInGB": {
+ "description": "RootDiskInGB is the size of a vm's root disk, in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "nodeImages": {
+ "description": "NodeImages are the list of images generated on all the LibvirtHosts",
+ "type": "array",
+ "items": {
+ "description": "LibvirtImage is the Image generated on the LibvirtHost",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "sourceImageId": {
+ "description": "SourceImageId can be from packref's annotations or from pack.json",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/libvirt/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsLibvirtUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Libvirt cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/libvirt/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates a libvirt cloud config's machine pool",
+ "operationId": "v1CloudConfigsLibvirtMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "instanceType",
+ "placements",
+ "rootDiskInGB"
+ ],
+ "properties": {
+ "instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nonRootDisksInGB": {
+ "description": "NonRootDisksInGB is the list of additional disks, if required, in GB",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Libvirt placement config",
+ "type": "object",
+ "required": [
+ "hostUid"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "hostUid": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the libvirt network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "sourceStoragePool": {
+ "type": "string"
+ },
+ "targetStoragePool": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "rootDiskInGB": {
+ "description": "RootDiskInGB is the size of a vm's root disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "xslTemplate": {
+ "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified Libvirt cloud config's machine pool",
+ "operationId": "v1CloudConfigsLibvirtMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "instanceType",
+ "placements",
+ "rootDiskInGB"
+ ],
+ "properties": {
+ "instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nonRootDisksInGB": {
+ "description": "NonRootDisksInGB is the list of additional disks, if required, in GB",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Libvirt placement config",
+ "type": "object",
+ "required": [
+ "hostUid"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "hostUid": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the libvirt network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "sourceStoragePool": {
+ "type": "string"
+ },
+ "targetStoragePool": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "rootDiskInGB": {
+ "description": "RootDiskInGB is the size of a vm's root disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "xslTemplate": {
+ "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsLibvirtMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of Libvirt machines",
+ "operationId": "v1CloudConfigsLibvirtPoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of Libvirt machine items",
+ "schema": {
+ "description": "Libvirt machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "libvirt cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "failureDomain": {
+ "type": "string"
+ },
+ "imageName": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Libvirt network interface",
+ "type": "object",
+ "required": [
+ "macAddress"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "macAddress": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "targetStoragePool": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the Libvirt machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsLibvirtPoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "libvirt cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "failureDomain": {
+ "type": "string"
+ },
+ "imageName": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Libvirt network interface",
+ "type": "object",
+ "required": [
+ "macAddress"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "macAddress": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "targetStoragePool": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified Libvirt machine",
+ "operationId": "v1CloudConfigsLibvirtPoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "libvirt cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "failureDomain": {
+ "type": "string"
+ },
+ "imageName": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Libvirt network interface",
+ "type": "object",
+ "required": [
+ "macAddress"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "macAddress": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "targetStoragePool": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsLibvirtPoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "libvirt cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "edgeHostUid": {
+ "type": "string"
+ },
+ "failureDomain": {
+ "type": "string"
+ },
+ "imageName": {
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Libvirt network interface",
+ "type": "object",
+ "required": [
+ "macAddress"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "macAddress": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "targetStoragePool": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified Libvirt machine",
+ "operationId": "v1CloudConfigsLibvirtPoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/maas/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified Maas cloud config",
+ "operationId": "v1CloudConfigsMaasGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "MaasCloudConfig is the Schema for the maascloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "MaasCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "domain"
+ ],
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean"
+ },
+ "labels": {
+ "description": "labels for this pool, example: master/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "resourcePool": {
+ "type": "string"
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "tags": {
+ "description": "Tags in maas environment",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "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",
+ "type": "object",
+ "properties": {
+ "ansibleRoleDigest": {
+ "description": "For mold controller to identify if is there any changes in Pack",
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "isAddonLayer": {
+ "description": "addon layers present in spc",
+ "type": "boolean"
+ },
+ "nodeImage": {
+ "description": "Name of the image",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "roleDigest": {
+ "description": "this map will be for ansible roles present in eack pack",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/maas/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsMaasUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Maas cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "domain"
+ ],
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/maas/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates an Maas cloud config's machine pool",
+ "operationId": "v1CloudConfigsMaasMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType",
+ "resourcePool"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "resourcePool": {
+ "description": "the resource pool",
+ "type": "string"
+ },
+ "tags": {
+ "description": "Tags in maas environment",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified Maas cloud config's machine pool",
+ "operationId": "v1CloudConfigsMaasMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType",
+ "resourcePool"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "resourcePool": {
+ "description": "the resource pool",
+ "type": "string"
+ },
+ "tags": {
+ "description": "Tags in maas environment",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsMaasMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of Maas machines",
+ "operationId": "v1CloudConfigsMaasPoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of Maas machine items",
+ "schema": {
+ "description": "List of MAAS machines",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Maas cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "hostname": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Maas network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsMaasPoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Maas cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Maas cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "hostname": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Maas network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified Maas machine",
+ "operationId": "v1CloudConfigsMaasPoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Maas cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Maas cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "hostname": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Maas network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to the cloud config's machine pool",
+ "operationId": "v1CloudConfigsMaasPoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Maas cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Maas cloud VM definition spec",
+ "type": "object",
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "hostname": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Maas network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified Maas machine",
+ "operationId": "v1CloudConfigsMaasPoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/openstack/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified OpenStack cloud config",
+ "operationId": "v1CloudConfigsOpenStackGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "OpenStackCloudConfig is the Schema for the OpenStackcloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "OpenStackCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "domain": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "flavorConfig"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "azs": {
+ "description": "for master pool, this will be the failure domains for kcp",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "diskGiB": {
+ "description": "DiskGiB is used to configure rootVolume, the volume metadata to boot from",
+ "type": "integer",
+ "format": "int32"
+ },
+ "flavor": {
+ "description": "Openstack flavor name, only return argument",
+ "type": "string"
+ },
+ "flavorConfig": {
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "description": "Openstack flavor name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "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",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "nodeImage": {
+ "type": "string"
+ },
+ "sourceImageId": {
+ "description": "sourceImageId, it can be from packref's annotations or from pack.json",
+ "type": "string"
+ },
+ "useCapiImage": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/openstack/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsOpenStackUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Openstack cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "domain": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/openstack/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates a OpenStack cloud config's machine pool",
+ "operationId": "v1CloudConfigsOpenStackMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "flavorConfig"
+ ],
+ "properties": {
+ "azs": {
+ "description": "for master pool, this will be the failure domains for kcp",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "diskGiB": {
+ "description": "Root disk size",
+ "type": "integer",
+ "format": "int32"
+ },
+ "flavorConfig": {
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "description": "Openstack flavor name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified OpenStack cloud config's machine pool",
+ "operationId": "v1CloudConfigsOpenStackMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "flavorConfig"
+ ],
+ "properties": {
+ "azs": {
+ "description": "for master pool, this will be the failure domains for kcp",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "diskGiB": {
+ "description": "Root disk size",
+ "type": "integer",
+ "format": "int32"
+ },
+ "flavorConfig": {
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "description": "Openstack flavor name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsOpenStackMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of OpenStack machines",
+ "operationId": "v1CloudConfigsOpenStackPoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of OpenStack machine items",
+ "schema": {
+ "description": "OpenStack machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "OpenStack cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "nics"
+ ],
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "OpenStack network interface",
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "projectId": {
+ "type": "string"
+ },
+ "securityGroups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the OpenStack machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsOpenStackPoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "OpenStack cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "OpenStack cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "nics"
+ ],
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "OpenStack network interface",
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "projectId": {
+ "type": "string"
+ },
+ "securityGroups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified OpenStack machine",
+ "operationId": "v1CloudConfigsOpenStackPoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "OpenStack cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "OpenStack cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "nics"
+ ],
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "OpenStack network interface",
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "projectId": {
+ "type": "string"
+ },
+ "securityGroups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsOpenStackPoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "OpenStack cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "OpenStack cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "nics"
+ ],
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "OpenStack network interface",
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "projectId": {
+ "type": "string"
+ },
+ "securityGroups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified OpenStack machine",
+ "operationId": "v1CloudConfigsOpenStackPoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/tke/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified TKE cloud config",
+ "operationId": "v1CloudConfigsTkeGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "TencentCloudConfig is the Schema for the tencentcloudconfigs API",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "TencentCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
+ "type": "object",
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "properties": {
+ "endpointAccess": {
+ "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "securityGroup": {
+ "description": "Tencent security group",
+ "type": "string"
+ },
+ "subnetId": {
+ "description": "Tencent Subnet",
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyIDs": {
+ "type": "array",
+ "items": {
+ "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"
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "additionalLabels": {
+ "description": "AdditionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "azs": {
+ "description": "AZs is only used for dynamic placement",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceConfig": {
+ "properties": {
+ "category": {
+ "type": "string"
+ },
+ "cpuSet": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "diskGiB": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64"
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "subnetIds": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/tke/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsTkeUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Tencent cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "properties": {
+ "endpointAccess": {
+ "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "securityGroup": {
+ "description": "Tencent security group",
+ "type": "string"
+ },
+ "subnetId": {
+ "description": "Tencent Subnet",
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyIDs": {
+ "type": "array",
+ "items": {
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/tke/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates an TKE cloud config's machine pool",
+ "operationId": "v1CloudConfigsTkeMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "subnetIds": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified TKE cloud config's machine pool",
+ "operationId": "v1CloudConfigsTkeMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "subnetIds": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsTkeMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of TKE machines",
+ "operationId": "v1CloudConfigsTkePoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of TKE machine items",
+ "schema": {
+ "description": "Tencent machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Tencent cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Tencent cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "nics",
+ "instanceType",
+ "imageId"
+ ],
+ "properties": {
+ "dnsName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Tencent network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "securityGroups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ },
+ "zoneId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsTkePoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Tencent cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Tencent cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "nics",
+ "instanceType",
+ "imageId"
+ ],
+ "properties": {
+ "dnsName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Tencent network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "securityGroups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ },
+ "zoneId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified Tke machine",
+ "operationId": "v1CloudConfigsTkePoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Tencent cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Tencent cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "nics",
+ "instanceType",
+ "imageId"
+ ],
+ "properties": {
+ "dnsName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Tencent network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "securityGroups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ },
+ "zoneId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to the cloud config's machine pool",
+ "operationId": "v1CloudConfigsTkePoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Tencent cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Tencent cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "nics",
+ "instanceType",
+ "imageId"
+ ],
+ "properties": {
+ "dnsName": {
+ "type": "string"
+ },
+ "imageId": {
+ "type": "string"
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "Tencent network interface",
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "publicIp": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "securityGroups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "subnetId": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vpcId": {
+ "type": "string"
+ },
+ "zoneId": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified Tencent machine",
+ "operationId": "v1CloudConfigsTkePoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/virtual/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified Virtual cloud config",
+ "operationId": "v1CloudConfigsVirtualGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "VirtualCloudConfig is the Schema for the virtual cloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "VirtualCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec for cluster-api.",
+ "type": "object",
+ "required": [
+ "clusterConfig",
+ "hostClusterUid",
+ "machinePoolConfig"
+ ],
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for virtual cluster",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "description": "APIEndpoint represents a reachable Kubernetes API endpoint.",
+ "type": "object",
+ "required": [
+ "host",
+ "port"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "helmRelease": {
+ "type": "object",
+ "properties": {
+ "chart": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "default": ""
+ },
+ "repo": {
+ "type": "string",
+ "default": ""
+ },
+ "version": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "values": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "kubernetesVersion": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "hostClusterUid": {
+ "type": "string"
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "maxCPU": {
+ "description": "Maximum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxMemInMiB": {
+ "description": "Maximum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxStorageGiB": {
+ "description": "Maximum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMiB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minStorageGiB": {
+ "description": "Minimum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean"
+ },
+ "labels": {
+ "description": "labels for this pool, example: master/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "resourcePool": {
+ "type": "string"
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Defines the status of virtual cloud config",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "x-kubernetes-patch-merge-key": "type",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "isAddonLayer": {
+ "description": "addon layers present in spc",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/virtual/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsVirtualUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Virtual cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for virtual cluster",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "description": "APIEndpoint represents a reachable Kubernetes API endpoint.",
+ "type": "object",
+ "required": [
+ "host",
+ "port"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "helmRelease": {
+ "type": "object",
+ "properties": {
+ "chart": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "default": ""
+ },
+ "repo": {
+ "type": "string",
+ "default": ""
+ },
+ "version": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "values": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "kubernetesVersion": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/virtual/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates a virtual cloud config's machine pool",
+ "operationId": "v1CloudConfigsVirtualMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "maxCPU": {
+ "description": "Maximum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxMemInMiB": {
+ "description": "Maximum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxStorageGiB": {
+ "description": "Maximum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMiB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minStorageGiB": {
+ "description": "Minimum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified virtual cloud config's machine pool",
+ "operationId": "v1CloudConfigsVirtualMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "maxCPU": {
+ "description": "Maximum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxMemInMiB": {
+ "description": "Maximum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxStorageGiB": {
+ "description": "Maximum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMiB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minStorageGiB": {
+ "description": "Minimum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsVirtualMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of virtual machines",
+ "operationId": "v1CloudConfigsVirtualPoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of virtual machine items",
+ "schema": {
+ "description": "List of virtual machines",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Virtual cloud machine definition",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Virtual cloud machine definition spec",
+ "type": "object",
+ "properties": {
+ "hostname": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsVirtualPoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Virtual cloud machine definition",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Virtual cloud machine definition spec",
+ "type": "object",
+ "properties": {
+ "hostname": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified virtual machine",
+ "operationId": "v1CloudConfigsVirtualPoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Virtual cloud machine definition",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Virtual cloud machine definition spec",
+ "type": "object",
+ "properties": {
+ "hostname": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to the cloud config's machine pool",
+ "operationId": "v1CloudConfigsVirtualPoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Virtual cloud machine definition",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Virtual cloud machine definition spec",
+ "type": "object",
+ "properties": {
+ "hostname": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified virtual machine",
+ "operationId": "v1CloudConfigsVirtualPoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/virtual/{configUid}/resize": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates and resizes the virtual cluster",
+ "operationId": "v1CloudConfigsVirtualUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "maxCPU": {
+ "description": "Maximum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxMemInMiB": {
+ "description": "Maximum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxStorageGiB": {
+ "description": "Maximum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMiB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minStorageGiB": {
+ "description": "Minimum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Specify virtual cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/vsphere/{configUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified vSphere cloud config",
+ "operationId": "v1CloudConfigsVsphereGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "VsphereCloudConfig is the Schema for the vspherecloudconfigs API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "VsphereCloudConfigSpec defines the desired state of VsphereCloudConfig",
+ "type": "object",
+ "required": [
+ "clusterConfig",
+ "machinePoolConfig"
+ ],
+ "properties": {
+ "cloudAccountRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "required": [
+ "placement"
+ ],
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "placement": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "ipPool": {
+ "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools",
+ "type": "object",
+ "properties": {
+ "gateway": {
+ "description": "Gateway is the gateway ip address",
+ "type": "string"
+ },
+ "nameserver": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "pools": {
+ "description": "Pools contains the list of IP addresses pools",
+ "type": "array",
+ "items": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "uid": {
+ "description": "UID is the UID of this IPPool, used by Hubble",
+ "type": "string"
+ }
+ }
+ },
+ "networkName": {
+ "description": "NetworkName is the name of the network in which VMs are created/located.",
+ "type": "string"
+ },
+ "parentPoolRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "staticIp": {
+ "description": "support dhcp or static IP, if false, use DHCP",
+ "type": "boolean"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "edgeHostRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "machinePoolConfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "isControlPlane",
+ "instanceType"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "additionalLabels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryMiB",
+ "diskGiB"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "ipPool": {
+ "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools",
+ "type": "object",
+ "properties": {
+ "gateway": {
+ "description": "Gateway is the gateway ip address",
+ "type": "string"
+ },
+ "nameserver": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "pools": {
+ "description": "Pools contains the list of IP addresses pools",
+ "type": "array",
+ "items": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "uid": {
+ "description": "UID is the UID of this IPPool, used by Hubble",
+ "type": "string"
+ }
+ }
+ },
+ "networkName": {
+ "description": "NetworkName is the name of the network in which VMs are created/located.",
+ "type": "string"
+ },
+ "parentPoolRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "staticIp": {
+ "description": "support dhcp or static IP, if false, use DHCP",
+ "type": "boolean"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "VsphereCloudConfigStatus defines the observed state of VsphereCloudConfig",
+ "type": "object",
+ "properties": {
+ "ansibleDigest": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "isAddonLayer": {
+ "description": "addon layers present in spc",
+ "type": "boolean"
+ },
+ "lastOVACreated": {
+ "type": "string"
+ },
+ "lastVMExported": {
+ "type": "string"
+ },
+ "nodeImage": {
+ "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",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "roleDigest": {
+ "description": "this map will be for ansible roles present in eack pack",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/vsphere/{configUid}/clusterConfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the cluster configuration information",
+ "operationId": "v1CloudConfigsVsphereUidClusterConfig",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "vSphere cloud cluster config entity",
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "required": [
+ "placement"
+ ],
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "placement": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/vsphere/{configUid}/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Creates a vSphere cloud config's machine pool",
+ "operationId": "v1CloudConfigsVsphereMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryMiB",
+ "diskGiB"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified vSphere cloud config's machine pool",
+ "operationId": "v1CloudConfigsVsphereMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryMiB",
+ "diskGiB"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsVsphereMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Retrieves a list of vSphere machines",
+ "operationId": "v1CloudConfigsVspherePoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of vSphere machine items",
+ "schema": {
+ "description": "vSphere machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "vSphere cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "vSphere cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "nics",
+ "placement"
+ ],
+ "properties": {
+ "images": {
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryMiB",
+ "diskGiB"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "vSphere network interface",
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "macAddress": {
+ "type": "string"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "placement": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "ipPool": {
+ "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools",
+ "type": "object",
+ "properties": {
+ "gateway": {
+ "description": "Gateway is the gateway ip address",
+ "type": "string"
+ },
+ "nameserver": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "pools": {
+ "description": "Pools contains the list of IP addresses pools",
+ "type": "array",
+ "items": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "uid": {
+ "description": "UID is the UID of this IPPool, used by Hubble",
+ "type": "string"
+ }
+ }
+ },
+ "networkName": {
+ "description": "NetworkName is the name of the network in which VMs are created/located.",
+ "type": "string"
+ },
+ "parentPoolRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "staticIp": {
+ "description": "support dhcp or static IP, if false, use DHCP",
+ "type": "boolean"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "vcenterServer": {
+ "description": "VcenterServer is the address of the vSphere endpoint",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Adds the vSphere machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsVspherePoolMachinesAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "vSphere cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "vSphere cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "nics",
+ "placement"
+ ],
+ "properties": {
+ "images": {
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryMiB",
+ "diskGiB"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "vSphere network interface",
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "macAddress": {
+ "type": "string"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "placement": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "ipPool": {
+ "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools",
+ "type": "object",
+ "properties": {
+ "gateway": {
+ "description": "Gateway is the gateway ip address",
+ "type": "string"
+ },
+ "nameserver": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "pools": {
+ "description": "Pools contains the list of IP addresses pools",
+ "type": "array",
+ "items": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "uid": {
+ "description": "UID is the UID of this IPPool, used by Hubble",
+ "type": "string"
+ }
+ }
+ },
+ "networkName": {
+ "description": "NetworkName is the name of the network in which VMs are created/located.",
+ "type": "string"
+ },
+ "parentPoolRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "staticIp": {
+ "description": "support dhcp or static IP, if false, use DHCP",
+ "type": "boolean"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "vcenterServer": {
+ "description": "VcenterServer is the address of the vSphere endpoint",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified vSphere machine",
+ "operationId": "v1CloudConfigsVspherePoolMachinesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "vSphere cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "vSphere cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "nics",
+ "placement"
+ ],
+ "properties": {
+ "images": {
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryMiB",
+ "diskGiB"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "vSphere network interface",
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "macAddress": {
+ "type": "string"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "placement": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "ipPool": {
+ "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools",
+ "type": "object",
+ "properties": {
+ "gateway": {
+ "description": "Gateway is the gateway ip address",
+ "type": "string"
+ },
+ "nameserver": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "pools": {
+ "description": "Pools contains the list of IP addresses pools",
+ "type": "array",
+ "items": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "uid": {
+ "description": "UID is the UID of this IPPool, used by Hubble",
+ "type": "string"
+ }
+ }
+ },
+ "networkName": {
+ "description": "NetworkName is the name of the network in which VMs are created/located.",
+ "type": "string"
+ },
+ "parentPoolRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "staticIp": {
+ "description": "support dhcp or static IP, if false, use DHCP",
+ "type": "boolean"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "vcenterServer": {
+ "description": "VcenterServer is the address of the vSphere endpoint",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine to cloud config's machine pool",
+ "operationId": "v1CloudConfigsVspherePoolMachinesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "vSphere cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "Deprecated. Not used for the resource info.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Deprecated. Cloud type of the machine.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "vSphere cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "nics",
+ "placement"
+ ],
+ "properties": {
+ "images": {
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryMiB",
+ "diskGiB"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "description": "vSphere network interface",
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "index": {
+ "type": "integer",
+ "format": "int8"
+ },
+ "macAddress": {
+ "type": "string"
+ },
+ "networkName": {
+ "type": "string"
+ },
+ "privateIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "placement": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "properties": {
+ "ipPool": {
+ "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools",
+ "type": "object",
+ "properties": {
+ "gateway": {
+ "description": "Gateway is the gateway ip address",
+ "type": "string"
+ },
+ "nameserver": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "pools": {
+ "description": "Pools contains the list of IP addresses pools",
+ "type": "array",
+ "items": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "uid": {
+ "description": "UID is the UID of this IPPool, used by Hubble",
+ "type": "string"
+ }
+ }
+ },
+ "networkName": {
+ "description": "NetworkName is the name of the network in which VMs are created/located.",
+ "type": "string"
+ },
+ "parentPoolRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "staticIp": {
+ "description": "support dhcp or static IP, if false, use DHCP",
+ "type": "boolean"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "vcenterServer": {
+ "description": "VcenterServer is the address of the vSphere endpoint",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "cloud machine status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Machine health state",
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Machine health condition",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "instanceState": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Provisioned",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Failed",
+ "Unknown"
+ ]
+ },
+ "maintenanceStatus": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Deletes the specified vSphere machine",
+ "operationId": "v1CloudConfigsVspherePoolMachinesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}/maintenance": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine maintenance",
+ "operationId": "v1CloudConfigsMachinePoolsMachineUidMaintenanceUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "action": {
+ "description": "Machine maintenance mode action",
+ "type": "string",
+ "enum": [
+ "cordon",
+ "uncordon"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}/maintenance/status": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Updates the specified machine maintenance",
+ "operationId": "v1CloudConfigsMachinePoolsMachineUidMaintenanceStatusUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Machine maintenance status",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine uid",
+ "name": "machineUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/{configUid}/machinePools/machineUids": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "cloudconfigs"
+ ],
+ "summary": "Returns the specified cloud config's machine pools and machine uid",
+ "operationId": "v1CloudConfigsMachinePoolsMachineUidsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "properties": {
+ "machinePools": {
+ "type": "object",
+ "additionalProperties": {
+ "properties": {
+ "machineUids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clouds/aws/account/sts": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves AWS external id and account id",
+ "operationId": "V1AwsAccountStsGet",
+ "parameters": [
+ {
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ],
+ "type": "string",
+ "default": "aws",
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "name": "partition",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "AWS cloud account sts",
+ "type": "object",
+ "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": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/account/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate the specified AWS account credentials",
+ "operationId": "V1AwsAccountValidate",
+ "parameters": [
+ {
+ "description": "Request payload to validate AWS cloud account",
+ "name": "awsCloudAccount",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/cloudwatch/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Validates aws cloud watch credentials",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "validates aws cloud watch credentials",
+ "operationId": "V1CloudsAwsCloudWatchValidate",
+ "parameters": [
+ {
+ "description": "Request payload for cloud watch config",
+ "name": "cloudWatchConfig",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Cloud watch config entity",
+ "type": "object",
+ "properties": {
+ "credentials": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/cost": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves AWS cloud account usage cost from cost explorer.",
+ "operationId": "v1AwsCloudCost",
+ "parameters": [
+ {
+ "description": "Request payload for AWS cloud cost",
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Aws cloud account usage cost payload spec",
+ "type": "object",
+ "required": [
+ "credentials"
+ ],
+ "properties": {
+ "accountId": {
+ "description": "AccountId of AWS cloud cost",
+ "type": "string"
+ },
+ "credentials": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "filter": {
+ "description": "Aws cloud account usage cost payload filter. startTime and endTime should be within 12 months range from now.",
+ "type": "object",
+ "required": [
+ "startTime"
+ ],
+ "properties": {
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "iamUserId": {
+ "description": "IAM UserId of AWS account",
+ "type": "string"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "AWS cloud account usage cost summary response data",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "AWS cloud account usage cost summary of monthlyCosts and totalCost",
+ "type": "object",
+ "properties": {
+ "monthlyCosts": {
+ "description": "Monthly cost of AWS cost",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "amount": {
+ "description": "Amount for aws cloud cost",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "timestamp": {
+ "description": "Time duration for aws cloud cost",
+ "type": "integer"
+ }
+ }
+ }
+ },
+ "total": {
+ "description": "Total cost of AWS cost",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/imageIds/{imageId}/volumeSize": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Get AWS Volume Size",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Get AWS Volume Size",
+ "operationId": "V1AwsVolumeSizeGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Specific AWS Region",
+ "name": "region",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "AWS image id",
+ "name": "imageId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "AWS Volume Size entity",
+ "type": "object",
+ "properties": {
+ "sizeGB": {
+ "description": "AWS volume size",
+ "type": "integer"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/policies": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of AWS policies for the specified account",
+ "operationId": "V1AwsIamPolicies",
+ "parameters": [
+ {
+ "description": "Request payload for AWS Cloud Account",
+ "name": "account",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "type": "object",
+ "required": [
+ "policies"
+ ],
+ "properties": {
+ "policies": {
+ "type": "array",
+ "items": {
+ "description": "Aws policy",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "type": "string"
+ },
+ "policyId": {
+ "type": "string"
+ },
+ "policyName": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/policyArns/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate the aws policy arns validate",
+ "operationId": "V1AwsPolicyArnsValidate",
+ "parameters": [
+ {
+ "description": "Request payload to validate AWS policy ARN",
+ "name": "spec",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Aws policy ARNs spec",
+ "type": "object",
+ "required": [
+ "policyArns",
+ "account"
+ ],
+ "properties": {
+ "account": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "policyArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/properties/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate AWS properties",
+ "operationId": "V1AwsPropertiesValidate",
+ "parameters": [
+ {
+ "description": "Request payload for AWS properties validate spec",
+ "name": "properties",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "AWS properties validate spec",
+ "type": "object",
+ "properties": {
+ "cloudAccountUid": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of AWS regions for the specified account",
+ "operationId": "V1AwsRegions",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "type": "object",
+ "required": [
+ "regions"
+ ],
+ "properties": {
+ "regions": {
+ "description": "List of AWS regions",
+ "type": "array",
+ "items": {
+ "description": "AWS region which represents separate geographic area.",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/availabilityzones": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of AWS availability zones for the specified region",
+ "operationId": "V1AwsZones",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which zones are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "type": "object",
+ "required": [
+ "zones"
+ ],
+ "properties": {
+ "zones": {
+ "description": "List of AWS Zones",
+ "type": "array",
+ "items": {
+ "description": "Distinct locations within an AWS Region that are engineered to be isolated from failures in other Zones",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/copydefaultimages": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Copies the specified image from one region to another region",
+ "operationId": "V1AwsCopyImageFromDefaultRegion",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region to copy AWS image from",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "description": "Request payload to copy the AWS image",
+ "name": "spectroClusterAwsImageTag",
+ "in": "body",
+ "schema": {
+ "description": "AWS image name and credentials",
+ "type": "object",
+ "properties": {
+ "amiName": {
+ "description": "AWS image ami name",
+ "type": "string"
+ },
+ "awsAccount": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Async operation id",
+ "type": "object",
+ "properties": {
+ "operationId": {
+ "description": "OperationId for a particular sync operation id",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/eksClusters/name/validate": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns no contents if aws cluster name is valid else error.",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Check if Aws cluster name is valid",
+ "operationId": "V1AwsClusterNameValidate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "cluster name to be validated",
+ "name": "name",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Region for which cluster name is validated",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/images": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns AWS image for the specified AMI name",
+ "operationId": "V1AwsFindImage",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region to find AWS image",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "description": "Request payload to find the AWS image",
+ "name": "awsImageRequest",
+ "in": "body",
+ "schema": {
+ "description": "AWS image name and credentials",
+ "type": "object",
+ "properties": {
+ "amiName": {
+ "description": "AWS image ami name",
+ "type": "string"
+ },
+ "awsAccount": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "AWS image name and ami",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "AWS image id",
+ "type": "string"
+ },
+ "name": {
+ "description": "AWS image name",
+ "type": "string"
+ },
+ "owner": {
+ "description": "AWS image owner id",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/instancetypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of AWS instance types",
+ "operationId": "V1AwsInstanceTypes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which AWS instances are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having cpu greater than or equal",
+ "name": "cpuGtEq",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having memory greater than or equal",
+ "name": "memoryGtEq",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having gpu greater than or equal",
+ "name": "gpuGtEq",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of AWS instance types",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "array",
+ "items": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/keypairs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of AWS keypairs",
+ "operationId": "V1AwsKeyPairs",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which AWS key pairs are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of AWS keypairs",
+ "type": "object",
+ "properties": {
+ "keyNames": {
+ "description": "Array of Aws Keypair names",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/keypairs/{keypair}/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate the specified AWS keypair",
+ "operationId": "V1AwsKeyPairValidate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which AWS key pairs is validated",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "AWS Key pair which is to be validated",
+ "name": "keypair",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/kms/{keyId}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Get AWS KMS key by Id",
+ "operationId": "V1AwsKmsKeyGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which AWS KMS key belongs",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "The globally unique identifier for the KMS key",
+ "name": "keyId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of AWS Keys",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/kmskeys": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of AWS KMS keys for the specified account",
+ "operationId": "V1AwsKmsKeys",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which AWS KMS key are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of AWS Keys",
+ "type": "object",
+ "required": [
+ "kmsKeys"
+ ],
+ "properties": {
+ "kmsKeys": {
+ "type": "array",
+ "items": {
+ "description": "AWS KMS Key - gives you centralized control over the cryptographic keys used to protect your data.",
+ "type": "object",
+ "required": [
+ "keyId",
+ "keyArn"
+ ],
+ "properties": {
+ "keyAlias": {
+ "description": "AWS KMS alias",
+ "type": "string"
+ },
+ "keyArn": {
+ "description": "AWS KMS arn",
+ "type": "string"
+ },
+ "keyId": {
+ "description": "AWS KMS keyid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/kmskeys/validate": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate an Aws KMS key for the specified account",
+ "operationId": "V1AwsKmsKeyValidate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which AWS KMS key is validated",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "AWS KEY ARN for validation",
+ "name": "keyArn",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/storagetypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of AWS storage types",
+ "operationId": "V1AwsStorageTypes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which AWS storage types are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "storageTypes": {
+ "description": "List of AWS storage types",
+ "type": "array",
+ "items": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/regions/{region}/vpcs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of VPCs for the specified account",
+ "operationId": "V1AwsVpcs",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which VPCs are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of AWS VPCs",
+ "type": "object",
+ "required": [
+ "vpcs"
+ ],
+ "properties": {
+ "vpcs": {
+ "type": "array",
+ "items": {
+ "description": "A virtual network dedicated to a AWS account",
+ "type": "object",
+ "required": [
+ "vpcId"
+ ],
+ "properties": {
+ "cidrBlock": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the virtual network",
+ "type": "string"
+ },
+ "subnets": {
+ "description": "List of subnets associated to a AWS VPC",
+ "type": "array",
+ "items": {
+ "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"
+ }
+ }
+ }
+ },
+ "vpcId": {
+ "description": "Id of the virtual network",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/s3/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate the AWS S3 bucket",
+ "operationId": "V1AwsS3Validate",
+ "parameters": [
+ {
+ "description": "AWS S3 bucket credentials",
+ "name": "awsS3Credential",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "AWS S3 Bucket credentials",
+ "type": "object",
+ "required": [
+ "credentials",
+ "bucket",
+ "region"
+ ],
+ "properties": {
+ "bucket": {
+ "description": "Name of AWS S3 bucket",
+ "type": "string"
+ },
+ "credentials": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "folder": {
+ "description": "Name of the folder in the specified AWS S3 bucket.",
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the available AWS region.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/securitygroups": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of AWS security groups for the specified account",
+ "operationId": "V1AwsSecurityGroups",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Region for which security groups are requested",
+ "name": "region",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Vpc Id for which security groups are requested",
+ "name": "vpcId",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "type": "object",
+ "required": [
+ "groups"
+ ],
+ "properties": {
+ "groups": {
+ "type": "array",
+ "items": {
+ "description": "Aws security group",
+ "type": "object",
+ "properties": {
+ "groupId": {
+ "type": "string"
+ },
+ "groupName": {
+ "type": "string"
+ },
+ "ownerId": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/aws/volumeTypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "List all AWS Volume Types",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Get all AWS Volume Types",
+ "operationId": "V1AwsVolumeTypesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Specific AWS Region",
+ "name": "region",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "AWS Volume Types",
+ "type": "object",
+ "properties": {
+ "volumeTypes": {
+ "type": "array",
+ "items": {
+ "description": "AWS Volume Type entity",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/account/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns no contents if account is valid else error.",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Check if Azure account is valid",
+ "operationId": "V1AzureAccountValidate",
+ "parameters": [
+ {
+ "description": "Request payload for Azure cloud account",
+ "name": "azureCloudAccount",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "required": [
+ "tenantId",
+ "clientId",
+ "clientSecret"
+ ],
+ "properties": {
+ "azureEnvironment": {
+ "description": "Contains configuration for Azure cloud",
+ "type": "string",
+ "default": "AzurePublicCloud",
+ "enum": [
+ "AzureChinaCloud",
+ "AzurePublicCloud",
+ "AzureUSGovernment",
+ "AzureUSGovernmentCloud"
+ ]
+ },
+ "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": {
+ "description": "Cloud account settings",
+ "type": "object",
+ "properties": {
+ "disablePropertiesRequest": {
+ "description": "Will disable certain properties request to cloud and the input is collected directly from the user",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/groups": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Azure groups",
+ "operationId": "V1AzureGroups",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Azure cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Azure groups",
+ "type": "object",
+ "required": [
+ "groups"
+ ],
+ "properties": {
+ "groups": {
+ "type": "array",
+ "items": {
+ "description": "Azure group entity",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Azure group id",
+ "type": "string"
+ },
+ "name": {
+ "description": "Azure group name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/regions": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Azure regions",
+ "operationId": "V1AzureRegions",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Azure cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "SubscriptionId for which resources is requested",
+ "name": "subscriptionId",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Azure regions",
+ "type": "object",
+ "required": [
+ "regions"
+ ],
+ "properties": {
+ "regions": {
+ "type": "array",
+ "items": {
+ "description": "Azure region entity",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "Azure availability zone",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Azure availability zone name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/regions/{region}/instancetypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Azure instance types",
+ "operationId": "V1AzureInstanceTypes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which Azure instance types are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having cpu greater than or equal",
+ "name": "cpuGtEq",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having memory greater than or equal",
+ "name": "memoryGtEq",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having gpu greater than or equal",
+ "name": "gpuGtEq",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Azure instance types",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "array",
+ "items": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/regions/{region}/storagetypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Azure storage types",
+ "operationId": "V1AzureStorageTypes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which Azure storage types are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Azure storage types",
+ "type": "object",
+ "properties": {
+ "storageTypes": {
+ "type": "array",
+ "items": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/aksClusters/name/validate": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns no contents if Azure cluster name is valid else error.",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Check if Azure cluster name is valid",
+ "operationId": "V1AzureClusterNameValidate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Azure cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "cluster name to be validated",
+ "name": "name",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "region in which cluster name is to be validated",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "subscriptionId in which cluster name is to be validated",
+ "name": "subscriptionId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "resourceGroup in which cluster name is to be validated",
+ "name": "resourceGroup",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/networks": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Azure virtual network list for the sepcified account",
+ "operationId": "V1AzureVirtualNetworkList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Azure cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Region for which Azure virtual networks are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for which Azure virtual networks are requested",
+ "name": "subscriptionId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Resource group for which Azure virtual networks are requested",
+ "name": "resourceGroup",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Azure virtual network",
+ "type": "object",
+ "properties": {
+ "virtualNetworkList": {
+ "type": "array",
+ "items": {
+ "description": "Azure virtual network is the fundamental building block for your private network in Azure.",
+ "type": "object",
+ "properties": {
+ "addressSpaces": {
+ "description": "Location of the virtual network",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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": {
+ "description": "Type of the virtual network",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/resourceGroups": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Azure resource group for the specified account",
+ "operationId": "V1AzureResourceGroupList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Azure cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Region for which Azure resource group are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for which Azure resource group are requested",
+ "name": "subscriptionId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Azure resource group",
+ "type": "object",
+ "properties": {
+ "resourceGroupList": {
+ "type": "array",
+ "items": {
+ "description": "Azure resource Group is a container that holds related resources for an Azure solution",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/regions/{region}/zones": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Azure zones for the specified region",
+ "operationId": "V1AzureZones",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which Azure zones are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific Azure cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "subscriptionId of azure account",
+ "name": "subscriptionId",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Azure zone",
+ "type": "object",
+ "properties": {
+ "zoneList": {
+ "type": "array",
+ "items": {
+ "description": "Azure availability zone entity",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Azure availability zone id",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/resourceGroups/{resourceGroup}/privateDnsZones": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns Azure private DNS zones",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Get Azure private DNS zones for the given resource group",
+ "operationId": "V1AzurePrivateDnsZones",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "resourceGroup for which Azure private dns zones are requested",
+ "name": "resourceGroup",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific Azure cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "subscriptionId for which Azure private dns zones are requested",
+ "name": "subscriptionId",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Azure storage accounts",
+ "type": "object",
+ "properties": {
+ "privateDnsZones": {
+ "type": "array",
+ "items": {
+ "description": "Azure Private DNS zone entity",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/resourceGroups/{resourceGroup}/storageAccounts": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns Azure storage accounts.",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Get Azure storage accounts",
+ "operationId": "V1AzureStorageAccounts",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "resourceGroup for which Azure storage accounts are requested",
+ "name": "resourceGroup",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific Azure cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "subscriptionId for which Azure storage accounts are requested",
+ "name": "subscriptionId",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Azure storage accounts",
+ "type": "object",
+ "properties": {
+ "accounts": {
+ "type": "array",
+ "items": {
+ "description": "Azure storage account provides a unique namespace for your Azure resources",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/resourceGroups/{resourceGroup}/storageAccounts/{storageAccountName}/containers": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns Azure storage containers for the given account.",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Get Azure storage containers",
+ "operationId": "V1AzureStorageContainers",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "resourceGroup for which Azure storage accounts are requested",
+ "name": "resourceGroup",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific Azure cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "subscriptionId for which Azure storage accounts are requested",
+ "name": "subscriptionId",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "resourceGroup for which Azure storage accounts are requested",
+ "name": "storageAccountName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Azure storage containers",
+ "type": "object",
+ "properties": {
+ "containers": {
+ "type": "array",
+ "items": {
+ "description": "Azure storage container organizes a set of blobs, similar to a directory in a file system",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/storageaccounttypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns Azure storage account types.",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Get Azure storage account types",
+ "operationId": "V1AzureStorageAccountTypes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which Azure storage account types are requested",
+ "name": "region",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Azure Storage Account Entity",
+ "type": "object",
+ "properties": {
+ "storageAccountTypes": {
+ "type": "array",
+ "items": {
+ "description": "Azure storage account entity",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Azure storage account id",
+ "type": "string"
+ },
+ "name": {
+ "description": "Azure storage account name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/subscriptions": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns list of Azure subscription list.",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Azure subscription list for the specified account",
+ "operationId": "V1AzureSubscriptionList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Azure cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Azure subscription",
+ "type": "object",
+ "properties": {
+ "subscriptionList": {
+ "type": "array",
+ "items": {
+ "description": "Azure Subscription Type",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/azure/vhds/{vhd}/url": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the Azure vhd url for the specified vhd location",
+ "operationId": "V1AzureVhdUrl",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "vhd location for which Azure vhd url is requested",
+ "name": "vhd",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Azure vhd url entity",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "The name of the resource",
+ "type": "string"
+ },
+ "url": {
+ "description": "The url of the Azure Vhd",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/cloudTypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the custom cloud types",
+ "operationId": "V1CustomCloudTypesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Custom cloudType content response",
+ "type": "object",
+ "properties": {
+ "cloudTypes": {
+ "description": "Array of custom cloud types",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudCategory": {
+ "description": "Cloud category description",
+ "type": "string",
+ "default": "cloud",
+ "enum": [
+ "datacenter",
+ "cloud",
+ "edge"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/cloudTypes/register": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Registers the custom cloud type",
+ "operationId": "V1CustomCloudTypeRegister",
+ "parameters": [
+ {
+ "description": "Request payload to register custom cloud type",
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Custom cloud request entity",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Custom cloud request entity spec",
+ "type": "object",
+ "properties": {
+ "cloudCategory": {
+ "description": "Cloud category description",
+ "type": "string",
+ "default": "cloud",
+ "enum": [
+ "datacenter",
+ "cloud",
+ "edge"
+ ]
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/cloudTypes/{cloudType}": {
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Deletes the custom cloud type",
+ "operationId": "V1CustomCloudTypesDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Unique cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ }
+ },
+ "/v1/clouds/cloudTypes/{cloudType}/cloudAccountKeys": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns valid keys for the cloud account used for custom cloud type",
+ "operationId": "V1CustomCloudTypeCloudAccountKeysGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Custom cloudType custom cloud account keys",
+ "type": "object",
+ "properties": {
+ "keys": {
+ "description": "Array of custom cloud type cloud account keys",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Update the custom cloud type cloud account keys",
+ "operationId": "V1CustomCloudTypeCloudAccountKeysUpdate",
+ "parameters": [
+ {
+ "description": "Request payload for custom cloud meta entity",
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Custom cloudType custom cloud account keys",
+ "type": "object",
+ "properties": {
+ "keys": {
+ "description": "Array of custom cloud type cloud account keys",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Unique cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clouds/cloudTypes/{cloudType}/content/bootstrap": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the custom cloud type bootstrap",
+ "operationId": "V1CustomCloudTypeBootstrapGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Custom cloudType content response",
+ "type": "object",
+ "properties": {
+ "yaml": {
+ "description": "custom cloud type content",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "consumes": [
+ "multipart/form-data"
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Update the custom cloud type bootstrap",
+ "operationId": "V1CustomCloudTypeBootstrapUpdate",
+ "parameters": [
+ {
+ "type": "file",
+ "name": "fileName",
+ "in": "formData"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Delete the custom cloud type bootstrap",
+ "operationId": "V1CustomCloudTypeBootstrapDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Unique cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clouds/cloudTypes/{cloudType}/content/cloudProvider": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the custom cloud type cloud provider",
+ "operationId": "V1CustomCloudTypeCloudProviderGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Custom cloudType content response",
+ "type": "object",
+ "properties": {
+ "yaml": {
+ "description": "custom cloud type content",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "consumes": [
+ "multipart/form-data"
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Update the custom cloud type cloud provider",
+ "operationId": "V1CustomCloudTypeCloudProviderUpdate",
+ "parameters": [
+ {
+ "type": "file",
+ "name": "fileName",
+ "in": "formData"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Delete the custom cloud type cloud provider",
+ "operationId": "V1CustomCloudTypeCloudProviderDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Unique cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clouds/cloudTypes/{cloudType}/content/controlPlane": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the custom cloud type control plane",
+ "operationId": "V1CustomCloudTypeControlPlaneGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Custom cloudType content response",
+ "type": "object",
+ "properties": {
+ "yaml": {
+ "description": "custom cloud type content",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "consumes": [
+ "multipart/form-data"
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Update the custom cloud type control plane",
+ "operationId": "V1CustomCloudTypeControlPlaneUpdate",
+ "parameters": [
+ {
+ "type": "file",
+ "name": "fileName",
+ "in": "formData"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Delete the custom cloud type control plane",
+ "operationId": "V1CustomCloudTypeControlPlaneDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Unique cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clouds/cloudTypes/{cloudType}/content/templates/clusterTemplate": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the custom cloud type cluster template",
+ "operationId": "V1CustomCloudTypeClusterTemplateGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Custom cloudType content response",
+ "type": "object",
+ "properties": {
+ "yaml": {
+ "description": "custom cloud type content",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "consumes": [
+ "multipart/form-data"
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Update the custom cloud type cluster template",
+ "operationId": "V1CustomCloudTypeClusterTemplateUpdate",
+ "parameters": [
+ {
+ "type": "file",
+ "name": "fileName",
+ "in": "formData"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Delete the custom cloud type cluster template",
+ "operationId": "V1CustomCloudTypeClusterTemplateDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Unique cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clouds/cloudTypes/{cloudType}/content/templates/controlPlanePoolTemplate": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the custom cloud type controlPlane pool template",
+ "operationId": "V1CustomCloudTypeControlPlanePoolTemplateGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Custom cloudType content response",
+ "type": "object",
+ "properties": {
+ "yaml": {
+ "description": "custom cloud type content",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "consumes": [
+ "multipart/form-data"
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Update the custom cloud type controlPlane pool template",
+ "operationId": "V1CustomCloudTypeControlPlanePoolTemplateUpdate",
+ "parameters": [
+ {
+ "type": "file",
+ "name": "fileName",
+ "in": "formData"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Delete the custom cloud type controlPlane pool template",
+ "operationId": "V1CustomCloudTypeControlPlanePoolTemplateDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Unique cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clouds/cloudTypes/{cloudType}/content/templates/workerPoolTemplate": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the custom cloud type worker pool template",
+ "operationId": "V1CustomCloudTypeWorkerPoolTemplateGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Custom cloudType content response",
+ "type": "object",
+ "properties": {
+ "yaml": {
+ "description": "custom cloud type content",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "consumes": [
+ "multipart/form-data"
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Update the custom cloud type worker pool template",
+ "operationId": "V1CustomCloudTypeWorkerPoolTemplateUpdate",
+ "parameters": [
+ {
+ "type": "file",
+ "name": "fileName",
+ "in": "formData"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Delete the custom cloud type worker pool template",
+ "operationId": "V1CustomCloudTypeWorkerPoolTemplateDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Unique cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clouds/cloudTypes/{cloudType}/logo": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the custom cloud type logo",
+ "operationId": "V1CustomCloudTypeLogoGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Download the logo",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "consumes": [
+ "multipart/form-data"
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Update the custom cloud type logo",
+ "operationId": "V1CustomCloudTypeLogoUpdate",
+ "parameters": [
+ {
+ "type": "file",
+ "name": "fileName",
+ "in": "formData"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Unique cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clouds/cloudTypes/{cloudType}/meta": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the custom cloud type meta",
+ "operationId": "V1CustomCloudTypeMetaGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Custom cloud meta entity",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Custom cloud spec response entity",
+ "type": "object",
+ "properties": {
+ "cloudCategory": {
+ "description": "Cloud category description",
+ "type": "string",
+ "default": "cloud",
+ "enum": [
+ "datacenter",
+ "cloud",
+ "edge"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Update the custom cloud type meta",
+ "operationId": "V1CustomCloudTypeMetaUpdate",
+ "parameters": [
+ {
+ "description": "Request payload for custom cloud meta entity",
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Custom cloud request entity",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Custom cloud request entity spec",
+ "type": "object",
+ "properties": {
+ "cloudCategory": {
+ "description": "Cloud category description",
+ "type": "string",
+ "default": "cloud",
+ "enum": [
+ "datacenter",
+ "cloud",
+ "edge"
+ ]
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Unique cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clouds/coxedge/account/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate the specified CoxEdge account credentials",
+ "operationId": "V1CoxEdgeAccountValidate",
+ "parameters": [
+ {
+ "description": "Request payload to validate CoxEdge cloud account",
+ "name": "account",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "CoxEdge cloud account",
+ "type": "object",
+ "required": [
+ "apiBaseUrl",
+ "apiKey"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/coxedge/default/baseurls": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of default base urls",
+ "operationId": "V1CoxEdgeBaseUrls",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of CoxEdge base urls",
+ "type": "object",
+ "required": [
+ "baseUrls"
+ ],
+ "properties": {
+ "baseUrls": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/coxedge/environments": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of environments for the specified account",
+ "operationId": "V1CoxEdgeEnvironmentsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific CoxEdge cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "OrganizationId for the specific CoxEdge account",
+ "name": "organizationId",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "List of CoxEdge environments",
+ "schema": {
+ "description": "List of CoxEdge environments",
+ "type": "object",
+ "required": [
+ "environments"
+ ],
+ "properties": {
+ "environments": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge environment entity",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "CoxEdge environment id",
+ "type": "string"
+ },
+ "isDeleted": {
+ "description": "CoxEdge environment state",
+ "type": "boolean"
+ },
+ "name": {
+ "description": "CoxEdge environment name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of environments for baseUrl and apiKey",
+ "operationId": "V1CoxEdgeEnvironments",
+ "parameters": [
+ {
+ "description": "Request payload to get CoxEdge environments",
+ "name": "spec",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Request payload to get CoxEdge environments",
+ "type": "object",
+ "properties": {
+ "credentials": {
+ "description": "CoxEdge credentials to get organizations",
+ "type": "object",
+ "properties": {
+ "apiBaseUrl": {
+ "description": "CoxEdge baseUrl - for api calls",
+ "type": "string"
+ },
+ "apiKey": {
+ "description": "CoxEdge ApiKey - secret for api calls",
+ "type": "string"
+ }
+ }
+ },
+ "organizationId": {
+ "description": "CoxEdge organizationId",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "List of CoxEdge environments",
+ "schema": {
+ "description": "List of CoxEdge environments",
+ "type": "object",
+ "required": [
+ "environments"
+ ],
+ "properties": {
+ "environments": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge environment entity",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "CoxEdge environment id",
+ "type": "string"
+ },
+ "isDeleted": {
+ "description": "CoxEdge environment state",
+ "type": "boolean"
+ },
+ "name": {
+ "description": "CoxEdge environment name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/coxedge/organizations": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of organizations for the specified account",
+ "operationId": "V1CoxEdgeOrganizationsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific CoxEdge cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "List of CoxEdge organizations",
+ "schema": {
+ "description": "List of CoxEdge organizations",
+ "type": "object",
+ "required": [
+ "organizations"
+ ],
+ "properties": {
+ "organizations": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge Organization entity",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "CoxEdge organization id",
+ "type": "string"
+ },
+ "isDeleted": {
+ "description": "CoxEdge organization state",
+ "type": "boolean"
+ },
+ "name": {
+ "description": "CoxEdge organization name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of organizations for baseUrl and apiKey",
+ "operationId": "V1CoxEdgeOrganizations",
+ "parameters": [
+ {
+ "description": "Request payload to get CoxEdge organizations",
+ "name": "spec",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "CoxEdge credentials to get organizations",
+ "type": "object",
+ "properties": {
+ "apiBaseUrl": {
+ "description": "CoxEdge baseUrl - for api calls",
+ "type": "string"
+ },
+ "apiKey": {
+ "description": "CoxEdge ApiKey - secret for api calls",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "List of CoxEdge organizations",
+ "schema": {
+ "description": "List of CoxEdge organizations",
+ "type": "object",
+ "required": [
+ "organizations"
+ ],
+ "properties": {
+ "organizations": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge Organization entity",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "CoxEdge organization id",
+ "type": "string"
+ },
+ "isDeleted": {
+ "description": "CoxEdge organization state",
+ "type": "boolean"
+ },
+ "name": {
+ "description": "CoxEdge organization name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/coxedge/regions": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of CoxEdge regions for the specified account",
+ "operationId": "V1CoxEdgeRegions",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific AWS cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "CoxEdge organization id",
+ "name": "organizationId",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "CoxEdge service name",
+ "name": "service",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "CoxEdge environment name",
+ "name": "environment",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of CoxEdge regions",
+ "type": "object",
+ "required": [
+ "regions"
+ ],
+ "properties": {
+ "regions": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge region entity",
+ "type": "object",
+ "properties": {
+ "code": {
+ "description": "Code of the CoxEdge region",
+ "type": "string"
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the CoxEdge region",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/coxedge/regions/{region}/instancetypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of CoxEdge instance types",
+ "operationId": "V1CoxEdgeInstanceTypes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which CoxEdge instances are listed",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having cpu greater than or equal",
+ "name": "cpuGtEq",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having memory greater than or equal",
+ "name": "memoryGtEq",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of CoxEdge instance types",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "array",
+ "items": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/coxedge/services": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of services for the specified account",
+ "operationId": "V1CoxEdgeServicesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific CoxEdge cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "OrganizationId for the specific CoxEdge account",
+ "name": "organizationId",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "List of CoxEdge services",
+ "schema": {
+ "description": "List of CoxEdge services",
+ "type": "object",
+ "required": [
+ "services"
+ ],
+ "properties": {
+ "services": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge service entity",
+ "type": "object",
+ "properties": {
+ "code": {
+ "description": "CoxEdge service code",
+ "type": "string"
+ },
+ "id": {
+ "description": "CoxEdge service id",
+ "type": "string"
+ },
+ "name": {
+ "description": "CoxEdge service name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of services for baseUrl and apiKey",
+ "operationId": "V1CoxEdgeServices",
+ "parameters": [
+ {
+ "description": "Request payload to get CoxEdge services",
+ "name": "spec",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "CoxEdge credentials to get organizations",
+ "type": "object",
+ "properties": {
+ "apiBaseUrl": {
+ "description": "CoxEdge baseUrl - for api calls",
+ "type": "string"
+ },
+ "apiKey": {
+ "description": "CoxEdge ApiKey - secret for api calls",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of CoxEdge services",
+ "type": "object",
+ "required": [
+ "services"
+ ],
+ "properties": {
+ "services": {
+ "type": "array",
+ "items": {
+ "description": "CoxEdge service entity",
+ "type": "object",
+ "properties": {
+ "code": {
+ "description": "CoxEdge service code",
+ "type": "string"
+ },
+ "id": {
+ "description": "CoxEdge service id",
+ "type": "string"
+ },
+ "name": {
+ "description": "CoxEdge service name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/eks/properties/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate EKS properties",
+ "operationId": "V1EksPropertiesValidate",
+ "parameters": [
+ {
+ "description": "Request payload for EKS properties validate spec",
+ "name": "properties",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Eks properties validate spec",
+ "type": "object",
+ "properties": {
+ "cloudAccountUid": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "vpcId": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/account/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate the specified GCP account credentials",
+ "operationId": "V1GcpAccountValidate",
+ "parameters": [
+ {
+ "description": "Uid for the specific GCP cloud account",
+ "name": "gcpCloudAccount",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Gcp cloud account spec",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "description": "Gcp cloud account entity which takes json credentials or reference to the file where credentials are stored",
+ "type": "object",
+ "properties": {
+ "jsonCredentials": {
+ "description": "Gcp cloud account json credentials",
+ "type": "string"
+ },
+ "jsonCredentialsFileUid": {
+ "description": "Reference of the credentials stored in the file",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/azs/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate the specified GCP az",
+ "operationId": "V1GcpAzValidate",
+ "parameters": [
+ {
+ "description": "Uid for the specific GCP cloud account",
+ "name": "entity",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Az validate entity",
+ "type": "object",
+ "properties": {
+ "azs": {
+ "description": "Gcp Azs",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "project": {
+ "description": "Gcp project",
+ "type": "string"
+ },
+ "region": {
+ "description": "Gcp region",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cloud account uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/bucketname/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate the specified GCP bucket name credentials",
+ "operationId": "V1GcpBucketNameValidate",
+ "parameters": [
+ {
+ "description": "Request payload for GCP account name validate",
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Gcp cloud account name validate spec",
+ "type": "object",
+ "required": [
+ "credentials",
+ "bucketName"
+ ],
+ "properties": {
+ "bucketName": {
+ "description": "Bucket name in the GCP",
+ "type": "string"
+ },
+ "credentials": {
+ "description": "Gcp cloud account entity which takes json credentials or reference to the file where credentials are stored",
+ "type": "object",
+ "properties": {
+ "jsonCredentials": {
+ "description": "Gcp cloud account json credentials",
+ "type": "string"
+ },
+ "jsonCredentialsFileUid": {
+ "description": "Reference of the credentials stored in the file",
+ "type": "string"
+ }
+ }
+ },
+ "projectId": {
+ "description": "ProjectId in the GCP",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/image/container/validate": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validates the image with tag",
+ "operationId": "V1GcpContainerImageValidate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "image path in the container",
+ "name": "imagePath",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "tag in the GCP container",
+ "name": "tag",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/images/{imageName}/url": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the Gcp image url for the specified image location",
+ "operationId": "V1GcpImageUrl",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "imageName for which GCP image url is requested",
+ "name": "imageName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Gcp image url entity",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/projects": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of GCP projects for the specified account",
+ "operationId": "V1GcpProjects",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific GCP cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of GCP Projects",
+ "type": "object",
+ "properties": {
+ "projects": {
+ "description": "List of GCP Projects",
+ "type": "array",
+ "items": {
+ "description": "GCP project organizes all Google Cloud resources",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "GCP project id",
+ "type": "string"
+ },
+ "name": {
+ "description": "GCP project name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/projects/{project}/regions": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of GCP regions",
+ "operationId": "V1GcpRegions",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific GCP cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Project Name for which GCP zones are requested",
+ "name": "project",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of GCP Regions",
+ "type": "object",
+ "properties": {
+ "regions": {
+ "type": "array",
+ "items": {
+ "description": "Geographical region made up of zones where you can host your GCP resources",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "GCP region name",
+ "type": "string"
+ },
+ "status": {
+ "description": "GCP region status",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/projects/{project}/regions/{region}/networks": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of GCP networks for the specified account",
+ "operationId": "V1GcpNetworks",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific GCP cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Region for which GCP networks are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Project Name for which GCP networks are requested",
+ "name": "project",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of GCP networks",
+ "type": "object",
+ "properties": {
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "GCP network enity is a virtual version of a physical network",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "GCP network name",
+ "type": "string"
+ },
+ "subnets": {
+ "description": "List of GCP subnet",
+ "type": "array",
+ "items": {
+ "description": "Subnets are regional resources, and have IP address ranges associated with them",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "GCP subnet id",
+ "type": "string"
+ },
+ "name": {
+ "description": "GCP subnet name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/projects/{project}/regions/{region}/zones": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of GCP zones for the specified account and region",
+ "operationId": "V1GcpZones",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific GCP cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Region for which GCP zones are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Project Name for which GCP zones are requested",
+ "name": "project",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of GCP zones",
+ "type": "object",
+ "properties": {
+ "zones": {
+ "type": "array",
+ "items": {
+ "description": "A zone is a deployment area for Google Cloud resources within a region",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "GCP zone name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/projects/{project}/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate the specified GCP project",
+ "operationId": "V1GcpProjectValidate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "GCP project uid",
+ "name": "project",
+ "in": "path",
+ "required": true
+ },
+ {
+ "description": "Uid for the specific GCP cloud account",
+ "name": "cloudAccountUid",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Cloud account uid entity",
+ "type": "object",
+ "properties": {
+ "uid": {
+ "description": "Cloud account uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/projects/{project}/zones": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of GCP zones for the specified account",
+ "operationId": "V1GcpAvailabilityZones",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific GCP cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Project Name for which GCP zones are requested",
+ "name": "project",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of GCP zones",
+ "type": "object",
+ "properties": {
+ "zones": {
+ "type": "array",
+ "items": {
+ "description": "A zone is a deployment area for Google Cloud resources within a region",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "GCP zone name",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/properties/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate GCP properties",
+ "operationId": "V1GcpPropertiesValidate",
+ "parameters": [
+ {
+ "description": "Request payload for GCP properties validate spec",
+ "name": "properties",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Gcp properties validate spec",
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "cloudAccountUid": {
+ "type": "string"
+ },
+ "projectId": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/regions/{region}/instancetypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of GCP instance types",
+ "operationId": "V1GcpInstanceTypes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which GCP instance types are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having cpu greater than or equal",
+ "name": "cpuGtEq",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having memory greater than or equal",
+ "name": "memoryGtEq",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having gpu greater than or equal",
+ "name": "gpuGtEq",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Retrieves a list of GCP instance types",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "description": "List of GCP instance types",
+ "type": "array",
+ "items": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/gcp/regions/{region}/storagetypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Gcp storage types",
+ "operationId": "V1GcpStorageTypes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which GCP storage types are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of GCP storage types",
+ "type": "object",
+ "properties": {
+ "storageTypes": {
+ "type": "array",
+ "items": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/maas/account/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns no contents if account is valid else error.",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Check if Maas account is valid",
+ "operationId": "V1MaasAccountValidate",
+ "parameters": [
+ {
+ "description": "Request payload for Maas cloud account",
+ "name": "account",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "required": [
+ "apiKey",
+ "apiEndpoint"
+ ],
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/maas/azs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Maas zones for a particular account uid",
+ "operationId": "V1MaasZonesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Maas cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Maas zones",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas zone",
+ "type": "object",
+ "properties": {
+ "description": {
+ "description": "Description of Maas domain",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of Maas zone",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/maas/domains": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Maas domains",
+ "operationId": "V1MaasDomainsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Maas cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Maas domains",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas domain",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of Maas domain",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/maas/resourcePools": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Maas pools for a particular account uid",
+ "operationId": "V1MaasPoolsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Maas cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Maas pools",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas pool",
+ "type": "object",
+ "properties": {
+ "description": {
+ "description": "Description of Maas domain",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of Maas pool",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/maas/subnets": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Maas subnets for a particular account uid",
+ "operationId": "V1MaasSubnetsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Maas cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Maas subnets",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas subnet",
+ "type": "object",
+ "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": {
+ "description": "Maas vlan entity",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/maas/tags": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Maas tags for a particular account uid",
+ "operationId": "V1MaasTagsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Maas cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Maas tags",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Maas tag",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/openstack/account/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns no contents if account is valid else error.",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Check if OpenStack account is valid",
+ "operationId": "V1OpenStackAccountValidate",
+ "parameters": [
+ {
+ "description": "Request payload for OpenStack cloud account",
+ "name": "openstackCloudAccount",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "auth-url,project,username,password,domain,cacert etc",
+ "type": "object",
+ "required": [
+ "identityEndpoint",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/openstack/azs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of OpenStack azs for a particular account uid",
+ "operationId": "V1OpenStackAzsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific OpenStack cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "project for which OpenStack azs are requested",
+ "name": "project",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "region for which OpenStack azs are requested",
+ "name": "region",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "domain for which OpenStack azs are requested",
+ "name": "domain",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of OpenStack azs",
+ "type": "object",
+ "required": [
+ "azs"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack az entity",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of OpenStack az",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/openstack/flavors": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the OpenStack flavors",
+ "operationId": "V1OpenStackFlavorsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific OpenStack cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "project for which OpenStack flavors are requested",
+ "name": "project",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "region for which OpenStack flavors are requested",
+ "name": "region",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "domain for which OpenStack flavors are requested",
+ "name": "domain",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of OpenStack flavours",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack flavor entity. Flavor represent (virtual) hardware configurations for server resources",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/openstack/keypairs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the OpenStack keypair",
+ "operationId": "V1OpenStackKeypairsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific OpenStack cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "project for which OpenStack keypairs are requested",
+ "name": "project",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "region for which OpenStack keypairs are requested",
+ "name": "region",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "domain for which OpenStack keypairs are requested",
+ "name": "domain",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of OpenStack keypairs",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack keypair. KeyPair is an SSH key known to the OpenStack Cloud that is available to be injected into servers",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/openstack/networks": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the OpenStack networks",
+ "operationId": "V1OpenStackNetworksGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific OpenStack cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "project for which OpenStack networks are requested",
+ "name": "project",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "region for which OpenStack networks are requested",
+ "name": "region",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "domain for which OpenStack networks are requested",
+ "name": "domain",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of OpenStack networks",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack network",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack subnet entity",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/openstack/projects": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the OpenStack projects",
+ "operationId": "V1OpenStackProjectsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific OpenStack cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Array of OpenStack projects",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Project represents an OpenStack Identity Project",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/openstack/regions": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the OpenStack regions",
+ "operationId": "V1OpenStackRegionsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific OpenStack cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of OpenStack regions and domains",
+ "type": "object",
+ "required": [
+ "regions",
+ "domains"
+ ],
+ "properties": {
+ "domains": {
+ "description": "List of OpenStack domains",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack domain. A Domain is a collection of projects, users, and roles",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "regions": {
+ "description": "List of OpenStack regions",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "OpenStack region entity",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/tencent/account/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Validate the specified Tencent account credentials",
+ "operationId": "V1TencentAccountValidate",
+ "parameters": [
+ {
+ "description": "Request payload to validate tencent cloud account",
+ "name": "account",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "required": [
+ "secretId",
+ "secretKey"
+ ],
+ "properties": {
+ "secretId": {
+ "description": "Tencent api secretID",
+ "type": "string"
+ },
+ "secretKey": {
+ "description": "Tencent api secret key",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/tencent/regions": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Tencent regions for the specified account",
+ "operationId": "V1TencentRegions",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific Tencent cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of tencent regions",
+ "type": "object",
+ "required": [
+ "regions"
+ ],
+ "properties": {
+ "regions": {
+ "description": "Tencent regions entity",
+ "type": "array",
+ "items": {
+ "description": "Tencent region entity",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of tencent region",
+ "type": "string"
+ },
+ "state": {
+ "description": "State of tencent region",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/tencent/regions/{region}/instancetypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Tencent instance types",
+ "operationId": "V1TencentInstanceTypes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which tencent instances are listed",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having cpu greater than or equal",
+ "name": "cpuGtEq",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having memory greater than or equal",
+ "name": "memoryGtEq",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "format": "double",
+ "description": "Filter for instances having gpu greater than or equal",
+ "name": "gpuGtEq",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific tencent cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Tencent instance types",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "array",
+ "items": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/tencent/regions/{region}/keypairs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of keypairs for the specified account",
+ "operationId": "V1TencentKeypairs",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which keypairs are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific Tencent cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Tencent keypairs",
+ "type": "object",
+ "properties": {
+ "keypairs": {
+ "type": "array",
+ "items": {
+ "description": "Tencent Keypair entity",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Tencent keypair id",
+ "type": "string"
+ },
+ "name": {
+ "description": "Tencent keypair name",
+ "type": "string"
+ },
+ "publickey": {
+ "description": "Tencent public key",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/tencent/regions/{region}/securitygroups": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of secutity groups for the specified account",
+ "operationId": "V1TencentSecurityGroups",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which security groups are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific Tencent cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Tencent security groups",
+ "type": "object",
+ "properties": {
+ "groups": {
+ "type": "array",
+ "items": {
+ "description": "Tencent Security Group. A security group is a virtual firewall that features stateful data packet filtering",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/tencent/regions/{region}/storagetypes": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Tencent storage types",
+ "operationId": "V1TencentStorageTypes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which tencent storages are listed",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific tencent cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Zone for which tencent storages are listed",
+ "name": "zone",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Tencent storage types",
+ "type": "object",
+ "properties": {
+ "storageTypes": {
+ "type": "array",
+ "items": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/tencent/regions/{region}/vpcs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of VPCs for the specified account",
+ "operationId": "V1TencentVpcs",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which VPCs are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific Tencent cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Tencent VPCs",
+ "type": "object",
+ "required": [
+ "vpcs"
+ ],
+ "properties": {
+ "vpcs": {
+ "type": "array",
+ "items": {
+ "description": "Tencent VPC entity",
+ "type": "object",
+ "required": [
+ "vpcId"
+ ],
+ "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": {
+ "type": "array",
+ "items": {
+ "description": "Tencent Subnet entity",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "vpcId": {
+ "description": "Tencent VPC id",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/tencent/regions/{region}/zones": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves a list of Tencent availability zones for the specified region",
+ "operationId": "V1TencentZones",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Region for which zones are requested",
+ "name": "region",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Uid for the specific Tencent cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Tencent Availability zones",
+ "type": "object",
+ "required": [
+ "zones"
+ ],
+ "properties": {
+ "zones": {
+ "type": "array",
+ "items": {
+ "description": "Tencent availability zone",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/vsphere/account/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns no contents if account is valid else error.",
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Check if Vsphere account is valid",
+ "operationId": "V1VsphereAccountValidate",
+ "parameters": [
+ {
+ "description": "Request payload for VSphere cloud account",
+ "name": "vsphereCloudAccount",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/vsphere/datacenters": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the vsphere data centers",
+ "operationId": "V1VsphereDatacenters",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific OpenStack cloud account",
+ "name": "cloudAccountUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Datacenters with computeclusters",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "List of associated datacenters",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "List of Datacenter with computeclusters",
+ "type": "object",
+ "properties": {
+ "computeclusters": {
+ "description": "List of the VSphere compute clusters in datacenter",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "datacenter": {
+ "description": "name of the datacenter of the VSphere",
+ "type": "string"
+ },
+ "folders": {
+ "description": "List of the VSphere folders in datacenter",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/vsphere/datacenters/{uid}/computeclusters/{computecluster}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the resources for vsphere compute cluster",
+ "operationId": "V1VsphereComputeClusterResources",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Uid for the specific VSphere cloud account",
+ "name": "cloudAccountUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "computecluster for which resources is requested",
+ "name": "computecluster",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "VSphere datacenter uid for which resources is requested",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Datacenter and its resources like datastore, resoucepool, folders",
+ "type": "object",
+ "properties": {
+ "computecluster": {
+ "description": "Vsphere compute cluster",
+ "type": "object",
+ "properties": {
+ "datastores": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "resourcePools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "datacenter": {
+ "description": "Name of the datacenter",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/vsphere/env": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves vsphere env",
+ "operationId": "V1VsphereEnv",
+ "parameters": [
+ {
+ "description": "Request payload for VSphere cloud account",
+ "name": "vsphereCloudAccount",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Vsphere environment entity",
+ "type": "object",
+ "properties": {
+ "version": {
+ "description": "Version of vsphere environment",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/{cloudType}/instance/spotprice": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Retrieves the cloud instance spot price based on zone and timestamp for a specific cloud",
+ "operationId": "V1CloudInstanceSpotPriceGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cloud type [aws/azure/gcp/tencent]",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Instance type for a specific cloud type",
+ "name": "instanceType",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Availability zone for a specific cloud type",
+ "name": "zone",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "name": "timestamp",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Spot price entity of a particular cloud type",
+ "type": "object",
+ "properties": {
+ "spotPrice": {
+ "description": "Spot price of a resource for a particular cloud",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/{cloud}/compute/{type}/rate": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the cloud compute rate",
+ "operationId": "V1CloudComputeRate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "cloud for which compute rate is requested",
+ "name": "cloud",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "instance type for which compute rate is requested",
+ "name": "type",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "region for which compute rate is requested",
+ "name": "region",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clouds/{cloud}/storage/{type}/rate": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clouds"
+ ],
+ "summary": "Returns the cloud storage rate",
+ "operationId": "V1CloudStorageRate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "cloud for which compute rate is requested",
+ "name": "cloud",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "storage type for which compute rate is requested",
+ "name": "type",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "region for which compute rate is requested",
+ "name": "region",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "integer",
+ "description": "maxDiskType for which compute rate is requested",
+ "name": "maxDiskType",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clustergroups": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Create cluster groups",
+ "operationId": "v1ClusterGroupsCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster group information",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster group specifications request entity",
+ "properties": {
+ "clusterRefs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster group cluster reference",
+ "properties": {
+ "clusterName": {
+ "type": "string"
+ },
+ "clusterUid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clustersConfig": {
+ "description": "Clusters config of cluster group",
+ "properties": {
+ "endpointType": {
+ "description": "Host cluster endpoint type",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ },
+ "hostClustersConfig": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "endpointConfig": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "kubernetesDistroType": {
+ "type": "string",
+ "default": "k3s",
+ "enum": [
+ "k3s",
+ "cncf_k8s"
+ ]
+ },
+ "limitConfig": {
+ "description": "Cluster group limit config",
+ "properties": {
+ "cpu": {
+ "description": "Deprecated. Use field cpuMilliCore",
+ "type": "integer",
+ "format": "int32"
+ },
+ "cpuMilliCore": {
+ "description": "CPU in milli cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memory": {
+ "description": "Deprecated. Use field memoryMiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "Memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "overSubscription": {
+ "description": "Over subscription percentage",
+ "type": "integer",
+ "format": "int32"
+ },
+ "storageGiB": {
+ "description": "Storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "values": {
+ "type": "string"
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "hostCluster"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clustergroups/developerCredit/usage/{scope}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Get cluster group developer credit usage by scope",
+ "operationId": "v1ClusterGroupsDeveloperCreditUsageGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster group developer credit usage",
+ "schema": {
+ "description": "Cluster group resource allocated and usage information",
+ "properties": {
+ "allocatedCredit": {
+ "description": "Credits allocated for each tenant/user",
+ "properties": {
+ "cpu": {
+ "description": "cpu in cores",
+ "type": "number",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "memoryGiB": {
+ "description": "memory in GiB",
+ "type": "number",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "storageGiB": {
+ "description": "storage in GiB",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "virtualClustersLimit": {
+ "description": "number of active virtual clusters",
+ "type": "number",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ },
+ "usedCredit": {
+ "description": "Credits allocated for each tenant/user",
+ "properties": {
+ "cpu": {
+ "description": "cpu in cores",
+ "type": "number",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "memoryGiB": {
+ "description": "memory in GiB",
+ "type": "number",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "storageGiB": {
+ "description": "storage in GiB",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "virtualClustersLimit": {
+ "description": "number of active virtual clusters",
+ "type": "number",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "scope",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clustergroups/hostCluster": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Retrieves a list of cluster groups host cluster summary",
+ "operationId": "v1ClusterGroupsHostClusterSummary",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster groups of host cluster type summary",
+ "schema": {
+ "type": "object",
+ "required": [
+ "summaries"
+ ],
+ "properties": {
+ "summaries": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster group summay",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster group summay spec",
+ "properties": {
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cluster group resource allocated and usage information",
+ "properties": {
+ "allocated": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "used": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "endpointType": {
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ },
+ "hostClusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "hostClustersCount": {
+ "type": "integer",
+ "x-omitempty": false
+ },
+ "memory": {
+ "description": "Cluster group resource allocated and usage information",
+ "properties": {
+ "allocated": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "used": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "scope": {
+ "type": "string"
+ },
+ "virtualClustersCount": {
+ "type": "integer",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clustergroups/hostCluster/metadata": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Retrieves a list of cluster groups host cluster metadata",
+ "operationId": "v1ClusterGroupsHostClusterMetadata",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster groups host cluster metadata items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Object scope identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clustergroups/validate/name": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Validates the cluster groups name",
+ "operationId": "v1ClusterGroupsValidateName",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "name",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clustergroups/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Returns the specified cluster groups",
+ "operationId": "v1ClusterGroupsUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster group information",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "clusterRefs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster group cluster reference",
+ "properties": {
+ "clusterName": {
+ "type": "string"
+ },
+ "clusterUid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clustersConfig": {
+ "description": "Clusters config of cluster group",
+ "properties": {
+ "endpointType": {
+ "description": "Host cluster endpoint type",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ },
+ "hostClustersConfig": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "endpointConfig": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "kubernetesDistroType": {
+ "type": "string",
+ "default": "k3s",
+ "enum": [
+ "k3s",
+ "cncf_k8s"
+ ]
+ },
+ "limitConfig": {
+ "description": "Cluster group limit config",
+ "properties": {
+ "cpu": {
+ "description": "Deprecated. Use field cpuMilliCore",
+ "type": "integer",
+ "format": "int32"
+ },
+ "cpuMilliCore": {
+ "description": "CPU in milli cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memory": {
+ "description": "Deprecated. Use field memoryMiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "Memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "overSubscription": {
+ "description": "Over subscription percentage",
+ "type": "integer",
+ "format": "int32"
+ },
+ "storageGiB": {
+ "description": "Storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "values": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "hostCluster"
+ ]
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster group status",
+ "properties": {
+ "isActive": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Deletes the specified cluster group",
+ "operationId": "v1ClusterGroupsUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clustergroups/{uid}/hostCluster": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Updates cluster reference and host cluster config",
+ "operationId": "v1ClusterGroupsUidHostClusterUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Clusters and clusters config of cluster group",
+ "properties": {
+ "clusterRefs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster group cluster reference",
+ "properties": {
+ "clusterName": {
+ "type": "string"
+ },
+ "clusterUid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clustersConfig": {
+ "description": "Clusters config of cluster group",
+ "properties": {
+ "endpointType": {
+ "description": "Host cluster endpoint type",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ },
+ "hostClustersConfig": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "endpointConfig": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "kubernetesDistroType": {
+ "type": "string",
+ "default": "k3s",
+ "enum": [
+ "k3s",
+ "cncf_k8s"
+ ]
+ },
+ "limitConfig": {
+ "description": "Cluster group limit config",
+ "properties": {
+ "cpu": {
+ "description": "Deprecated. Use field cpuMilliCore",
+ "type": "integer",
+ "format": "int32"
+ },
+ "cpuMilliCore": {
+ "description": "CPU in milli cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memory": {
+ "description": "Deprecated. Use field memoryMiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "Memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "overSubscription": {
+ "description": "Over subscription percentage",
+ "type": "integer",
+ "format": "int32"
+ },
+ "storageGiB": {
+ "description": "Storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "values": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clustergroups/{uid}/meta": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Updates the specified cluster groups meta",
+ "operationId": "v1ClusterGroupsUidMetaUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clustergroups/{uid}/packs/resolvedValues": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Returns the specified clustergroup's profile packs resolved values",
+ "operationId": "v1ClusterGroupsUidPacksResolvedValuesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster profiles resolved values response",
+ "type": "object",
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile resolved pack values",
+ "properties": {
+ "resolved": {
+ "description": "Cluster profile pack resolved values",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster group uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profiles param reference entity",
+ "type": "object",
+ "properties": {
+ "references": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "/v1/clustergroups/{uid}/profiles": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Returns the associated profiles of a specified cluster group",
+ "operationId": "v1ClusterGroupsUidProfilesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "includes pack meta such as schema, presets",
+ "name": "includePackMeta",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "required": [
+ "profiles"
+ ],
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile response",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster profile spec response",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "description": "Cluster profile cloud type",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile packs object",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack object",
+ "type": "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": {
+ "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "cloudTypes": {
+ "description": "Pack supported cloud types",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "description": "Pack logo url",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the cluster profile",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "presets": {
+ "description": "Pack presets are the set of configurations applied on user selection of presets",
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "description": "Pack schema contains constraints such as data type, format, hints for the pack values",
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "template": {
+ "description": "Pack template configuration",
+ "properties": {
+ "manifest": {
+ "description": "Pack template manifest content",
+ "type": "string"
+ },
+ "parameters": {
+ "description": "Pack template parameters",
+ "properties": {
+ "inputParameters": {
+ "description": "Pack template input parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "outputParameters": {
+ "description": "Pack template output parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "values": {
+ "description": "Pack template values",
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "Pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Pack version",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Pack status",
+ "type": "object"
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "version": {
+ "description": "Cluster profile version",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clustergroups"
+ ],
+ "summary": "Updates the specified cluster groups profiles",
+ "operationId": "v1ClusterGroupsUidProfilesUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "profiles"
+ ],
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "spcApplySettings": {
+ "type": "object",
+ "properties": {
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "DownloadAndInstall",
+ "DownloadAndInstallLater"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "ClusterGroup uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clusterprofiles": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Creates a cluster profile",
+ "operationId": "v1ClusterProfilesCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "template": {
+ "description": "Cluster profile template spec",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack request payload",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "layer": {
+ "description": "Pack layer",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "cluster",
+ "enum": [
+ "cluster",
+ "infra",
+ "add-on",
+ "system"
+ ]
+ }
+ }
+ },
+ "variables": {
+ "description": "List of unique variable fields defined for a cluster profile with schema constraints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Unique variable field with schema definition",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "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": {
+ "description": "Format type of the variable value",
+ "type": "string",
+ "default": "string",
+ "enum": [
+ "string",
+ "number",
+ "boolean",
+ "ipv4",
+ "ipv4cidr",
+ "ipv6",
+ "version"
+ ]
+ },
+ "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
+ }
+ }
+ }
+ },
+ "version": {
+ "description": "Cluster profile version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clusterprofiles/bulk": {
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Deletes list of cluster profiles",
+ "operationId": "v1ClusterProfilesBulkDelete",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "required": [
+ "uids"
+ ],
+ "properties": {
+ "uids": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "properties": {
+ "deletedCount": {
+ "type": "integer",
+ "x-omitempty": false
+ },
+ "failures": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "errMsg": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "x-omitempty": false
+ },
+ "isSucceeded": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "message": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clusterprofiles/import": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Imports a cluster profile",
+ "operationId": "v1ClusterProfilesImport",
+ "parameters": [
+ {
+ "type": "boolean",
+ "description": "If true then cluster profile will be published post successful import",
+ "name": "publish",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profile import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster profile import metadata",
+ "type": "object",
+ "properties": {
+ "description": {
+ "description": "Cluster profile description",
+ "type": "string"
+ },
+ "labels": {
+ "description": "Cluster profile labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster profile import spec",
+ "type": "object",
+ "properties": {
+ "template": {
+ "description": "Cluster profile import template",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "description": "Cluster profile cloud type",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack import request payload",
+ "type": "object",
+ "properties": {
+ "layer": {
+ "description": "Pack layer [ \"os\", \"k8s\", \"cni\", \"csi\", \"addon\" ]",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests array",
+ "type": "array",
+ "items": {
+ "description": "Pack manifest import objct",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Pack manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Pack manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "registry": {
+ "description": "Pack registry import entity",
+ "type": "object",
+ "properties": {
+ "matchingRegistries": {
+ "type": "array",
+ "items": {
+ "description": "Pack registry metadata",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "Pack registry metadata",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ }
+ }
+ },
+ "variables": {
+ "description": "List of unique variable fields defined for a cluster profile with schema constraints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Unique variable field with schema definition",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "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": {
+ "description": "Format type of the variable value",
+ "type": "string",
+ "default": "string",
+ "enum": [
+ "string",
+ "number",
+ "boolean",
+ "ipv4",
+ "ipv4cidr",
+ "ipv6",
+ "version"
+ ]
+ },
+ "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
+ }
+ }
+ }
+ },
+ "version": {
+ "description": "Cluster profile version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clusterprofiles/import/file": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "consumes": [
+ "multipart/form-data"
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Imports a cluster profile via file",
+ "operationId": "v1ClusterProfilesImportFile",
+ "parameters": [
+ {
+ "type": "boolean",
+ "description": "If true then cluster profile will be published post successful import",
+ "name": "publish",
+ "in": "query"
+ },
+ {
+ "type": "file",
+ "description": "Cluster profile import file",
+ "name": "importFile",
+ "in": "formData"
+ },
+ {
+ "enum": [
+ "yaml",
+ "json"
+ ],
+ "type": "string",
+ "default": "json",
+ "description": "Cluster profile import file format [\"yaml\", \"json\"]",
+ "name": "format",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clusterprofiles/import/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Validates cluster profile import",
+ "operationId": "v1ClusterProfilesImportValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profile import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster profile import metadata",
+ "type": "object",
+ "properties": {
+ "description": {
+ "description": "Cluster profile description",
+ "type": "string"
+ },
+ "labels": {
+ "description": "Cluster profile labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster profile import spec",
+ "type": "object",
+ "properties": {
+ "template": {
+ "description": "Cluster profile import template",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "description": "Cluster profile cloud type",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack import request payload",
+ "type": "object",
+ "properties": {
+ "layer": {
+ "description": "Pack layer [ \"os\", \"k8s\", \"cni\", \"csi\", \"addon\" ]",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests array",
+ "type": "array",
+ "items": {
+ "description": "Pack manifest import objct",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Pack manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Pack manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "registry": {
+ "description": "Pack registry import entity",
+ "type": "object",
+ "properties": {
+ "matchingRegistries": {
+ "type": "array",
+ "items": {
+ "description": "Pack registry metadata",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "Pack registry metadata",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ }
+ }
+ },
+ "variables": {
+ "description": "List of unique variable fields defined for a cluster profile with schema constraints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Unique variable field with schema definition",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "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": {
+ "description": "Format type of the variable value",
+ "type": "string",
+ "default": "string",
+ "enum": [
+ "string",
+ "number",
+ "boolean",
+ "ipv4",
+ "ipv4cidr",
+ "ipv6",
+ "version"
+ ]
+ },
+ "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
+ }
+ }
+ }
+ },
+ "version": {
+ "description": "Cluster profile version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster profile import validated response",
+ "schema": {
+ "description": "Cluster profile import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster profile import metadata",
+ "type": "object",
+ "properties": {
+ "description": {
+ "description": "Cluster profile description",
+ "type": "string"
+ },
+ "labels": {
+ "description": "Cluster profile labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster profile import spec",
+ "type": "object",
+ "properties": {
+ "template": {
+ "description": "Cluster profile import template",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "description": "Cluster profile cloud type",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack import request payload",
+ "type": "object",
+ "properties": {
+ "layer": {
+ "description": "Pack layer [ \"os\", \"k8s\", \"cni\", \"csi\", \"addon\" ]",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests array",
+ "type": "array",
+ "items": {
+ "description": "Pack manifest import objct",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Pack manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Pack manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "registry": {
+ "description": "Pack registry import entity",
+ "type": "object",
+ "properties": {
+ "matchingRegistries": {
+ "type": "array",
+ "items": {
+ "description": "Pack registry metadata",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "Pack registry metadata",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ }
+ }
+ },
+ "variables": {
+ "description": "List of unique variable fields defined for a cluster profile with schema constraints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Unique variable field with schema definition",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "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": {
+ "description": "Format type of the variable value",
+ "type": "string",
+ "default": "string",
+ "enum": [
+ "string",
+ "number",
+ "boolean",
+ "ipv4",
+ "ipv4cidr",
+ "ipv6",
+ "version"
+ ]
+ },
+ "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
+ }
+ }
+ }
+ },
+ "version": {
+ "description": "Cluster profile version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clusterprofiles/macros": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Retrieves a list of macros",
+ "operationId": "v1MacrosList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "properties": {
+ "macros": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clusterprofiles/validate/name": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Validates the cluster profile name and version",
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Validates the cluster profile metadata",
+ "operationId": "v1ClusterProfilesValidateNameVersion",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile name",
+ "name": "name",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Cluster profile version",
+ "name": "version",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clusterprofiles/validate/packs": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Validates cluster profile packs",
+ "operationId": "v1ClusterProfilesValidatePacks",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profile template spec",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack request payload",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "layer": {
+ "description": "Pack layer",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "cluster",
+ "enum": [
+ "cluster",
+ "infra",
+ "add-on",
+ "system"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster profile packs validation response",
+ "schema": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clusterprofiles/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Returns a specified cluster profile",
+ "operationId": "v1ClusterProfilesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "ClusterProfile is the Schema for the clusterprofiles API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "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",
+ "type": "object",
+ "properties": {
+ "draft": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "published": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "version": {
+ "type": "string"
+ },
+ "versions": {
+ "description": "Cluster profile's list of all the versions",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile with version",
+ "properties": {
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "ClusterProfileStatus defines the observed state of ClusterProfile",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "isPublished": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Updates the specified cluster profile",
+ "operationId": "v1ClusterProfilesUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profile update request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster profile update spec",
+ "type": "object",
+ "properties": {
+ "template": {
+ "description": "Cluster profile template update spec",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack input entity with values to overwrite and manifests for the intial creation",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "layer": {
+ "description": "Pack layer",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "cluster",
+ "enum": [
+ "cluster",
+ "infra",
+ "add-on",
+ "system"
+ ]
+ }
+ }
+ },
+ "version": {
+ "description": "Cluster profile version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Deletes the specified cluster profile",
+ "operationId": "v1ClusterProfilesDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Comma seperated pack meta such as schema, presets",
+ "name": "includePackMeta",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/clone": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Creates a clone of the specified cluster profile",
+ "operationId": "v1ClusterProfilesUidClone",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profile clone request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster profile clone metadata",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "description": "Cloned cluster profile name",
+ "type": "string"
+ },
+ "target": {
+ "description": "Cluster profile clone meta input entity",
+ "type": "object",
+ "required": [
+ "scope"
+ ],
+ "properties": {
+ "projectUid": {
+ "description": "Cloned cluster profile project uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "system",
+ "tenant",
+ "project",
+ "resource"
+ ]
+ }
+ }
+ },
+ "version": {
+ "description": "Cloned cluster profile version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/clone/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Validates the cloned cluster profile name, version and target project uid",
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Validates the cluster profile clone",
+ "operationId": "v1ClusterProfilesUidCloneValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profile clone metadata",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "description": "Cloned cluster profile name",
+ "type": "string"
+ },
+ "target": {
+ "description": "Cluster profile clone meta input entity",
+ "type": "object",
+ "required": [
+ "scope"
+ ],
+ "properties": {
+ "projectUid": {
+ "description": "Cloned cluster profile project uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "system",
+ "tenant",
+ "project",
+ "resource"
+ ]
+ }
+ }
+ },
+ "version": {
+ "description": "Cloned cluster profile version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/export": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Export the specified cluster profile",
+ "operationId": "V1ClusterProfilesUidExport",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Exports cluster profile as a file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "enum": [
+ "yaml",
+ "json"
+ ],
+ "type": "string",
+ "default": "json",
+ "description": "Cluster profile export file format [ \"yaml\", \"json\" ]",
+ "name": "format",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/export/terraform": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Downloads the specified cluster profile",
+ "operationId": "V1ClusterProfilesUidExportTerraform",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Downloads cluster profile export file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "enum": [
+ "yaml",
+ "json"
+ ],
+ "type": "string",
+ "default": "yaml",
+ "description": "Cluster profile export file format [ \"yaml\", \"json\" ]",
+ "name": "format",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/metadata": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Updates the specified cluster profile metadata",
+ "operationId": "v1ClusterProfilesUidMetadataUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profile metadata request payload",
+ "type": "object",
+ "required": [
+ "metadata"
+ ],
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster profile update spec",
+ "type": "object",
+ "properties": {
+ "version": {
+ "description": "Cluster profile version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/packRefs": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Updates cluster profile packs ref",
+ "operationId": "v1ClusterProfilesPacksRefUpdate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Cluster profile notification uid",
+ "name": "notify",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profile notification update request payload",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack input entity with values to overwrite and manifests for the intial creation",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "layer": {
+ "description": "Pack layer",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/packs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Returns the specified cluster profile packs",
+ "operationId": "v1ClusterProfilesUidPacksGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "List of cluster profile packs",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile packs object",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack object",
+ "type": "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": {
+ "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "cloudTypes": {
+ "description": "Pack supported cloud types",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "description": "Pack logo url",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the cluster profile",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "presets": {
+ "description": "Pack presets are the set of configurations applied on user selection of presets",
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "description": "Pack schema contains constraints such as data type, format, hints for the pack values",
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "template": {
+ "description": "Pack template configuration",
+ "properties": {
+ "manifest": {
+ "description": "Pack template manifest content",
+ "type": "string"
+ },
+ "parameters": {
+ "description": "Pack template parameters",
+ "properties": {
+ "inputParameters": {
+ "description": "Pack template input parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "outputParameters": {
+ "description": "Pack template output parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "values": {
+ "description": "Pack template values",
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "Pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Pack version",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Pack status",
+ "type": "object"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Adds a new pack to the specified cluster profile and returns the created pack uid",
+ "operationId": "v1ClusterProfilesUidPacksAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Pack request payload",
+ "properties": {
+ "pack": {
+ "description": "Pack request payload",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "layer": {
+ "description": "Pack layer",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Comma seperated pack meta such as schema, presets",
+ "name": "includePackMeta",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/packs/manifests": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Returns the specified cluster profile pack manifests",
+ "operationId": "v1ClusterProfilesUidPacksManifestsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster profile pack manifests",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile pack manifests",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack manifests spec",
+ "type": "object",
+ "properties": {
+ "addonType": {
+ "description": "Pack add-on type such as logging, monitoring, security etc",
+ "type": "string"
+ },
+ "annotations": {
+ "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "cloudTypes": {
+ "description": "Pack supported cloud types",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "description": "Pack logo url",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the cluster profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "presets": {
+ "description": "Pack presets are the set of configurations applied on user selection of presets",
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "description": "Pack schema contains constraints such as data type, format, hints for the pack values",
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "Pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Pack version",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Pack status",
+ "type": "object"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Comma seperated pack meta such as schema, presets",
+ "name": "includePackMeta",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/packs/resolvedValues": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Returns the specified cluster profile packs resolved values",
+ "operationId": "v1ClusterProfilesUidPacksResolvedValuesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Pack resolved values",
+ "properties": {
+ "resolved": {
+ "description": "Pack resolved values map",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Pack params request payload",
+ "properties": {
+ "references": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/packs/{packName}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Returns the specified cluster profile pack",
+ "operationId": "V1ClusterProfilesUidPacksNameGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Pack summary response",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack summary spec",
+ "properties": {
+ "macros": {
+ "description": "Pack resolved values",
+ "properties": {
+ "resolved": {
+ "description": "Pack resolved values map",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "pack": {
+ "description": "Pack object",
+ "type": "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": {
+ "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "cloudTypes": {
+ "description": "Pack supported cloud types",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "description": "Pack logo url",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the cluster profile",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "presets": {
+ "description": "Pack presets are the set of configurations applied on user selection of presets",
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "description": "Pack schema contains constraints such as data type, format, hints for the pack values",
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "template": {
+ "description": "Pack template configuration",
+ "properties": {
+ "manifest": {
+ "description": "Pack template manifest content",
+ "type": "string"
+ },
+ "parameters": {
+ "description": "Pack template parameters",
+ "properties": {
+ "inputParameters": {
+ "description": "Pack template input parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "outputParameters": {
+ "description": "Pack template output parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "values": {
+ "description": "Pack template values",
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "Pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Pack version",
+ "type": "string"
+ }
+ }
+ },
+ "registry": {
+ "description": "Registry meta",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Updates the specified pack information in the cluster profile",
+ "operationId": "v1ClusterProfilesUidPacksNameUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Pack update request payload",
+ "properties": {
+ "pack": {
+ "description": "Pack object",
+ "type": "object",
+ "required": [
+ "uid",
+ "name"
+ ],
+ "properties": {
+ "layer": {
+ "description": "Pack layer",
+ "type": "string"
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Deletes the specified pack information in the cluster profile",
+ "operationId": "v1ClusterProfilesUidPacksNameDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Cluster profile pack name",
+ "name": "packName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/packs/{packName}/config": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Returns the specified cluster profile pack configuration",
+ "operationId": "v1ClusterProfilesUidPacksConfigGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Cluster profile pack name",
+ "name": "packName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Cluster profile pack uid",
+ "name": "packUid",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster profile pack configurations",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack configuration",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "type": "object",
+ "properties": {
+ "associatedObject": {
+ "type": "string"
+ },
+ "isValuesOverridden": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "digest": {
+ "type": "string"
+ },
+ "isOverridden": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string"
+ },
+ "parentUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "packUid": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "values": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clusterprofiles/{uid}/packs/{packName}/manifests": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Returns the associated manifests for the specified profile's pack",
+ "operationId": "v1ClusterProfilesUidPacksUidManifests",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "Manifests array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Manifest object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Manifest spec",
+ "type": "object",
+ "properties": {
+ "draft": {
+ "description": "Published manifest object",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "digest": {
+ "description": "Manifest digest",
+ "type": "string"
+ }
+ }
+ },
+ "published": {
+ "description": "Published manifest object",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "digest": {
+ "description": "Manifest digest",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Adds manifest to the profiles packs and returns the added manifests uid",
+ "operationId": "v1ClusterProfilesUidPacksNameManifestsAdd",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Cluster profile pack name",
+ "name": "packName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/packs/{packName}/manifests/{manifestUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Returns the specified cluster profile pack manifest",
+ "operationId": "v1ClusterProfilesUidPacksNameManifestsUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Manifest object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Manifest spec",
+ "type": "object",
+ "properties": {
+ "draft": {
+ "description": "Published manifest object",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "digest": {
+ "description": "Manifest digest",
+ "type": "string"
+ }
+ }
+ },
+ "published": {
+ "description": "Published manifest object",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "digest": {
+ "description": "Manifest digest",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Updates the specified manifest of the profile's pack",
+ "operationId": "v1ClusterProfilesUidPacksNameManifestsUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Deletes the specified cluster profile pack manifest",
+ "operationId": "v1ClusterProfilesUidPacksNameManifestsUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Cluster profile pack name",
+ "name": "packName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Cluster profile pack manifest uid",
+ "name": "manifestUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/publish": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "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",
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Publishes the specified cluster profile",
+ "operationId": "v1ClusterProfilesPublish",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Cluster profile published successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/spc/download": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Downloads the specified cluster profile",
+ "operationId": "v1ClusterProfilesUidSpcDownload",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Download cluster profile archive file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/clusterprofiles/{uid}/validate/packs": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Validates specified cluster profile packs",
+ "operationId": "v1ClusterProfilesUidValidatePacks",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profile template spec",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack request payload",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "layer": {
+ "description": "Pack layer",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "cluster",
+ "enum": [
+ "cluster",
+ "infra",
+ "add-on",
+ "system"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster profile packs validation response",
+ "schema": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/clusterprofiles/{uid}/variables": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Retrieve a list of variables defined for the cluster profile",
+ "operationId": "V1ClusterProfilesUidVariablesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "variables": {
+ "description": "List of unique variable fields with schema constraints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Unique variable field with schema definition",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "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": {
+ "description": "Format type of the variable value",
+ "type": "string",
+ "default": "string",
+ "enum": [
+ "string",
+ "number",
+ "boolean",
+ "ipv4",
+ "ipv4cidr",
+ "ipv6",
+ "version"
+ ]
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Update the variables defined for a cluster profile",
+ "operationId": "V1ClusterProfilesUidVariablesPut",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "variables": {
+ "description": "List of unique variable fields with schema constraints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Unique variable field with schema definition",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "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": {
+ "description": "Format type of the variable value",
+ "type": "string",
+ "default": "string",
+ "enum": [
+ "string",
+ "number",
+ "boolean",
+ "ipv4",
+ "ipv4cidr",
+ "ipv6",
+ "version"
+ ]
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Deletes the specified cluster profile variables",
+ "operationId": "V1ClusterProfilesUidVariablesDelete",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "required": [
+ "variables"
+ ],
+ "properties": {
+ "variables": {
+ "description": "Array of variable names",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "clusterprofiles"
+ ],
+ "summary": "Update specific variables defined for a cluster profile",
+ "operationId": "V1ClusterProfilesUidVariablesPatch",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "variables": {
+ "description": "List of unique variable fields with schema constraints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Unique variable field with schema definition",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "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": {
+ "description": "Format type of the variable value",
+ "type": "string",
+ "default": "string",
+ "enum": [
+ "string",
+ "number",
+ "boolean",
+ "ipv4",
+ "ipv4cidr",
+ "ipv6",
+ "version"
+ ]
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/appDeployments": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of application deployments filter summary Supported filter fields - [\"appDeploymentName\", \"clusterUid\", \"tags\"] Supported sort fields - [\"appDeploymentName\", \"creationTimestamp\", \"lastModifiedTimestamp\"]",
+ "operationId": "v1DashboardAppDeployments",
+ "parameters": [
+ {
+ "maximum": 20,
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application deployment filter summary spec",
+ "properties": {
+ "filter": {
+ "description": "Application deployment filter spec",
+ "properties": {
+ "appDeploymentName": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "contains": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "string",
+ "x-nullable": true
+ }
+ }
+ },
+ "clusterUids": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ }
+ }
+ },
+ "tags": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ }
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "appDeploymentName",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of application deployment summary items",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "appDeployments": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Application deployment summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application deployment spec summary",
+ "type": "object",
+ "properties": {
+ "config": {
+ "description": "Application deployment config summary",
+ "properties": {
+ "target": {
+ "description": "Application deployment target config summary",
+ "properties": {
+ "clusterRef": {
+ "description": "Application deployment cluster reference",
+ "properties": {
+ "deploymentClusterType": {
+ "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]",
+ "type": "string",
+ "enum": [
+ "virtual",
+ "host"
+ ]
+ },
+ "name": {
+ "description": "Application deployment source cluster name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Application deployment source cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profile": {
+ "description": "Application deployment profile summary",
+ "properties": {
+ "metadata": {
+ "description": "Application deployment profile metadata summary",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "template": {
+ "description": "Application profile template summary",
+ "type": "object",
+ "properties": {
+ "appTiers": {
+ "type": "array",
+ "items": {
+ "description": "Application profile's tier summary",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "source": {
+ "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"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Application deployment status summary",
+ "type": "object",
+ "properties": {
+ "cluster": {
+ "description": "Application deployment cluster status",
+ "properties": {
+ "health": {
+ "description": "Application deployment cluster health status",
+ "properties": {
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "notifications": {
+ "description": "Application deployment notifications",
+ "properties": {
+ "isAvailable": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/appProfiles": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of application profiles filter summary Supported filter fields - [\"profileName\", \"tags\"] Supported sort fields - [\"profileName\", \"creationTimestamp\", \"lastModifiedTimestamp\"]",
+ "operationId": "v1DashboardAppProfiles",
+ "parameters": [
+ {
+ "maximum": 20,
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Application profile filter summary spec",
+ "properties": {
+ "filter": {
+ "description": "Application profile filter spec",
+ "properties": {
+ "profileName": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "contains": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "string",
+ "x-nullable": true
+ }
+ }
+ },
+ "tags": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ }
+ }
+ },
+ "version": {
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "profileName",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of application profiles summary items",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "appProfiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Application profile summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Application profile spec summary",
+ "type": "object",
+ "properties": {
+ "parentUid": {
+ "type": "string"
+ },
+ "template": {
+ "description": "Application profile template summary",
+ "type": "object",
+ "properties": {
+ "appTiers": {
+ "type": "array",
+ "items": {
+ "description": "Application profile's tier summary",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "source": {
+ "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"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "version": {
+ "type": "string"
+ },
+ "versions": {
+ "description": "Application profile's list of all the versions",
+ "type": "array",
+ "items": {
+ "description": "Application profile version",
+ "type": "object",
+ "properties": {
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/appProfiles/metadata": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of application profile metadata",
+ "operationId": "v1DashboardAppProfilesMetadata",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of application profile summary items",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "appProfiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Application profile metadata summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "properties": {
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/appliances/metadata": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of edgehosts summary",
+ "operationId": "v1EdgeHostsMetadata",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge host metadata spec",
+ "properties": {
+ "filter": {
+ "description": "Edge hosts metadata filter spec",
+ "properties": {
+ "name": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "contains": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "string",
+ "x-nullable": true
+ }
+ }
+ },
+ "states": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "name",
+ "state",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of edgehost summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "Edge host clusterprofile template summary",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "description": "Pack ref summary",
+ "properties": {
+ "addonType": {
+ "type": "string"
+ },
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "displayName": {
+ "type": "string"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packUid": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "device": {
+ "description": "DeviceSpec defines the desired state of Device",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the edge host",
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ },
+ "cpu": {
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "number of cpu cores",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "string"
+ },
+ "partitions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "fileSystemType": {
+ "type": "string"
+ },
+ "freeSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "mountPoint": {
+ "type": "string"
+ },
+ "totalSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "usedSpace": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "Size in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendor": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "gpus": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "memory": {
+ "type": "object",
+ "properties": {
+ "sizeInMB": {
+ "description": "memory size in bytes",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "os": {
+ "type": "object",
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "host": {
+ "description": "Host specifications",
+ "properties": {
+ "hostAddress": {
+ "description": "HostAddress is a FQDN or IP address of the Host",
+ "type": "string"
+ },
+ "macAddress": {
+ "type": "string"
+ }
+ }
+ },
+ "projectMeta": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "healthy",
+ "unhealthy"
+ ]
+ }
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/cloudaccounts/metadata": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of cloud accounts metadata",
+ "operationId": "v1DashboardCloudAccountsMetadata",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "environment",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cloud accounts summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cloud account metadata summary",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/clustergroups/{uid}/hostClusters": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of cluster summary for a given cluster group",
+ "operationId": "v1ClusterGroupUidHostClustersSummary",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro cluster search filter summary spec",
+ "properties": {
+ "filter": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filterGroups": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "condition": {
+ "properties": {
+ "bool": {
+ "properties": {
+ "value": {
+ "type": "boolean"
+ }
+ }
+ },
+ "date": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte",
+ "range"
+ ]
+ }
+ }
+ },
+ "float": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "int": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "integer"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "keyValue": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "key": {
+ "type": "string"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ },
+ "string": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "property": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "string",
+ "int",
+ "float",
+ "bool",
+ "date",
+ "keyValue"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "environment",
+ "clusterName",
+ "clusterState",
+ "healthState",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "specSummary": {
+ "description": "Spectro cluster spec summary",
+ "type": "object",
+ "properties": {
+ "archTypes": {
+ "description": "Architecture type of the cluster",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ },
+ "cloudAccountMeta": {
+ "description": "Cloud account meta information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "machinePools": {
+ "description": "Machine pool meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster's cloud config uid",
+ "type": "string"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "hostClusterConfig": {
+ "properties": {
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "projectMeta": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Spectro cluster status summary",
+ "properties": {
+ "clusterImport": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "cost": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "fips": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "health": {
+ "description": "Spectro cluster health status",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster health condition",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "hourlyRate": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "coordinates": {
+ "type": "array",
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ },
+ "countryCode": {
+ "type": "string"
+ },
+ "countryName": {
+ "type": "string"
+ },
+ "regionCode": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": "string"
+ }
+ }
+ },
+ "metrics": {
+ "description": "Spectro cluster metrics",
+ "properties": {
+ "cpu": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ },
+ "memory": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ }
+ }
+ },
+ "notifications": {
+ "description": "Spectro cluster notifications",
+ "properties": {
+ "isAvailable": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "repave": {
+ "description": "Cluster repave status",
+ "properties": {
+ "state": {
+ "type": "string",
+ "default": "Pending",
+ "enum": [
+ "Pending",
+ "Approved",
+ "Reverted"
+ ]
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ },
+ "virtual": {
+ "properties": {
+ "appDeployments": {
+ "description": "list of apps deployed on the virtual cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "lifecycleStatus": {
+ "properties": {
+ "msg": {
+ "description": "error or success msg of lifecycle",
+ "type": "string"
+ },
+ "status": {
+ "description": "lifecycle status",
+ "type": "string",
+ "enum": [
+ "Pausing",
+ "Paused",
+ "Resuming",
+ "Running",
+ "Error"
+ ]
+ }
+ }
+ },
+ "state": {
+ "description": "cluster virtual host status",
+ "type": "string"
+ },
+ "virtualClusters": {
+ "description": "list of virtual clusters deployed on the cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/clustergroups/{uid}/virtualClusters": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of cluster summary for a given cluster group",
+ "operationId": "v1ClusterGroupUidVirtualClustersSummary",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro cluster search filter summary spec",
+ "properties": {
+ "filter": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filterGroups": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "condition": {
+ "properties": {
+ "bool": {
+ "properties": {
+ "value": {
+ "type": "boolean"
+ }
+ }
+ },
+ "date": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte",
+ "range"
+ ]
+ }
+ }
+ },
+ "float": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "int": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "integer"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "keyValue": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "key": {
+ "type": "string"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ },
+ "string": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "property": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "string",
+ "int",
+ "float",
+ "bool",
+ "date",
+ "keyValue"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "environment",
+ "clusterName",
+ "clusterState",
+ "healthState",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "specSummary": {
+ "description": "Spectro cluster spec summary",
+ "type": "object",
+ "properties": {
+ "archTypes": {
+ "description": "Architecture type of the cluster",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ },
+ "cloudAccountMeta": {
+ "description": "Cloud account meta information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "machinePools": {
+ "description": "Machine pool meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster's cloud config uid",
+ "type": "string"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "hostClusterConfig": {
+ "properties": {
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "projectMeta": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Spectro cluster status summary",
+ "properties": {
+ "clusterImport": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "cost": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "fips": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "health": {
+ "description": "Spectro cluster health status",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster health condition",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "hourlyRate": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "coordinates": {
+ "type": "array",
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ },
+ "countryCode": {
+ "type": "string"
+ },
+ "countryName": {
+ "type": "string"
+ },
+ "regionCode": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": "string"
+ }
+ }
+ },
+ "metrics": {
+ "description": "Spectro cluster metrics",
+ "properties": {
+ "cpu": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ },
+ "memory": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ }
+ }
+ },
+ "notifications": {
+ "description": "Spectro cluster notifications",
+ "properties": {
+ "isAvailable": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "repave": {
+ "description": "Cluster repave status",
+ "properties": {
+ "state": {
+ "type": "string",
+ "default": "Pending",
+ "enum": [
+ "Pending",
+ "Approved",
+ "Reverted"
+ ]
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ },
+ "virtual": {
+ "properties": {
+ "appDeployments": {
+ "description": "list of apps deployed on the virtual cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "lifecycleStatus": {
+ "properties": {
+ "msg": {
+ "description": "error or success msg of lifecycle",
+ "type": "string"
+ },
+ "status": {
+ "description": "lifecycle status",
+ "type": "string",
+ "enum": [
+ "Pausing",
+ "Paused",
+ "Resuming",
+ "Running",
+ "Error"
+ ]
+ }
+ }
+ },
+ "state": {
+ "description": "cluster virtual host status",
+ "type": "string"
+ },
+ "virtualClusters": {
+ "description": "list of virtual clusters deployed on the cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/clusterprofiles": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of cluster profiles filter summary Supported filter fields - [\"profileName\", \"tags\", \"profileType\", \"environment\"] Supported sort fields - [\"profileName\", \"environment\", \"profileType\", \"creationTimestamp\", \"lastModifiedTimestamp\"]",
+ "operationId": "v1ClusterProfilesFilterSummary",
+ "parameters": [
+ {
+ "maximum": 20,
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro cluster filter summary spec",
+ "properties": {
+ "filter": {
+ "description": "Cluster profile filter spec",
+ "properties": {
+ "environment": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "fips": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ },
+ "profileName": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "contains": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "string",
+ "x-nullable": true
+ }
+ }
+ },
+ "profileType": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string",
+ "default": "cluster",
+ "enum": [
+ "cluster",
+ "infra",
+ "add-on",
+ "system"
+ ]
+ }
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "system",
+ "tenant",
+ "project"
+ ]
+ },
+ "tags": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-nullable": true
+ }
+ }
+ },
+ "version": {
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "profileName",
+ "environment",
+ "profileType",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster profiles summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "specSummary": {
+ "description": "Cluster profile spec summary",
+ "type": "object",
+ "properties": {
+ "draft": {
+ "description": "Cluster profile template summary",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "description": "Pack ref summary",
+ "properties": {
+ "addonType": {
+ "type": "string"
+ },
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "displayName": {
+ "type": "string"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packUid": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "published": {
+ "description": "Cluster profile template summary",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "description": "Pack ref summary",
+ "properties": {
+ "addonType": {
+ "type": "string"
+ },
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "displayName": {
+ "type": "string"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packUid": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "version": {
+ "description": "Cluster profile's latest version",
+ "type": "string"
+ },
+ "versions": {
+ "description": "Cluster profile's list of all the versions",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile with version",
+ "properties": {
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "ClusterProfileStatusSummary defines the observed state of ClusterProfile",
+ "type": "object",
+ "properties": {
+ "fips": {
+ "description": "Cluster profile fips compliance status",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "inUseClusterUids": {
+ "description": "Deprecated. Use inUseClusters",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "isPublished": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "pack": {
+ "description": "Cluster profile packs summary about the deprecated, disabled, deleted packs count",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/clusterprofiles/metadata": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of cluster profiles metadata",
+ "operationId": "v1ClusterProfilesMetadata",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile filter spec",
+ "properties": {
+ "metadata": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/clusterprofiles/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a specified cluster profile summary",
+ "operationId": "v1ClusterProfilesUidSummary",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster profile summary response",
+ "schema": {
+ "description": "Cluster profile summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "specSummary": {
+ "description": "Cluster profile spec summary",
+ "type": "object",
+ "properties": {
+ "draft": {
+ "description": "Cluster profile template summary",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "description": "Pack ref summary",
+ "properties": {
+ "addonType": {
+ "type": "string"
+ },
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "displayName": {
+ "type": "string"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packUid": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "published": {
+ "description": "Cluster profile template summary",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "description": "Pack ref summary",
+ "properties": {
+ "addonType": {
+ "type": "string"
+ },
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "displayName": {
+ "type": "string"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packUid": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "version": {
+ "description": "Cluster profile's latest version",
+ "type": "string"
+ },
+ "versions": {
+ "description": "Cluster profile's list of all the versions",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile with version",
+ "properties": {
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "ClusterProfileStatusSummary defines the observed state of ClusterProfile",
+ "type": "object",
+ "properties": {
+ "fips": {
+ "description": "Cluster profile fips compliance status",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "inUseClusterUids": {
+ "description": "Deprecated. Use inUseClusters",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "isPublished": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "pack": {
+ "description": "Cluster profile packs summary about the deprecated, disabled, deleted packs count",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/edgehosts/search": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of Edgehosts summary with provided search filter. Supported fields as per schema /v1/dashboard/edgehosts/search/schema",
+ "operationId": "v1DashboardEdgehostsSearch",
+ "parameters": [
+ {
+ "maximum": 20,
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro cluster search filter summary spec",
+ "properties": {
+ "filter": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filterGroups": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "condition": {
+ "properties": {
+ "bool": {
+ "properties": {
+ "value": {
+ "type": "boolean"
+ }
+ }
+ },
+ "date": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte",
+ "range"
+ ]
+ }
+ }
+ },
+ "float": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "int": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "integer"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "keyValue": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "key": {
+ "type": "string"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ },
+ "string": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "property": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "string",
+ "int",
+ "float",
+ "bool",
+ "date",
+ "keyValue"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "environment",
+ "clusterName",
+ "clusterState",
+ "healthState",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of edgehost summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "Edge host clusterprofile template summary",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "description": "Pack ref summary",
+ "properties": {
+ "addonType": {
+ "type": "string"
+ },
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "displayName": {
+ "type": "string"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packUid": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "device": {
+ "description": "DeviceSpec defines the desired state of Device",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the edge host",
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ },
+ "cpu": {
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "number of cpu cores",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "string"
+ },
+ "partitions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "fileSystemType": {
+ "type": "string"
+ },
+ "freeSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "mountPoint": {
+ "type": "string"
+ },
+ "totalSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "usedSpace": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "Size in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendor": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "gpus": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "memory": {
+ "type": "object",
+ "properties": {
+ "sizeInMB": {
+ "description": "memory size in bytes",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "os": {
+ "type": "object",
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "host": {
+ "description": "Host specifications",
+ "properties": {
+ "hostAddress": {
+ "description": "HostAddress is a FQDN or IP address of the Host",
+ "type": "string"
+ },
+ "macAddress": {
+ "type": "string"
+ }
+ }
+ },
+ "projectMeta": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "healthy",
+ "unhealthy"
+ ]
+ }
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/edgehosts/search/schema": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a schema for the Edgehost search filter",
+ "operationId": "v1DashboardEdgehostsSearchSchemaGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of schema items",
+ "schema": {
+ "properties": {
+ "schema": {
+ "properties": {
+ "properties": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "default": {
+ "type": "string",
+ "x-order": 6
+ },
+ "displayName": {
+ "type": "string",
+ "x-order": 2
+ },
+ "enum": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": true,
+ "x-order": 4
+ },
+ "enumValues": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "displayValue": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ },
+ "x-omitempty": true,
+ "x-order": 5
+ },
+ "hideDisplay": {
+ "type": "boolean",
+ "x-order": 1
+ },
+ "maxFloatVal": {
+ "type": "number",
+ "format": "float64",
+ "x-order": 10
+ },
+ "maxIntVal": {
+ "type": "integer",
+ "format": "int32",
+ "x-order": 8
+ },
+ "minFloatVal": {
+ "type": "number",
+ "format": "float64",
+ "x-order": 9
+ },
+ "minIntVal": {
+ "type": "integer",
+ "format": "int32",
+ "x-order": 7
+ },
+ "name": {
+ "type": "string",
+ "x-order": 0
+ },
+ "type": {
+ "type": "string",
+ "x-order": 3
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/pcgs/search": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of PCG summary with provided search filter. Supported fields as per schema /v1/dashboard/pcgs/search/schema",
+ "operationId": "v1DashboardPcgsSearchSummary",
+ "parameters": [
+ {
+ "maximum": 20,
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro cluster search filter summary spec",
+ "properties": {
+ "filter": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filterGroups": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "condition": {
+ "properties": {
+ "bool": {
+ "properties": {
+ "value": {
+ "type": "boolean"
+ }
+ }
+ },
+ "date": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte",
+ "range"
+ ]
+ }
+ }
+ },
+ "float": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "int": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "integer"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "keyValue": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "key": {
+ "type": "string"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ },
+ "string": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "property": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "string",
+ "int",
+ "float",
+ "bool",
+ "date",
+ "keyValue"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "environment",
+ "clusterName",
+ "clusterState",
+ "healthState",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Overlord defintiion",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Overload spec",
+ "type": "object",
+ "properties": {
+ "cloudAccountUid": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "ipAddress": {
+ "type": "string"
+ },
+ "ipPools": {
+ "type": "array",
+ "items": {
+ "description": "IP Pool entity definition",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "pool": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ },
+ "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
+ }
+ }
+ },
+ "status": {
+ "description": "IP Pool status",
+ "type": "object",
+ "properties": {
+ "allottedIps": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "associatedClusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "inUse": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "isSelfHosted": {
+ "type": "boolean"
+ },
+ "isSystem": {
+ "type": "boolean"
+ },
+ "spectroClusterUid": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "tenantUid": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Overload status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Spectro cluster health status",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster health condition",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "isActive": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "isReady": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "kubectlCommands": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/pcgs/search/schema": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a schema for the PCG search filter",
+ "operationId": "v1DashboardPcgSearchSchemaGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of schema items",
+ "schema": {
+ "properties": {
+ "schema": {
+ "properties": {
+ "properties": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "default": {
+ "type": "string",
+ "x-order": 6
+ },
+ "displayName": {
+ "type": "string",
+ "x-order": 2
+ },
+ "enum": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": true,
+ "x-order": 4
+ },
+ "enumValues": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "displayValue": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ },
+ "x-omitempty": true,
+ "x-order": 5
+ },
+ "hideDisplay": {
+ "type": "boolean",
+ "x-order": 1
+ },
+ "maxFloatVal": {
+ "type": "number",
+ "format": "float64",
+ "x-order": 10
+ },
+ "maxIntVal": {
+ "type": "integer",
+ "format": "int32",
+ "x-order": 8
+ },
+ "minFloatVal": {
+ "type": "number",
+ "format": "float64",
+ "x-order": 9
+ },
+ "minIntVal": {
+ "type": "integer",
+ "format": "int32",
+ "x-order": 7
+ },
+ "name": {
+ "type": "string",
+ "x-order": 0
+ },
+ "type": {
+ "type": "string",
+ "x-order": 3
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/projects": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "operationId": "v1ProjectsFilterSummary",
+ "parameters": [
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Project filter summary spec",
+ "properties": {
+ "filter": {
+ "description": "Project filter spec",
+ "properties": {
+ "name": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "contains": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "string",
+ "x-nullable": true
+ }
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "name",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of project filter summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Project summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "specSummary": {
+ "type": "object",
+ "properties": {
+ "logoUrl": {
+ "type": "string"
+ },
+ "teams": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Project status summary",
+ "type": "object",
+ "properties": {
+ "clustersHealth": {
+ "description": "Spectro Clusters health data",
+ "type": "object",
+ "properties": {
+ "errored": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "healthy": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "running": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "unhealthy": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ },
+ "status": {
+ "description": "Project status",
+ "properties": {
+ "cleanUpStatus": {
+ "description": "Project cleanup status",
+ "type": "object",
+ "properties": {
+ "cleanedResources": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "msg": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "isDisabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "usage": {
+ "description": "Project usage summary",
+ "type": "object",
+ "properties": {
+ "alloyCpuCores": {
+ "type": "number",
+ "x-omitempty": false
+ },
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Cluster usage summary",
+ "type": "object",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "x-omitempty": false
+ },
+ "isAlloy": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "pureCpuCores": {
+ "type": "number",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/projects/metadata": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of projects metadata",
+ "operationId": "v1ProjectsMetadata",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Name of the project",
+ "name": "name",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of project metadata items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Project metadata",
+ "properties": {
+ "metadata": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/cost": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves spectro clusters cloud cost summary information",
+ "operationId": "v1DashboardSpectroClustersCostSummary",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro cluster cloud cost summary spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Spectro cluster cloud cost summary filter",
+ "type": "object",
+ "properties": {
+ "clouds": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "projects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "workspaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "options": {
+ "description": "Spectro cluster cloud cost summary options",
+ "type": "object",
+ "properties": {
+ "groupBy": {
+ "type": "string",
+ "default": "project",
+ "enum": [
+ "tenant",
+ "project",
+ "cloud",
+ "cluster"
+ ]
+ },
+ "period": {
+ "type": "integer",
+ "format": "int32",
+ "default": 1440
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of resources cloud cost summary items",
+ "schema": {
+ "description": "Resources cloud cost summary information",
+ "type": "object",
+ "properties": {
+ "resources": {
+ "type": "array",
+ "items": {
+ "description": "Resource cloud cost summary information",
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cloud cost data point information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "timestamp": {
+ "type": "number",
+ "format": "int64"
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "entity": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "total": {
+ "description": "Resource total cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "total": {
+ "description": "Resource total cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/filters/workspace": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of running, non rbac configured clusters in a workspace",
+ "operationId": "v1SpectroClustersFiltersWorkspace",
+ "parameters": [
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "specSummary": {
+ "description": "Spectro cluster spec summary",
+ "type": "object",
+ "properties": {
+ "archTypes": {
+ "description": "Architecture type of the cluster",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ },
+ "cloudAccountMeta": {
+ "description": "Cloud account meta information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "machinePools": {
+ "description": "Machine pool meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster's cloud config uid",
+ "type": "string"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "hostClusterConfig": {
+ "properties": {
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "projectMeta": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Spectro cluster status summary",
+ "properties": {
+ "clusterImport": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "cost": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "fips": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "health": {
+ "description": "Spectro cluster health status",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster health condition",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "hourlyRate": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "coordinates": {
+ "type": "array",
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ },
+ "countryCode": {
+ "type": "string"
+ },
+ "countryName": {
+ "type": "string"
+ },
+ "regionCode": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": "string"
+ }
+ }
+ },
+ "metrics": {
+ "description": "Spectro cluster metrics",
+ "properties": {
+ "cpu": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ },
+ "memory": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ }
+ }
+ },
+ "notifications": {
+ "description": "Spectro cluster notifications",
+ "properties": {
+ "isAvailable": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "repave": {
+ "description": "Cluster repave status",
+ "properties": {
+ "state": {
+ "type": "string",
+ "default": "Pending",
+ "enum": [
+ "Pending",
+ "Approved",
+ "Reverted"
+ ]
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ },
+ "virtual": {
+ "properties": {
+ "appDeployments": {
+ "description": "list of apps deployed on the virtual cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "lifecycleStatus": {
+ "properties": {
+ "msg": {
+ "description": "error or success msg of lifecycle",
+ "type": "string"
+ },
+ "status": {
+ "description": "lifecycle status",
+ "type": "string",
+ "enum": [
+ "Pausing",
+ "Paused",
+ "Resuming",
+ "Running",
+ "Error"
+ ]
+ }
+ }
+ },
+ "state": {
+ "description": "cluster virtual host status",
+ "type": "string"
+ },
+ "virtualClusters": {
+ "description": "list of virtual clusters deployed on the cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/metadata": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of cluster summary metadata",
+ "operationId": "v1SpectroClustersMetadataGet",
+ "parameters": [
+ {
+ "enum": [
+ "hostclusters",
+ "strictHostclusters"
+ ],
+ "type": "string",
+ "name": "quickFilter",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of cluster summary",
+ "operationId": "v1SpectroClustersMetadata",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro cluster metadata spec",
+ "properties": {
+ "filter": {
+ "description": "Spectro cluster filter spec",
+ "properties": {
+ "environment": {
+ "type": "string"
+ },
+ "includeVirtual": {
+ "type": "boolean",
+ "default": false
+ },
+ "isAlloy": {
+ "description": "isAlloy is renamed to isImported",
+ "type": "boolean",
+ "default": false
+ },
+ "isImportReadOnly": {
+ "type": "boolean",
+ "default": true
+ },
+ "isImported": {
+ "type": "boolean",
+ "default": false
+ },
+ "name": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "contains": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "string",
+ "x-nullable": true
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "sort": {
+ "type": "string",
+ "enum": [
+ "environment",
+ "state",
+ "name"
+ ],
+ "x-nullable": true
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/metadata/search": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of cluster metadata with provided search filter spec Supported sort fields - [\"environment\", \"clusterName\", \"clusterState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]",
+ "operationId": "v1SpectroClustersMetadataSearch",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro cluster search filter summary spec",
+ "properties": {
+ "filter": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filterGroups": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "condition": {
+ "properties": {
+ "bool": {
+ "properties": {
+ "value": {
+ "type": "boolean"
+ }
+ }
+ },
+ "date": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte",
+ "range"
+ ]
+ }
+ }
+ },
+ "float": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "int": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "integer"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "keyValue": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "key": {
+ "type": "string"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ },
+ "string": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "property": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "string",
+ "int",
+ "float",
+ "bool",
+ "date",
+ "keyValue"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "environment",
+ "clusterName",
+ "clusterState",
+ "healthState",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster summary meta items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster meta summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "specSummary": {
+ "description": "Spectro cluster meta summary",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the cluster",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ }
+ },
+ "cloudAccountUid": {
+ "type": "string"
+ },
+ "cloudRegion": {
+ "type": "string"
+ },
+ "cloudType": {
+ "type": "string"
+ },
+ "clusterType": {
+ "type": "string"
+ },
+ "importMode": {
+ "type": "string"
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "coordinates": {
+ "type": "array",
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ },
+ "countryCode": {
+ "type": "string"
+ },
+ "countryName": {
+ "type": "string"
+ },
+ "regionCode": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": "string"
+ }
+ }
+ },
+ "projectMeta": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Spectro cluster meta status summary",
+ "properties": {
+ "cost": {
+ "description": "Cluster meta Cost information",
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "fips": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "health": {
+ "description": "Cluster meta health information",
+ "type": "object",
+ "properties": {
+ "isHeartBeatFailed": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ },
+ "updates": {
+ "description": "Cluster meta updates information",
+ "type": "object",
+ "properties": {
+ "isUpdatesPending": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/metadata/search/schema": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a schema for the cluster metadata search filter",
+ "operationId": "v1SpectroClustersMetadataSearchSchema",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster meta schema items",
+ "schema": {
+ "properties": {
+ "schema": {
+ "properties": {
+ "properties": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "default": {
+ "type": "string",
+ "x-order": 6
+ },
+ "displayName": {
+ "type": "string",
+ "x-order": 2
+ },
+ "enum": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": true,
+ "x-order": 4
+ },
+ "enumValues": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "displayValue": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ },
+ "x-omitempty": true,
+ "x-order": 5
+ },
+ "hideDisplay": {
+ "type": "boolean",
+ "x-order": 1
+ },
+ "maxFloatVal": {
+ "type": "number",
+ "format": "float64",
+ "x-order": 10
+ },
+ "maxIntVal": {
+ "type": "integer",
+ "format": "int32",
+ "x-order": 8
+ },
+ "minFloatVal": {
+ "type": "number",
+ "format": "float64",
+ "x-order": 9
+ },
+ "minIntVal": {
+ "type": "integer",
+ "format": "int32",
+ "x-order": 7
+ },
+ "name": {
+ "type": "string",
+ "x-order": 0
+ },
+ "type": {
+ "type": "string",
+ "x-order": 3
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/repaveStatus": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of clusters with the desired repave state",
+ "operationId": "v1DashboardSpectroClustersRepaveList",
+ "parameters": [
+ {
+ "maximum": 20,
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "enum": [
+ "Pending",
+ "Approved",
+ "Reverted"
+ ],
+ "type": "string",
+ "default": "Pending",
+ "name": "repaveState",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "specSummary": {
+ "description": "Spectro cluster spec summary",
+ "type": "object",
+ "properties": {
+ "archTypes": {
+ "description": "Architecture type of the cluster",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ },
+ "cloudAccountMeta": {
+ "description": "Cloud account meta information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "machinePools": {
+ "description": "Machine pool meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster's cloud config uid",
+ "type": "string"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "hostClusterConfig": {
+ "properties": {
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "projectMeta": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Spectro cluster status summary",
+ "properties": {
+ "clusterImport": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "cost": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "fips": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "health": {
+ "description": "Spectro cluster health status",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster health condition",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "hourlyRate": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "coordinates": {
+ "type": "array",
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ },
+ "countryCode": {
+ "type": "string"
+ },
+ "countryName": {
+ "type": "string"
+ },
+ "regionCode": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": "string"
+ }
+ }
+ },
+ "metrics": {
+ "description": "Spectro cluster metrics",
+ "properties": {
+ "cpu": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ },
+ "memory": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ }
+ }
+ },
+ "notifications": {
+ "description": "Spectro cluster notifications",
+ "properties": {
+ "isAvailable": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "repave": {
+ "description": "Cluster repave status",
+ "properties": {
+ "state": {
+ "type": "string",
+ "default": "Pending",
+ "enum": [
+ "Pending",
+ "Approved",
+ "Reverted"
+ ]
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ },
+ "virtual": {
+ "properties": {
+ "appDeployments": {
+ "description": "list of apps deployed on the virtual cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "lifecycleStatus": {
+ "properties": {
+ "msg": {
+ "description": "error or success msg of lifecycle",
+ "type": "string"
+ },
+ "status": {
+ "description": "lifecycle status",
+ "type": "string",
+ "enum": [
+ "Pausing",
+ "Paused",
+ "Resuming",
+ "Running",
+ "Error"
+ ]
+ }
+ }
+ },
+ "state": {
+ "description": "cluster virtual host status",
+ "type": "string"
+ },
+ "virtualClusters": {
+ "description": "list of virtual clusters deployed on the cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/resources/consumption": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves spectro clusters resource consumption",
+ "operationId": "v1SpectroClustersResourcesConsumption",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Resource consumption spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Resource consumption filter",
+ "type": "object",
+ "properties": {
+ "clouds": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "includeMasterMachines": {
+ "type": "boolean"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "projects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "workspaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "options": {
+ "description": "Resource consumption options",
+ "type": "object",
+ "properties": {
+ "enableSummaryView": {
+ "type": "boolean",
+ "default": true
+ },
+ "groupBy": {
+ "type": "string",
+ "default": "namespace",
+ "enum": [
+ "tenant",
+ "project",
+ "workspace",
+ "cluster",
+ "namespace",
+ "cloud"
+ ]
+ },
+ "period": {
+ "type": "integer",
+ "format": "int32",
+ "default": 60
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of resource consumption data items",
+ "schema": {
+ "description": "Resources consumption information",
+ "type": "object",
+ "properties": {
+ "cpuUnit": {
+ "type": "string"
+ },
+ "memoryUnit": {
+ "type": "string"
+ },
+ "resources": {
+ "type": "array",
+ "items": {
+ "description": "Resource consumption information",
+ "type": "object",
+ "properties": {
+ "associatedResources": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "data": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Resource cosumption data point",
+ "type": "object",
+ "properties": {
+ "allotted": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "timestamp": {
+ "type": "number",
+ "format": "int64"
+ },
+ "usage": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "entity": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "total": {
+ "description": "Resource total cosumption data",
+ "type": "object",
+ "properties": {
+ "allotted": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "usage": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "total": {
+ "description": "Resource total cosumption data",
+ "type": "object",
+ "properties": {
+ "allotted": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "usage": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/resources/cost": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves spectro clusters resources cost summary information",
+ "operationId": "v1SpectroClustersResourcesCostSummary",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Resource cost summary spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Resource cost summary filter",
+ "type": "object",
+ "properties": {
+ "clouds": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "includeMasterMachines": {
+ "type": "boolean"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "projects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "workspaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "options": {
+ "description": "Resource cost summary options",
+ "type": "object",
+ "properties": {
+ "enableSummaryView": {
+ "type": "boolean",
+ "default": true
+ },
+ "groupBy": {
+ "type": "string",
+ "default": "cluster",
+ "enum": [
+ "tenant",
+ "project",
+ "workspace",
+ "cluster",
+ "namespace",
+ "deployment",
+ "cloud"
+ ]
+ },
+ "period": {
+ "type": "integer",
+ "format": "int32",
+ "default": 60
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of resources cost summary items",
+ "schema": {
+ "description": "Resources cost summary information",
+ "type": "object",
+ "properties": {
+ "resources": {
+ "type": "array",
+ "items": {
+ "description": "Resource cost summary information",
+ "type": "object",
+ "properties": {
+ "associatedResources": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "data": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Resource cost data point",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "timestamp": {
+ "type": "number",
+ "format": "int64"
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "entity": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "total": {
+ "description": "Resource total cost information",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "total": {
+ "description": "Resource total cost information",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/resources/usage": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves spectro clusters resources usage summary information",
+ "operationId": "v1SpectroClustersResourcesUsageSummary",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Resource usage summary spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Resource usage summary filter",
+ "type": "object",
+ "properties": {
+ "clouds": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "includeMasterMachines": {
+ "type": "boolean"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "pods": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "projects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "workload": {
+ "description": "Workload resource filter",
+ "type": "object",
+ "properties": {
+ "names": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "all",
+ "enum": [
+ "deployment",
+ "statefulset",
+ "daemonset",
+ "all"
+ ]
+ }
+ }
+ },
+ "workspaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "options": {
+ "description": "Resource usage summary options",
+ "type": "object",
+ "properties": {
+ "enableSummaryView": {
+ "type": "boolean",
+ "default": true
+ },
+ "groupBy": {
+ "type": "string",
+ "default": "cluster",
+ "enum": [
+ "tenant",
+ "project",
+ "workspace",
+ "cluster",
+ "namespace",
+ "deployment",
+ "statefulset",
+ "daemonset",
+ "pod",
+ "cloud"
+ ]
+ },
+ "includeMeteringInfo": {
+ "type": "boolean",
+ "default": false
+ },
+ "period": {
+ "type": "integer",
+ "format": "int32",
+ "default": 60
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of resources usage summary items",
+ "schema": {
+ "description": "Resources usage summary information",
+ "type": "object",
+ "properties": {
+ "cpuUnit": {
+ "type": "string"
+ },
+ "memoryUnit": {
+ "type": "string"
+ },
+ "resources": {
+ "type": "array",
+ "items": {
+ "description": "Resource usage summary information",
+ "type": "object",
+ "properties": {
+ "associatedResources": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "data": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Resource usage data point",
+ "type": "object",
+ "properties": {
+ "baremetal": {
+ "description": "min and max count for machines & edgehost for the given period",
+ "type": "object",
+ "properties": {
+ "activeEdgehosts": {
+ "type": "number",
+ "format": "int64"
+ },
+ "activeMachines": {
+ "type": "number",
+ "format": "int64"
+ },
+ "maxEdgehosts": {
+ "type": "number",
+ "format": "int64"
+ },
+ "maxMachines": {
+ "type": "number",
+ "format": "int64"
+ }
+ }
+ },
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "edgehost": {
+ "description": "min and max count for machines & edgehost for the given period",
+ "type": "object",
+ "properties": {
+ "activeEdgehosts": {
+ "type": "number",
+ "format": "int64"
+ },
+ "activeMachines": {
+ "type": "number",
+ "format": "int64"
+ },
+ "maxEdgehosts": {
+ "type": "number",
+ "format": "int64"
+ },
+ "maxMachines": {
+ "type": "number",
+ "format": "int64"
+ }
+ }
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "timestamp": {
+ "type": "number",
+ "format": "int64"
+ }
+ }
+ }
+ },
+ "entity": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/search": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of cluster summary with provided search filter spec Supported sort fields - [\"environment\", \"clusterName\", \"memoryUsage\", \"healthState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]",
+ "operationId": "v1SpectroClustersSearchFilterSummary",
+ "parameters": [
+ {
+ "maximum": 20,
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro cluster search filter summary spec",
+ "properties": {
+ "filter": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filterGroups": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "condition": {
+ "properties": {
+ "bool": {
+ "properties": {
+ "value": {
+ "type": "boolean"
+ }
+ }
+ },
+ "date": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte",
+ "range"
+ ]
+ }
+ }
+ },
+ "float": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "int": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "integer"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "keyValue": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "key": {
+ "type": "string"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ },
+ "string": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "property": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "string",
+ "int",
+ "float",
+ "bool",
+ "date",
+ "keyValue"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "environment",
+ "clusterName",
+ "clusterState",
+ "healthState",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster summary items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "specSummary": {
+ "description": "Spectro cluster spec summary",
+ "type": "object",
+ "properties": {
+ "archTypes": {
+ "description": "Architecture type of the cluster",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ },
+ "cloudAccountMeta": {
+ "description": "Cloud account meta information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "machinePools": {
+ "description": "Machine pool meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster's cloud config uid",
+ "type": "string"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "hostClusterConfig": {
+ "properties": {
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "projectMeta": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Spectro cluster status summary",
+ "properties": {
+ "clusterImport": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "cost": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "fips": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "health": {
+ "description": "Spectro cluster health status",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster health condition",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "hourlyRate": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "coordinates": {
+ "type": "array",
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ },
+ "countryCode": {
+ "type": "string"
+ },
+ "countryName": {
+ "type": "string"
+ },
+ "regionCode": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": "string"
+ }
+ }
+ },
+ "metrics": {
+ "description": "Spectro cluster metrics",
+ "properties": {
+ "cpu": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ },
+ "memory": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ }
+ }
+ },
+ "notifications": {
+ "description": "Spectro cluster notifications",
+ "properties": {
+ "isAvailable": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "repave": {
+ "description": "Cluster repave status",
+ "properties": {
+ "state": {
+ "type": "string",
+ "default": "Pending",
+ "enum": [
+ "Pending",
+ "Approved",
+ "Reverted"
+ ]
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ },
+ "virtual": {
+ "properties": {
+ "appDeployments": {
+ "description": "list of apps deployed on the virtual cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "lifecycleStatus": {
+ "properties": {
+ "msg": {
+ "description": "error or success msg of lifecycle",
+ "type": "string"
+ },
+ "status": {
+ "description": "lifecycle status",
+ "type": "string",
+ "enum": [
+ "Pausing",
+ "Paused",
+ "Resuming",
+ "Running",
+ "Error"
+ ]
+ }
+ }
+ },
+ "state": {
+ "description": "cluster virtual host status",
+ "type": "string"
+ },
+ "virtualClusters": {
+ "description": "list of virtual clusters deployed on the cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/search/export": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Export and download the list of cluster summary with matching search filter and download as a file(csv)",
+ "operationId": "v1DashboardClustersSearchSummaryExportGet",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "encodedFilter",
+ "in": "query"
+ },
+ {
+ "enum": [
+ "csv"
+ ],
+ "type": "string",
+ "default": "csv",
+ "name": "format",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "file"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ },
+ "Content-Type": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "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\"]",
+ "operationId": "v1DashboardClustersSearchSummaryExport",
+ "parameters": [
+ {
+ "enum": [
+ "csv"
+ ],
+ "type": "string",
+ "default": "csv",
+ "name": "format",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro cluster search filter summary spec",
+ "properties": {
+ "filter": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filterGroups": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "condition": {
+ "properties": {
+ "bool": {
+ "properties": {
+ "value": {
+ "type": "boolean"
+ }
+ }
+ },
+ "date": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte",
+ "range"
+ ]
+ }
+ }
+ },
+ "float": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "int": {
+ "properties": {
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "integer"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ }
+ }
+ },
+ "keyValue": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "key": {
+ "type": "string"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ },
+ "string": {
+ "properties": {
+ "ignoreCase": {
+ "type": "boolean"
+ },
+ "match": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "contains",
+ "beginsWith"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "property": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "string",
+ "int",
+ "float",
+ "bool",
+ "date",
+ "keyValue"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "environment",
+ "clusterName",
+ "clusterState",
+ "healthState",
+ "creationTimestamp",
+ "lastModifiedTimestamp"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "download file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/search/input": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a supported input values for the cluster search filter",
+ "operationId": "v1DashboardSpectroClustersSearchInput",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster search filter input items",
+ "schema": {
+ "properties": {
+ "inputs": {
+ "type": "object",
+ "additionalProperties": {
+ "properties": {
+ "values": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "x-omitempty": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/search/schema": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a schema for the cluster search filter",
+ "operationId": "v1SpectroClustersSearchSchema",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster filter schema items",
+ "schema": {
+ "properties": {
+ "schema": {
+ "properties": {
+ "properties": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "default": {
+ "type": "string",
+ "x-order": 6
+ },
+ "displayName": {
+ "type": "string",
+ "x-order": 2
+ },
+ "enum": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": true,
+ "x-order": 4
+ },
+ "enumValues": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "displayValue": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ },
+ "x-omitempty": true,
+ "x-order": 5
+ },
+ "hideDisplay": {
+ "type": "boolean",
+ "x-order": 1
+ },
+ "maxFloatVal": {
+ "type": "number",
+ "format": "float64",
+ "x-order": 10
+ },
+ "maxIntVal": {
+ "type": "integer",
+ "format": "int32",
+ "x-order": 8
+ },
+ "minFloatVal": {
+ "type": "number",
+ "format": "float64",
+ "x-order": 9
+ },
+ "minIntVal": {
+ "type": "integer",
+ "format": "int32",
+ "x-order": 7
+ },
+ "name": {
+ "type": "string",
+ "x-order": 0
+ },
+ "type": {
+ "type": "string",
+ "x-order": 3
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/vms": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of Virtual machine enabled clusters",
+ "operationId": "V1DashboardVMEnabledClustersList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of schema items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "VM Dashboard enabled Spectro cluster",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Spectro cluster spec",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Spectro cluster status",
+ "properties": {
+ "clusterState": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/spectroclusters/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Returns the specified cluster summary",
+ "operationId": "v1SpectroClustersSummaryUid",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An spectro cluster summary",
+ "schema": {
+ "description": "Spectro cluster summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Spectro cluster spec summary",
+ "type": "object",
+ "properties": {
+ "archTypes": {
+ "description": "Architecture types of the cluster",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ },
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "machinePools": {
+ "description": "Machine pool meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster's cloud config uid",
+ "type": "string"
+ }
+ }
+ },
+ "cloudaccount": {
+ "description": "Cloud account meta information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "clusterProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Spectro cluster status summary",
+ "properties": {
+ "abortTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "addOnServices": {
+ "type": "array",
+ "items": {
+ "description": "Spectro cluster status summary",
+ "properties": {
+ "endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "apiEndpoints": {
+ "type": "array",
+ "items": {
+ "description": "APIEndpoint represents a reachable Kubernetes API endpoint.",
+ "type": "object",
+ "required": [
+ "host",
+ "port"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "clusterImport": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "cost": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "fips": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "health": {
+ "description": "Spectro cluster health status",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster health condition",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "hourlyRate": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "kubeMeta": {
+ "description": "Spectro cluster kube meta",
+ "type": "object",
+ "properties": {
+ "hasKubeConfig": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "hasKubeConfigClient": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "hasManifest": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "kubernetesVersion": {
+ "type": "string"
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "coordinates": {
+ "type": "array",
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ },
+ "countryCode": {
+ "type": "string"
+ },
+ "countryName": {
+ "type": "string"
+ },
+ "regionCode": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": "string"
+ }
+ }
+ },
+ "metrics": {
+ "description": "Spectro cluster metrics",
+ "properties": {
+ "cpu": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ },
+ "memory": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ }
+ }
+ },
+ "notifications": {
+ "description": "Spectro cluster notifications",
+ "properties": {
+ "isAvailable": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "spcApply": {
+ "type": "object",
+ "properties": {
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "DownloadAndInstall",
+ "DownloadAndInstallLater"
+ ]
+ },
+ "canBeApplied": {
+ "description": "If it is true then Agent can apply the changes to the palette",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "crdDigest": {
+ "type": "string"
+ },
+ "lastModifiedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "patchAppliedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "spcHash": {
+ "type": "string"
+ },
+ "spcInfraHash": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "description": "current operational state",
+ "type": "string"
+ },
+ "upgrades": {
+ "type": "array",
+ "items": {
+ "description": "Upgrades represent the reason of the last upgrade that took place",
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "timestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "virtual": {
+ "properties": {
+ "appDeployments": {
+ "description": "list of apps deployed on the virtual cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "lifecycleStatus": {
+ "properties": {
+ "msg": {
+ "description": "error or success msg of lifecycle",
+ "type": "string"
+ },
+ "status": {
+ "description": "lifecycle status",
+ "type": "string",
+ "enum": [
+ "Pausing",
+ "Paused",
+ "Resuming",
+ "Running",
+ "Error"
+ ]
+ }
+ }
+ },
+ "state": {
+ "description": "cluster virtual host status",
+ "type": "string"
+ },
+ "virtualClusters": {
+ "description": "list of virtual clusters deployed on the cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "workspaces": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/cost": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves the specified cluster cost summary",
+ "operationId": "v1SpectroClustersUidCostSummary",
+ "parameters": [
+ {
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "name": "startTime",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "name": "endTime",
+ "in": "query"
+ },
+ {
+ "minimum": 60,
+ "type": "integer",
+ "format": "int32",
+ "description": "period in minutes, group the data point by the specified period",
+ "name": "period",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An spectro cluster cost summary",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "cluster": {
+ "description": "Spectro cluster cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Spectro cluster cloud cost information",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "data": {
+ "type": "array",
+ "items": {
+ "description": "Cloud cost data point information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "timestamp": {
+ "type": "number",
+ "format": "int64"
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "cost": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "period": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/overview": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Returns the specified cluster summary overview",
+ "operationId": "v1SpectroClustersSummaryUidOverview",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An spectro cluster summary overview",
+ "schema": {
+ "description": "Spectro cluster summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Spectro cluster spec summary",
+ "type": "object",
+ "properties": {
+ "archTypes": {
+ "description": "Architecture types of the cluster",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ },
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "machinePools": {
+ "description": "Machine pool meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster's cloud config uid",
+ "type": "string"
+ }
+ }
+ },
+ "cloudaccount": {
+ "description": "Cloud account meta information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "clusterProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Spectro cluster status summary",
+ "properties": {
+ "abortTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "addOnServices": {
+ "type": "array",
+ "items": {
+ "description": "Spectro cluster status summary",
+ "properties": {
+ "endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "apiEndpoints": {
+ "type": "array",
+ "items": {
+ "description": "APIEndpoint represents a reachable Kubernetes API endpoint.",
+ "type": "object",
+ "required": [
+ "host",
+ "port"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "clusterImport": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "cost": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "fips": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "health": {
+ "description": "Spectro cluster health status",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster health condition",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "hourlyRate": {
+ "description": "Resource Cost information",
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "description": "Cloud cost information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "kubeMeta": {
+ "description": "Spectro cluster kube meta",
+ "type": "object",
+ "properties": {
+ "hasKubeConfig": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "hasKubeConfigClient": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "hasManifest": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "kubernetesVersion": {
+ "type": "string"
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "coordinates": {
+ "type": "array",
+ "items": {
+ "type": "number",
+ "format": "float64"
+ }
+ },
+ "countryCode": {
+ "type": "string"
+ },
+ "countryName": {
+ "type": "string"
+ },
+ "regionCode": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": "string"
+ }
+ }
+ },
+ "metrics": {
+ "description": "Spectro cluster metrics",
+ "properties": {
+ "cpu": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ },
+ "memory": {
+ "description": "Compute metrics",
+ "type": "object",
+ "properties": {
+ "lastUpdatedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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
+ }
+ }
+ }
+ }
+ },
+ "notifications": {
+ "description": "Spectro cluster notifications",
+ "properties": {
+ "isAvailable": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "spcApply": {
+ "type": "object",
+ "properties": {
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "DownloadAndInstall",
+ "DownloadAndInstallLater"
+ ]
+ },
+ "canBeApplied": {
+ "description": "If it is true then Agent can apply the changes to the palette",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "crdDigest": {
+ "type": "string"
+ },
+ "lastModifiedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "patchAppliedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "spcHash": {
+ "type": "string"
+ },
+ "spcInfraHash": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "description": "current operational state",
+ "type": "string"
+ },
+ "upgrades": {
+ "type": "array",
+ "items": {
+ "description": "Upgrades represent the reason of the last upgrade that took place",
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "timestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "virtual": {
+ "properties": {
+ "appDeployments": {
+ "description": "list of apps deployed on the virtual cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "lifecycleStatus": {
+ "properties": {
+ "msg": {
+ "description": "error or success msg of lifecycle",
+ "type": "string"
+ },
+ "status": {
+ "description": "lifecycle status",
+ "type": "string",
+ "enum": [
+ "Pausing",
+ "Paused",
+ "Resuming",
+ "Running",
+ "Error"
+ ]
+ }
+ }
+ },
+ "state": {
+ "description": "cluster virtual host status",
+ "type": "string"
+ },
+ "virtualClusters": {
+ "description": "list of virtual clusters deployed on the cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "workspaces": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/resources/consumption": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified spectro cluster resource consumption",
+ "operationId": "v1SpectroClustersUidResourcesConsumption",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Resource consumption spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Resource consumption filter",
+ "type": "object",
+ "properties": {
+ "clouds": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "includeMasterMachines": {
+ "type": "boolean"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "projects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "workspaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "options": {
+ "description": "Resource consumption options",
+ "type": "object",
+ "properties": {
+ "enableSummaryView": {
+ "type": "boolean",
+ "default": true
+ },
+ "groupBy": {
+ "type": "string",
+ "default": "namespace",
+ "enum": [
+ "tenant",
+ "project",
+ "workspace",
+ "cluster",
+ "namespace",
+ "cloud"
+ ]
+ },
+ "period": {
+ "type": "integer",
+ "format": "int32",
+ "default": 60
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of resource consumption data items",
+ "schema": {
+ "description": "Resources consumption information",
+ "type": "object",
+ "properties": {
+ "cpuUnit": {
+ "type": "string"
+ },
+ "memoryUnit": {
+ "type": "string"
+ },
+ "resources": {
+ "type": "array",
+ "items": {
+ "description": "Resource consumption information",
+ "type": "object",
+ "properties": {
+ "associatedResources": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "data": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Resource cosumption data point",
+ "type": "object",
+ "properties": {
+ "allotted": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "timestamp": {
+ "type": "number",
+ "format": "int64"
+ },
+ "usage": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "entity": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "total": {
+ "description": "Resource total cosumption data",
+ "type": "object",
+ "properties": {
+ "allotted": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "usage": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "total": {
+ "description": "Resource total cosumption data",
+ "type": "object",
+ "properties": {
+ "allotted": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "usage": {
+ "description": "Resource cosumption data",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "memory": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/workloads": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified cluster workloads",
+ "operationId": "v1DashboardSpectroClustersUidWorkloads",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Cluster workloads filter",
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster workloads",
+ "schema": {
+ "description": "Cluster workload summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster workload spec",
+ "type": "object",
+ "properties": {
+ "clusterroleBindings": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload rbac binding summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "cronJobs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload cronjob summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster workload cronjob spec",
+ "type": "object",
+ "properties": {
+ "schedule": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload cronjob status",
+ "type": "object",
+ "properties": {
+ "lastScheduleTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ }
+ }
+ },
+ "daemonSets": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload daemonset summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload daemonset status",
+ "type": "object",
+ "properties": {
+ "available": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "currentScheduled": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "desiredScheduled": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "misScheduled": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "ready": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "updatedScheduled": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "deployments": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload deployment summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload deployment status",
+ "type": "object",
+ "properties": {
+ "replicas": {
+ "description": "Cluster workload replica status",
+ "type": "object",
+ "properties": {
+ "available": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "ready": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "updated": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "jobs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload job summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload job status",
+ "type": "object",
+ "properties": {
+ "completionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload condition",
+ "type": "object",
+ "properties": {
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastUpdateTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "succeeded": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "pods": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload pod metadata",
+ "type": "object",
+ "properties": {
+ "associatedRefs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "machineUid": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "nodename": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster workload pod spec",
+ "type": "object",
+ "properties": {
+ "containers": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod container",
+ "type": "object",
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "resources": {
+ "description": "Cluster workload pod container resources",
+ "type": "object",
+ "properties": {
+ "limits": {
+ "description": "Cluster workload pod container resource",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "cpuUnit": {
+ "type": "string"
+ },
+ "memory": {
+ "type": "integer",
+ "format": "int64",
+ "x-omitempty": false
+ },
+ "memoryUnit": {
+ "type": "string"
+ }
+ }
+ },
+ "requests": {
+ "description": "Cluster workload pod container resource",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "cpuUnit": {
+ "type": "string"
+ },
+ "memory": {
+ "type": "integer",
+ "format": "int64",
+ "x-omitempty": false
+ },
+ "memoryUnit": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "volumes": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod volume",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload pod status",
+ "type": "object",
+ "properties": {
+ "containers": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod container status",
+ "type": "object",
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "ready": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "restartCount": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "started": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "description": "Cluster workload pod container state",
+ "type": "object",
+ "properties": {
+ "exitCode": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "finishedAt": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "startedAt": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "phase": {
+ "type": "string"
+ },
+ "podIp": {
+ "type": "string"
+ },
+ "qosClass": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "roleBindings": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload rbac binding summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "statefulSets": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload statefulset summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload statefulset status",
+ "type": "object",
+ "properties": {
+ "replicas": {
+ "description": "Cluster workload replica status",
+ "type": "object",
+ "properties": {
+ "available": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "ready": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "updated": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/workloads/clusterrolebinding": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified cluster workload clusterrolebindings",
+ "operationId": "v1DashboardSpectroClustersUidWorkloadsClusterRoleBinding",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Cluster workloads filter",
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster workload clusterrolebindings",
+ "schema": {
+ "description": "Cluster workload rbac bindings summary",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload rbac binding summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/workloads/cronjob": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified cluster workload cronjobs",
+ "operationId": "v1DashboardSpectroClustersUidWorkloadsCronJob",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Cluster workloads filter",
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster workload cronjobs",
+ "schema": {
+ "description": "Cluster workload cronjobs summary",
+ "type": "object",
+ "properties": {
+ "cronJobs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload cronjob summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster workload cronjob spec",
+ "type": "object",
+ "properties": {
+ "schedule": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload cronjob status",
+ "type": "object",
+ "properties": {
+ "lastScheduleTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/workloads/daemonset": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified cluster workload daemonsets",
+ "operationId": "v1DashboardSpectroClustersUidWorkloadsDaemonSet",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Cluster workloads filter",
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster workload daemonsets",
+ "schema": {
+ "description": "Cluster workload daemonset summary",
+ "type": "object",
+ "properties": {
+ "daemonSets": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload daemonset summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload daemonset status",
+ "type": "object",
+ "properties": {
+ "available": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "currentScheduled": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "desiredScheduled": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "misScheduled": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "ready": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "updatedScheduled": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/workloads/deployment": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified cluster workload deployments",
+ "operationId": "v1DashboardSpectroClustersUidWorkloadsDeployment",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Cluster workloads filter",
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster workload deployments",
+ "schema": {
+ "description": "Cluster workload deployments summary",
+ "type": "object",
+ "properties": {
+ "deployments": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload deployment summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload deployment status",
+ "type": "object",
+ "properties": {
+ "replicas": {
+ "description": "Cluster workload replica status",
+ "type": "object",
+ "properties": {
+ "available": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "ready": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "updated": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/workloads/job": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified cluster workload jobs",
+ "operationId": "v1DashboardSpectroClustersUidWorkloadsJob",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Cluster workloads filter",
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster workload jobs",
+ "schema": {
+ "description": "Cluster workload jobs summary",
+ "type": "object",
+ "properties": {
+ "jobs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload job summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload job status",
+ "type": "object",
+ "properties": {
+ "completionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload condition",
+ "type": "object",
+ "properties": {
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastUpdateTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "succeeded": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/workloads/namespace": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified cluster workload namespaces",
+ "operationId": "v1DashboardSpectroClustersUidWorkloadsNamespace",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Cluster workloads filter",
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster workload namespaces",
+ "schema": {
+ "description": "Cluster workload namespaces summary",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload namespace summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload namespace status",
+ "type": "object",
+ "properties": {
+ "phase": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/workloads/pod": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified cluster workload pods",
+ "operationId": "v1DashboardSpectroClustersUidWorkloadsPod",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Cluster workloads filter",
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster workload pods",
+ "schema": {
+ "description": "Cluster workload pods summary",
+ "properties": {
+ "pods": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload pod metadata",
+ "type": "object",
+ "properties": {
+ "associatedRefs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "machineUid": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "nodename": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster workload pod spec",
+ "type": "object",
+ "properties": {
+ "containers": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod container",
+ "type": "object",
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "resources": {
+ "description": "Cluster workload pod container resources",
+ "type": "object",
+ "properties": {
+ "limits": {
+ "description": "Cluster workload pod container resource",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "cpuUnit": {
+ "type": "string"
+ },
+ "memory": {
+ "type": "integer",
+ "format": "int64",
+ "x-omitempty": false
+ },
+ "memoryUnit": {
+ "type": "string"
+ }
+ }
+ },
+ "requests": {
+ "description": "Cluster workload pod container resource",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "cpuUnit": {
+ "type": "string"
+ },
+ "memory": {
+ "type": "integer",
+ "format": "int64",
+ "x-omitempty": false
+ },
+ "memoryUnit": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "volumes": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod volume",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload pod status",
+ "type": "object",
+ "properties": {
+ "containers": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod container status",
+ "type": "object",
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "ready": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "restartCount": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "started": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "description": "Cluster workload pod container state",
+ "type": "object",
+ "properties": {
+ "exitCode": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "finishedAt": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "startedAt": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "phase": {
+ "type": "string"
+ },
+ "podIp": {
+ "type": "string"
+ },
+ "qosClass": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/workloads/rolebinding": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified cluster workload rolebindings",
+ "operationId": "v1DashboardSpectroClustersUidWorkloadsRoleBinding",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Cluster workloads filter",
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster workload rolebindings",
+ "schema": {
+ "description": "Cluster workload rbac bindings summary",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload rbac binding summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/spectroclusters/{uid}/workloads/statefulset": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified cluster workload statefulsets",
+ "operationId": "v1DashboardSpectroClustersUidWorkloadsStatefulSet",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Cluster workloads filter",
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster workload statefulsets",
+ "schema": {
+ "description": "Cluster workload statefulsets summary",
+ "type": "object",
+ "properties": {
+ "statefulSets": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload statefulset summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload statefulset status",
+ "type": "object",
+ "properties": {
+ "replicas": {
+ "description": "Cluster workload replica status",
+ "type": "object",
+ "properties": {
+ "available": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "ready": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "updated": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/workspaces": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves a list of workspace",
+ "operationId": "v1DashboardWorkspacesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of workspace",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "cpuUnit": {
+ "type": "string"
+ },
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Workspace information",
+ "properties": {
+ "meta": {
+ "description": "Deprecated. Workspace meta data",
+ "properties": {
+ "clusterNames": {
+ "description": "Deprecated. Use clusterRefs",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "clusterRefs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Workspace cluster reference",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "creationTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Workspace spec summary",
+ "properties": {
+ "clusterRefs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Workspace cluster reference",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "quota": {
+ "description": "Workspace resource quota",
+ "properties": {
+ "resourceAllocation": {
+ "description": "Workspace quota resource allocation",
+ "properties": {
+ "cpu": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memory": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Workspace status",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Workspace namespace allocation",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "total": {
+ "description": "Workspace allocation",
+ "properties": {
+ "cpu": {
+ "description": "Workspace resource allocation",
+ "properties": {
+ "allocated": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "usage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "memory": {
+ "description": "Workspace resource allocation",
+ "properties": {
+ "allocated": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "usage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "total": {
+ "description": "Workspace allocation",
+ "properties": {
+ "cpu": {
+ "description": "Workspace resource allocation",
+ "properties": {
+ "allocated": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "usage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "memory": {
+ "description": "Workspace resource allocation",
+ "properties": {
+ "allocated": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "usage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "memoryUnit": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/clusterrolebinding": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified workspace clusters workload clusterrolebindings",
+ "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsClusterRoleBinding",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Workspace workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Workspace workloads filter",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of clusters workload clusterrolebindings",
+ "schema": {
+ "description": "Workspace clusters workload rbac bindings summary",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Workspace cluster workload rbac bindings summary",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload rbac binding summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/cronjob": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified workspace clusters workload cronjobs",
+ "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsCronJob",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Workspace workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Workspace workloads filter",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of clusters workload cronjobs",
+ "schema": {
+ "description": "Workspace clusters workload cronjobs summary",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Workspace cluster workload cronjobs summary",
+ "type": "object",
+ "properties": {
+ "cronjobs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload cronjob summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster workload cronjob spec",
+ "type": "object",
+ "properties": {
+ "schedule": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload cronjob status",
+ "type": "object",
+ "properties": {
+ "lastScheduleTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/daemonset": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified workspace clusters workload daemonsets",
+ "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsDaemonSet",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Workspace workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Workspace workloads filter",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of clusters workload daemonsets",
+ "schema": {
+ "description": "Workspace clusters workload statefulsets summary",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Workspace cluster workload daemonsets summary",
+ "type": "object",
+ "properties": {
+ "daemonSets": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload daemonset summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload daemonset status",
+ "type": "object",
+ "properties": {
+ "available": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "currentScheduled": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "desiredScheduled": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "misScheduled": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "ready": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "updatedScheduled": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/deployment": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified workspace clusters workload deployments",
+ "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsDeployment",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Workspace workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Workspace workloads filter",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of clusters workload deployments",
+ "schema": {
+ "description": "Workspace clusters workload deployments summary",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Workspace cluster workload deployments summary",
+ "type": "object",
+ "properties": {
+ "deployments": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload deployment summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload deployment status",
+ "type": "object",
+ "properties": {
+ "replicas": {
+ "description": "Cluster workload replica status",
+ "type": "object",
+ "properties": {
+ "available": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "ready": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "updated": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/job": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified workspace clusters workload jobs",
+ "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsJob",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Workspace workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Workspace workloads filter",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of clusters workload jobs",
+ "schema": {
+ "description": "Workspace clusters workload jobs summary",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Workspace cluster workload jobs summary",
+ "type": "object",
+ "properties": {
+ "jobs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload job summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload job status",
+ "type": "object",
+ "properties": {
+ "completionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "conditions": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload condition",
+ "type": "object",
+ "properties": {
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastUpdateTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "succeeded": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/namespace": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified workspace clusters workload namespaces",
+ "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsNamespace",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Workspace workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Workspace workloads filter",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of clusters workload namespaces",
+ "schema": {
+ "description": "Workspace clusters workload namespaces summary",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Workspace cluster workload namespaces summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload namespace summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload namespace status",
+ "type": "object",
+ "properties": {
+ "phase": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/pod": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified workspace clusters workload pods",
+ "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsPod",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Workspace workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Workspace workloads filter",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of clusters workload pods",
+ "schema": {
+ "description": "Workspace clusters workload pods summary",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Workspace cluster workload pods summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "pods": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload pod metadata",
+ "type": "object",
+ "properties": {
+ "associatedRefs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "machineUid": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "nodename": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster workload pod spec",
+ "type": "object",
+ "properties": {
+ "containers": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod container",
+ "type": "object",
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "resources": {
+ "description": "Cluster workload pod container resources",
+ "type": "object",
+ "properties": {
+ "limits": {
+ "description": "Cluster workload pod container resource",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "cpuUnit": {
+ "type": "string"
+ },
+ "memory": {
+ "type": "integer",
+ "format": "int64",
+ "x-omitempty": false
+ },
+ "memoryUnit": {
+ "type": "string"
+ }
+ }
+ },
+ "requests": {
+ "description": "Cluster workload pod container resource",
+ "type": "object",
+ "properties": {
+ "cpu": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "cpuUnit": {
+ "type": "string"
+ },
+ "memory": {
+ "type": "integer",
+ "format": "int64",
+ "x-omitempty": false
+ },
+ "memoryUnit": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "volumes": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod volume",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload pod status",
+ "type": "object",
+ "properties": {
+ "containers": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload pod container status",
+ "type": "object",
+ "properties": {
+ "image": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "ready": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "restartCount": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "started": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "description": "Cluster workload pod container state",
+ "type": "object",
+ "properties": {
+ "exitCode": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "finishedAt": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "startedAt": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "phase": {
+ "type": "string"
+ },
+ "podIp": {
+ "type": "string"
+ },
+ "qosClass": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/rolebinding": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified workspace clusters workload rolebindings",
+ "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsRoleBinding",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Workspace workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Workspace workloads filter",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of clusters workload rolebindings",
+ "schema": {
+ "description": "Workspace clusters workload rbac bindings summary",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Workspace cluster workload rbac bindings summary",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload rbac binding summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/statefulset": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "dashboard"
+ ],
+ "summary": "Retrieves specified workspace clusters workload statefulsets",
+ "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsStatefulSet",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Workspace workloads spec",
+ "type": "object",
+ "properties": {
+ "filter": {
+ "description": "Workspace workloads filter",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of clusters workload statefulsets",
+ "schema": {
+ "description": "Workspace clusters workload statefulsets summary",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Workspace cluster workload statefulsets summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "statefulSets": {
+ "type": "array",
+ "items": {
+ "description": "Cluster workload statefulset summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Cluster workload metadata",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "entity": {
+ "description": "Cluster workload ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster workload statefulset status",
+ "type": "object",
+ "properties": {
+ "replicas": {
+ "description": "Cluster workload replica status",
+ "type": "object",
+ "properties": {
+ "available": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "ready": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "updated": {
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/datasinks/cloudwatch": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Sync data to cloud watch",
+ "tags": [
+ "datasinks"
+ ],
+ "summary": "sync data to cloud watch",
+ "operationId": "V1DataSinksCloudWatchSink",
+ "parameters": [
+ {
+ "description": "Request payload for cloud watch config",
+ "name": "dataSinkCloudWatchConfig",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Data sink cloud watch config",
+ "type": "object",
+ "properties": {
+ "payload": {
+ "description": "List of data sink payload entities",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Data sink payload entity",
+ "type": "object",
+ "properties": {
+ "refUid": {
+ "description": "RefUid of the data sink payload",
+ "type": "string"
+ },
+ "timestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": {
+ "type": "object"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cloud watch config entity",
+ "type": "object",
+ "properties": {
+ "credentials": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/edgehosts": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Create the edge host device",
+ "operationId": "v1EdgeHostDevicesCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge host device information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Object identity meta with tags",
+ "type": "object",
+ "properties": {
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Edge host device spec",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ },
+ "hostPairingKey": {
+ "type": "string",
+ "format": "password"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/edgehosts/metadata": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Retrieves a list of edge hosts metadata matching the filter condition",
+ "operationId": "v1EdgeHostsMetadataQuickFilterGet",
+ "parameters": [
+ {
+ "enum": [
+ "libvirt",
+ "edge-native",
+ "vsphere"
+ ],
+ "type": "string",
+ "name": "type",
+ "in": "query"
+ },
+ {
+ "enum": [
+ "unusedEdgeHosts"
+ ],
+ "type": "string",
+ "name": "quickFilter",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of edge host metadata",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "edgeHosts": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ },
+ "edgeHostType": {
+ "type": "string",
+ "enum": [
+ "libvirt",
+ "edge-native",
+ "vsphere"
+ ]
+ },
+ "healthState": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/edgehosts/register": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Registers the edge host device",
+ "operationId": "v1EdgeHostDevicesRegister",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "aclmeta": {
+ "description": "Resource access control information (Read-only response data)",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "cloudProperties": {
+ "description": "Additional cloud properties of the edge host (applicable based on the cloud type)",
+ "type": "object",
+ "properties": {
+ "vsphere": {
+ "description": "Vsphere cloud properties of edge host",
+ "properties": {
+ "datacenters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere datacenter",
+ "type": "object",
+ "properties": {
+ "computeClusters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere compute cluster",
+ "type": "object",
+ "properties": {
+ "datastores": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "resourcePools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "folders": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "device": {
+ "description": "DeviceSpec defines the desired state of Device",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the edge host",
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ },
+ "cpu": {
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "number of cpu cores",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "string"
+ },
+ "partitions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "fileSystemType": {
+ "type": "string"
+ },
+ "freeSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "mountPoint": {
+ "type": "string"
+ },
+ "totalSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "usedSpace": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "Size in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendor": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "gpus": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "memory": {
+ "type": "object",
+ "properties": {
+ "sizeInMB": {
+ "description": "memory size in bytes",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "os": {
+ "type": "object",
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "host": {
+ "description": "EdgeHost is the underlying appliance",
+ "type": "object",
+ "required": [
+ "hostUid",
+ "hostAddress"
+ ],
+ "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": {
+ "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": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "SSH secret name",
+ "type": "string"
+ },
+ "privateKey": {
+ "description": "Private Key to access the host",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "hostPairingKey": {
+ "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS",
+ "type": "string",
+ "format": "password",
+ "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": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "properties": {
+ "description": "Additional properties of edge host",
+ "properties": {
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "Network defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "storagePools": {
+ "type": "array",
+ "items": {
+ "description": "StoragePool is the storage pool for the vm image",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "service": {
+ "description": "ServiceSpec defines the specification of service registering edge",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "description": "Cloudtype of the provisioned edge host",
+ "type": "string",
+ "enum": [
+ "libvirt",
+ "vsphere",
+ "edge-native"
+ ]
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "healthy",
+ "unhealthy"
+ ]
+ }
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "profileStatus": {
+ "type": "object",
+ "properties": {
+ "hasUserMacros": {
+ "description": "If it is true then profile pack values has a reference to user defined macros",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "serviceAuthToken": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "properties": {
+ "aclmeta": {
+ "description": "Resource access control information (Read-only response data)",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "cloudProperties": {
+ "description": "Additional cloud properties of the edge host (applicable based on the cloud type)",
+ "type": "object",
+ "properties": {
+ "vsphere": {
+ "description": "Vsphere cloud properties of edge host",
+ "properties": {
+ "datacenters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere datacenter",
+ "type": "object",
+ "properties": {
+ "computeClusters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere compute cluster",
+ "type": "object",
+ "properties": {
+ "datastores": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "resourcePools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "folders": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "device": {
+ "description": "DeviceSpec defines the desired state of Device",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the edge host",
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ },
+ "cpu": {
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "number of cpu cores",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "string"
+ },
+ "partitions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "fileSystemType": {
+ "type": "string"
+ },
+ "freeSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "mountPoint": {
+ "type": "string"
+ },
+ "totalSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "usedSpace": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "Size in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendor": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "gpus": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "memory": {
+ "type": "object",
+ "properties": {
+ "sizeInMB": {
+ "description": "memory size in bytes",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "os": {
+ "type": "object",
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "host": {
+ "description": "EdgeHost is the underlying appliance",
+ "type": "object",
+ "required": [
+ "hostUid",
+ "hostAddress"
+ ],
+ "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": {
+ "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": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "SSH secret name",
+ "type": "string"
+ },
+ "privateKey": {
+ "description": "Private Key to access the host",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "hostPairingKey": {
+ "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS",
+ "type": "string",
+ "format": "password",
+ "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": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "properties": {
+ "description": "Additional properties of edge host",
+ "properties": {
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "Network defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "storagePools": {
+ "type": "array",
+ "items": {
+ "description": "StoragePool is the storage pool for the vm image",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "service": {
+ "description": "ServiceSpec defines the specification of service registering edge",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "description": "Cloudtype of the provisioned edge host",
+ "type": "string",
+ "enum": [
+ "libvirt",
+ "vsphere",
+ "edge-native"
+ ]
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "healthy",
+ "unhealthy"
+ ]
+ }
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "profileStatus": {
+ "type": "object",
+ "properties": {
+ "hasUserMacros": {
+ "description": "If it is true then profile pack values has a reference to user defined macros",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "serviceAuthToken": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/edgehosts/tokens": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Retrieves a list of edge tokens",
+ "operationId": "v1EdgeTokensList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of edge tokens",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "List of edge tokens",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Edge token information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Edge token specification",
+ "type": "object",
+ "properties": {
+ "defaultProject": {
+ "description": "Edge token project information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Project name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Project uid",
+ "type": "string"
+ }
+ }
+ },
+ "expiry": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "token": {
+ "description": "Edge token",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Edge token status",
+ "type": "object",
+ "properties": {
+ "isActive": {
+ "description": "Set to 'true', if the token is active",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Create the edge token",
+ "operationId": "v1EdgeTokensCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge token request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Edge token specification",
+ "type": "object",
+ "properties": {
+ "defaultProjectUid": {
+ "description": "Default project where the edgehost will be placed on the token authorization",
+ "type": "string"
+ },
+ "expiry": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/edgehosts/tokens/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Returns the specified edge token",
+ "operationId": "v1EdgeTokensUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Edge token information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Edge token specification",
+ "type": "object",
+ "properties": {
+ "defaultProject": {
+ "description": "Edge token project information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Project name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Project uid",
+ "type": "string"
+ }
+ }
+ },
+ "expiry": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "token": {
+ "description": "Edge token",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Edge token status",
+ "type": "object",
+ "properties": {
+ "isActive": {
+ "description": "Set to 'true', if the token is active",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Updates the specified edge token",
+ "operationId": "v1EdgeTokensUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge token update request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "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": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Deletes the specified edge token",
+ "operationId": "v1EdgeTokensUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Edge token uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/tokens/{uid}/state": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Revoke or re-activate the edge token access",
+ "operationId": "v1EdgeTokensUidState",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge token active state",
+ "properties": {
+ "isActive": {
+ "description": "Set to 'true', if the token is active",
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Edge token uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Returns the specified edge host device",
+ "operationId": "v1EdgeHostDevicesUidGet",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "resolve pack values if set to true",
+ "name": "resolvePackValues",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "properties": {
+ "aclmeta": {
+ "description": "Resource access control information (Read-only response data)",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "cloudProperties": {
+ "description": "Additional cloud properties of the edge host (applicable based on the cloud type)",
+ "type": "object",
+ "properties": {
+ "vsphere": {
+ "description": "Vsphere cloud properties of edge host",
+ "properties": {
+ "datacenters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere datacenter",
+ "type": "object",
+ "properties": {
+ "computeClusters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere compute cluster",
+ "type": "object",
+ "properties": {
+ "datastores": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "resourcePools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "folders": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "device": {
+ "description": "DeviceSpec defines the desired state of Device",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the edge host",
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ },
+ "cpu": {
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "number of cpu cores",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "string"
+ },
+ "partitions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "fileSystemType": {
+ "type": "string"
+ },
+ "freeSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "mountPoint": {
+ "type": "string"
+ },
+ "totalSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "usedSpace": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "Size in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendor": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "gpus": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "memory": {
+ "type": "object",
+ "properties": {
+ "sizeInMB": {
+ "description": "memory size in bytes",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "os": {
+ "type": "object",
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "host": {
+ "description": "EdgeHost is the underlying appliance",
+ "type": "object",
+ "required": [
+ "hostUid",
+ "hostAddress"
+ ],
+ "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": {
+ "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": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "SSH secret name",
+ "type": "string"
+ },
+ "privateKey": {
+ "description": "Private Key to access the host",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "hostPairingKey": {
+ "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS",
+ "type": "string",
+ "format": "password",
+ "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": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "properties": {
+ "description": "Additional properties of edge host",
+ "properties": {
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "Network defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "storagePools": {
+ "type": "array",
+ "items": {
+ "description": "StoragePool is the storage pool for the vm image",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "service": {
+ "description": "ServiceSpec defines the specification of service registering edge",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "description": "Cloudtype of the provisioned edge host",
+ "type": "string",
+ "enum": [
+ "libvirt",
+ "vsphere",
+ "edge-native"
+ ]
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "healthy",
+ "unhealthy"
+ ]
+ }
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "profileStatus": {
+ "type": "object",
+ "properties": {
+ "hasUserMacros": {
+ "description": "If it is true then profile pack values has a reference to user defined macros",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "serviceAuthToken": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Updates the specified edge host device",
+ "operationId": "v1EdgeHostDevicesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "aclmeta": {
+ "description": "Resource access control information (Read-only response data)",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "cloudProperties": {
+ "description": "Additional cloud properties of the edge host (applicable based on the cloud type)",
+ "type": "object",
+ "properties": {
+ "vsphere": {
+ "description": "Vsphere cloud properties of edge host",
+ "properties": {
+ "datacenters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere datacenter",
+ "type": "object",
+ "properties": {
+ "computeClusters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere compute cluster",
+ "type": "object",
+ "properties": {
+ "datastores": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "resourcePools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "folders": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "device": {
+ "description": "DeviceSpec defines the desired state of Device",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the edge host",
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ },
+ "cpu": {
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "number of cpu cores",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "string"
+ },
+ "partitions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "fileSystemType": {
+ "type": "string"
+ },
+ "freeSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "mountPoint": {
+ "type": "string"
+ },
+ "totalSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "usedSpace": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "Size in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendor": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "gpus": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "memory": {
+ "type": "object",
+ "properties": {
+ "sizeInMB": {
+ "description": "memory size in bytes",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "os": {
+ "type": "object",
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "host": {
+ "description": "EdgeHost is the underlying appliance",
+ "type": "object",
+ "required": [
+ "hostUid",
+ "hostAddress"
+ ],
+ "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": {
+ "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": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "SSH secret name",
+ "type": "string"
+ },
+ "privateKey": {
+ "description": "Private Key to access the host",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "hostPairingKey": {
+ "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS",
+ "type": "string",
+ "format": "password",
+ "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": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "properties": {
+ "description": "Additional properties of edge host",
+ "properties": {
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "Network defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "storagePools": {
+ "type": "array",
+ "items": {
+ "description": "StoragePool is the storage pool for the vm image",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "service": {
+ "description": "ServiceSpec defines the specification of service registering edge",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "description": "Cloudtype of the provisioned edge host",
+ "type": "string",
+ "enum": [
+ "libvirt",
+ "vsphere",
+ "edge-native"
+ ]
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "healthy",
+ "unhealthy"
+ ]
+ }
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "profileStatus": {
+ "type": "object",
+ "properties": {
+ "hasUserMacros": {
+ "description": "If it is true then profile pack values has a reference to user defined macros",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "serviceAuthToken": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Deletes the specified edge host device",
+ "operationId": "v1EdgeHostDevicesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/{uid}/cluster/associate": {
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Deassociate the clusters to the edge host",
+ "operationId": "v1EdgeHostDevicesUidClusterDeassociate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Associate the clusters to the edge host",
+ "operationId": "v1EdgeHostDevicesUidClusterAssociate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/{uid}/health": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Updates the edge host health",
+ "operationId": "v1EdgeHostDevicesHealthUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "healthy",
+ "unhealthy"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/{uid}/hostCheckSum": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Update the specified edge host device host check sum",
+ "operationId": "v1EdgeHostDeviceHostCheckSumUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "hostCheckSum": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/{uid}/hostPairingKey": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Update the specified edge host device host pairing key",
+ "operationId": "v1EdgeHostDeviceHostPairingKeyUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "hostPairingKey": {
+ "type": "string",
+ "format": "password"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/{uid}/meta": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Updates the specified edge host device meta",
+ "operationId": "v1EdgeHostDevicesUidMetaUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge host device uid and name",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "Object identity meta with tags",
+ "type": "object",
+ "properties": {
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/{uid}/pack/manifests/{manifestUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Returns the specified edge host's manifest",
+ "operationId": "v1EdgeHostDevicesUidPackManifestsUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "edge host uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "manifest uid which is part of the pack ref",
+ "name": "manifestUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "resolve pack manifest values if set to true",
+ "name": "resolveManifestValues",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Pack manifest content",
+ "schema": {
+ "description": "Manifest object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Manifest spec",
+ "properties": {
+ "published": {
+ "description": "Published manifest object",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "digest": {
+ "description": "Manifest digest",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/edgehosts/{uid}/packs/status": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Patch update specified edge host's packs status",
+ "operationId": "v1EdgeHostDevicesUidPacksStatusPatch",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "ReadyForInstall",
+ "Installed",
+ "Ready",
+ "Error",
+ "UpgradeAvailable",
+ "WaitingForOtherLayers"
+ ]
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "profileUid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/{uid}/profiles": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Returns the associated profiles of a specified edge host device",
+ "operationId": "v1EdgeHostDevicesUidProfilesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "includes pack meta such as schema, presets",
+ "name": "includePackMeta",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "required": [
+ "profiles"
+ ],
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile response",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster profile spec response",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "description": "Cluster profile cloud type",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile packs object",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack object",
+ "type": "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": {
+ "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "cloudTypes": {
+ "description": "Pack supported cloud types",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "description": "Pack logo url",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the cluster profile",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "presets": {
+ "description": "Pack presets are the set of configurations applied on user selection of presets",
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "description": "Pack schema contains constraints such as data type, format, hints for the pack values",
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "template": {
+ "description": "Pack template configuration",
+ "properties": {
+ "manifest": {
+ "description": "Pack template manifest content",
+ "type": "string"
+ },
+ "parameters": {
+ "description": "Pack template parameters",
+ "properties": {
+ "inputParameters": {
+ "description": "Pack template input parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "outputParameters": {
+ "description": "Pack template output parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "values": {
+ "description": "Pack template values",
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "Pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Pack version",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Pack status",
+ "type": "object"
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "version": {
+ "description": "Cluster profile version",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Associate cluster profiles to the specified edge host device",
+ "operationId": "v1EdgeHostDevicesUidProfilesUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "profiles"
+ ],
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "spcApplySettings": {
+ "type": "object",
+ "properties": {
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "DownloadAndInstall",
+ "DownloadAndInstallLater"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/{uid}/reset": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Reset the cluster through edge host",
+ "operationId": "V1EdgeHostsUidReset",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Edge host uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/{uid}/spc/download": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Download the specified edge host device spc",
+ "operationId": "v1EdgeHostDevicesUidSpcDownload",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "download spc archive file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/edgehosts/{uid}/vsphere/properties": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "edgehosts"
+ ],
+ "summary": "Updates the specified edge host device vsphere properties",
+ "operationId": "v1EdgeHostDevicesUidVspherePropertiesUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Vsphere cloud properties of edge host",
+ "properties": {
+ "datacenters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere datacenter",
+ "type": "object",
+ "properties": {
+ "computeClusters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere compute cluster",
+ "type": "object",
+ "properties": {
+ "datastores": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "resourcePools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "folders": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/events/components": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns a paginated list of component events based on request parameters",
+ "tags": [
+ "events"
+ ],
+ "summary": "Returns a paginated list of component events based on request parameters",
+ "operationId": "v1EventsComponentsList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of component events items",
+ "schema": {
+ "description": "An array of component events items",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "Describes a list of returned component events",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Describes the component event details",
+ "type": "object",
+ "properties": {
+ "involvedObject": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "message": {
+ "description": "Describes message associated with the event",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "reason": {
+ "description": "Describes the reason for the event",
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the event is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "severity": {
+ "description": "Describes the gravitas for the event",
+ "type": "string"
+ },
+ "source": {
+ "description": "Describes the origin for the event",
+ "type": "object",
+ "properties": {
+ "component": {
+ "description": "Describes the component where event originated",
+ "type": "string"
+ },
+ "host": {
+ "description": "Describes the host where event originated",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Creates a component event",
+ "tags": [
+ "events"
+ ],
+ "summary": "Creates a component event",
+ "operationId": "v1EventsComponentsCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Describes the component event details",
+ "type": "object",
+ "properties": {
+ "involvedObject": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "message": {
+ "description": "Describes message associated with the event",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "reason": {
+ "description": "Describes the reason for the event",
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the event is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "severity": {
+ "description": "Describes the gravitas for the event",
+ "type": "string"
+ },
+ "source": {
+ "description": "Describes the origin for the event",
+ "type": "object",
+ "properties": {
+ "component": {
+ "description": "Describes the component where event originated",
+ "type": "string"
+ },
+ "host": {
+ "description": "Describes the host where event originated",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/events/components/bulk": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Creates the component events in bulk",
+ "tags": [
+ "events"
+ ],
+ "summary": "Creates the component events in bulk",
+ "operationId": "v1EventsComponentsCreateBulk",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Describes a list component events' details",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Describes the component event details",
+ "type": "object",
+ "properties": {
+ "involvedObject": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "message": {
+ "description": "Describes message associated with the event",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "reason": {
+ "description": "Describes the reason for the event",
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the event is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "severity": {
+ "description": "Describes the gravitas for the event",
+ "type": "string"
+ },
+ "source": {
+ "description": "Describes the origin for the event",
+ "type": "object",
+ "properties": {
+ "component": {
+ "description": "Describes the component where event originated",
+ "type": "string"
+ },
+ "host": {
+ "description": "Describes the host where event originated",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/events/components/{objectKind}/{objectUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns a list of components events for the specified related object",
+ "tags": [
+ "events"
+ ],
+ "summary": "Returns a list of components events for the specified related object",
+ "operationId": "v1EventsComponentsObjTypeUidList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of component event items",
+ "schema": {
+ "description": "An array of component events items",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "Describes a list of returned component events",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Describes the component event details",
+ "type": "object",
+ "properties": {
+ "involvedObject": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "message": {
+ "description": "Describes message associated with the event",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "reason": {
+ "description": "Describes the reason for the event",
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the event is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "severity": {
+ "description": "Describes the gravitas for the event",
+ "type": "string"
+ },
+ "source": {
+ "description": "Describes the origin for the event",
+ "type": "object",
+ "properties": {
+ "component": {
+ "description": "Describes the component where event originated",
+ "type": "string"
+ },
+ "host": {
+ "description": "Describes the host where event originated",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "events"
+ ],
+ "summary": "Delete all the components events for the specified related object",
+ "operationId": "v1EventsComponentsObjTypeUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "enum": [
+ "spectrocluster",
+ "edgehost"
+ ],
+ "type": "string",
+ "description": "Describes the related object uid for which events has to be fetched",
+ "name": "objectKind",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Describes the related object kind for which events has to be fetched",
+ "name": "objectUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/filters": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "filters"
+ ],
+ "summary": "Returns a list of Filters",
+ "operationId": "v1FiltersList",
+ "parameters": [
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of filters",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter summary object",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "properties": {
+ "filterType": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/filters/metadata": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "filters"
+ ],
+ "summary": "Returns a list of Filters metadata",
+ "operationId": "v1FiltersMetadata",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "filterType can be - [tag, meta, resource]",
+ "name": "filterType",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of filters",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter metadata object",
+ "type": "object",
+ "properties": {
+ "filterType": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/filters/tag": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "filters"
+ ],
+ "summary": "Creates a Tag filter",
+ "operationId": "v1TagFiltersCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Tag Filter create spec",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Filter create spec",
+ "type": "object",
+ "properties": {
+ "filterGroup": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq"
+ ]
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/filters/tag/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "filters"
+ ],
+ "summary": "Returns the specified Filter object",
+ "operationId": "v1TagFilterUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A Filter object",
+ "schema": {
+ "description": "Filter summary object",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Filter create spec",
+ "type": "object",
+ "properties": {
+ "filterGroup": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq"
+ ]
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "filters"
+ ],
+ "summary": "Updates a Tag filter",
+ "operationId": "v1TagFilterUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Tag Filter create spec",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Filter create spec",
+ "type": "object",
+ "properties": {
+ "filterGroup": {
+ "properties": {
+ "conjunction": {
+ "type": "string",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "x-nullable": true
+ },
+ "filters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "negation": {
+ "type": "boolean"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq"
+ ]
+ },
+ "values": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "filters"
+ ],
+ "summary": "Delete the specified Filter object",
+ "operationId": "v1TagFilterUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/metrics/{resourceKind}/values": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns all the metrics for a given resource kind",
+ "tags": [
+ "metrics"
+ ],
+ "summary": "Retrieves the list of metrics for a specified resource kind",
+ "operationId": "v1MetricsList",
+ "parameters": [
+ {
+ "enum": [
+ "pod",
+ "namespace",
+ "spectrocluster",
+ "machine",
+ "project"
+ ],
+ "type": "string",
+ "name": "resourceKind",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "default": "all",
+ "name": "metricKind",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "name": "startTime",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "name": "endTime",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int32",
+ "default": 1,
+ "name": "period",
+ "in": "query"
+ },
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "includeMasterMachines in boolean, group the data point by including master nodes if set to true",
+ "name": "includeMasterMachines",
+ "in": "query"
+ },
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "if true then api returns only aggregation values, else api returns all data points by default",
+ "name": "discrete",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "name": "spectroClusterUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of metric items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "metrics": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "aggregation": {
+ "description": "Aggregation values",
+ "type": "object",
+ "properties": {
+ "avg": {
+ "type": "number",
+ "x-omitempty": false
+ },
+ "count": {
+ "type": "number",
+ "format": "int64",
+ "x-omitempty": false
+ },
+ "max": {
+ "type": "number",
+ "x-omitempty": false
+ },
+ "min": {
+ "type": "number",
+ "x-omitempty": false
+ },
+ "sum": {
+ "type": "number",
+ "x-omitempty": false
+ }
+ }
+ },
+ "kind": {
+ "type": "string"
+ },
+ "points": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Metric Info",
+ "type": "object",
+ "properties": {
+ "avg": {
+ "type": "number"
+ },
+ "count": {
+ "type": "number",
+ "format": "int64"
+ },
+ "max": {
+ "type": "number"
+ },
+ "min": {
+ "type": "number"
+ },
+ "sum": {
+ "type": "number"
+ },
+ "timestamp": {
+ "type": "number",
+ "format": "int64"
+ },
+ "value": {
+ "type": "number",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "unit": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/metrics/{resourceKind}/{resourceUid}/values": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "metrics"
+ ],
+ "summary": "Returns the metrics for a specified resource uid",
+ "operationId": "v1MetricsUidList",
+ "parameters": [
+ {
+ "enum": [
+ "pod",
+ "namespace",
+ "spectrocluster",
+ "machine",
+ "project"
+ ],
+ "type": "string",
+ "name": "resourceKind",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "name": "resourceUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "default": "all",
+ "description": "multiple metric kinds can be provided with comma separated",
+ "name": "metricKind",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "name": "startTime",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "name": "endTime",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int32",
+ "default": 1,
+ "description": "period in minutes, group the data point by the specified period",
+ "name": "period",
+ "in": "query"
+ },
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "includeMasterMachines in boolean, group the data point by including master nodes if set to true",
+ "name": "includeMasterMachines",
+ "in": "query"
+ },
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "if true then api returns only aggregation values, else api returns all data points by default",
+ "name": "discrete",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of metric items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "aggregation": {
+ "description": "Aggregation values",
+ "type": "object",
+ "properties": {
+ "avg": {
+ "type": "number",
+ "x-omitempty": false
+ },
+ "count": {
+ "type": "number",
+ "format": "int64",
+ "x-omitempty": false
+ },
+ "max": {
+ "type": "number",
+ "x-omitempty": false
+ },
+ "min": {
+ "type": "number",
+ "x-omitempty": false
+ },
+ "sum": {
+ "type": "number",
+ "x-omitempty": false
+ }
+ }
+ },
+ "kind": {
+ "type": "string"
+ },
+ "points": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Metric Info",
+ "type": "object",
+ "properties": {
+ "avg": {
+ "type": "number"
+ },
+ "count": {
+ "type": "number",
+ "format": "int64"
+ },
+ "max": {
+ "type": "number"
+ },
+ "min": {
+ "type": "number"
+ },
+ "sum": {
+ "type": "number"
+ },
+ "timestamp": {
+ "type": "number",
+ "format": "int64"
+ },
+ "value": {
+ "type": "number",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "unit": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "metrics"
+ ],
+ "summary": "Deletes the metrics of the specified resource",
+ "operationId": "v1MetricsUidDelete",
+ "parameters": [
+ {
+ "enum": [
+ "pod",
+ "namespace",
+ "spectrocluster",
+ "machine",
+ "project"
+ ],
+ "type": "string",
+ "name": "resourceKind",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "name": "resourceUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ }
+ },
+ "/v1/notifications/": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns a paginated list of notifications based on request parameters",
+ "tags": [
+ "notifications"
+ ],
+ "summary": "Returns a paginated list of notifications based on request parameters",
+ "operationId": "v1NotificationsList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of notification items",
+ "schema": {
+ "description": "Describe a list of generated notifications",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "Describe a list of generated notifications",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Describes event notification and action definition",
+ "type": "object",
+ "properties": {
+ "action": {
+ "description": "Describes actions for the notification",
+ "type": "object",
+ "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]",
+ "type": "string",
+ "enum": [
+ "NotifyActionPacksUpdate",
+ "NotifyActionClusterProfileUpdate",
+ "NotifyActionPackRegistryUpdate",
+ "NotifyActionClusterUpdate",
+ "NotifyActionNone"
+ ]
+ },
+ "events": {
+ "description": "Describes the events happened for the notifications",
+ "type": "object",
+ "additionalProperties": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "source": {
+ "description": "Describes origin info for the notification",
+ "type": "object",
+ "properties": {
+ "component": {
+ "description": "Describes component where notification originated",
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "description": "Describes type of notification. Possible values [NotificationPackUpdate, NotificationPackRegistryUpdate, NotificationNone]",
+ "type": "string",
+ "enum": [
+ "NotificationPackUpdate",
+ "NotificationPackRegistryUpdate",
+ "NotificationNone"
+ ]
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/notifications/events": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Creates a notification event",
+ "tags": [
+ "notifications"
+ ],
+ "summary": "Creates a notification event",
+ "operationId": "v1NotificationsEventCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Describes notification event details",
+ "type": "object",
+ "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": {
+ "description": "Describes a event messages with meta digest as the key",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Describes notification event type",
+ "type": "string",
+ "enum": [
+ "NotificationPackSync",
+ "NotificationClusterProfileSync"
+ ]
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/notifications/{objectKind}/{objectUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns a list of notifications for the specified related object",
+ "tags": [
+ "notifications"
+ ],
+ "summary": "Returns a list of notifications for the specified related object",
+ "operationId": "v1NotificationsObjTypeUidList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of component event items",
+ "schema": {
+ "description": "Describe a list of generated notifications",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "Describe a list of generated notifications",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Describes event notification and action definition",
+ "type": "object",
+ "properties": {
+ "action": {
+ "description": "Describes actions for the notification",
+ "type": "object",
+ "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]",
+ "type": "string",
+ "enum": [
+ "NotifyActionPacksUpdate",
+ "NotifyActionClusterProfileUpdate",
+ "NotifyActionPackRegistryUpdate",
+ "NotifyActionClusterUpdate",
+ "NotifyActionNone"
+ ]
+ },
+ "events": {
+ "description": "Describes the events happened for the notifications",
+ "type": "object",
+ "additionalProperties": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "source": {
+ "description": "Describes origin info for the notification",
+ "type": "object",
+ "properties": {
+ "component": {
+ "description": "Describes component where notification originated",
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "description": "Describes type of notification. Possible values [NotificationPackUpdate, NotificationPackRegistryUpdate, NotificationNone]",
+ "type": "string",
+ "enum": [
+ "NotificationPackUpdate",
+ "NotificationPackRegistryUpdate",
+ "NotificationNone"
+ ]
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "enum": [
+ "spectrocluster",
+ "clusterprofile",
+ "appdeployment"
+ ],
+ "type": "string",
+ "description": "Describes the related object kind for which notifications have to be fetched",
+ "name": "objectKind",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Describes the related object uid for which notifications have to be fetched",
+ "name": "objectUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Describes a way to fetch \"done\" notifications",
+ "name": "isDone",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/notifications/{uid}/ack": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Updates the specified notification for the acknowledgment",
+ "tags": [
+ "notifications"
+ ],
+ "summary": "Updates the specified notification for the acknowledgment",
+ "operationId": "v1NotificationsUidAck",
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Describes acknowledging notification uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/notifications/{uid}/done": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Updates the specified notification action as done",
+ "tags": [
+ "notifications"
+ ],
+ "summary": "Updates the specified notification action as done",
+ "operationId": "v1NotificationsUidDone",
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Describes notification uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Retrieves a list of overlords owned by the tenant",
+ "operationId": "v1OverlordsList",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "name",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Array of Overlords",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Overlord defintiion",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Overload spec",
+ "type": "object",
+ "properties": {
+ "cloudAccountUid": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "ipAddress": {
+ "type": "string"
+ },
+ "ipPools": {
+ "type": "array",
+ "items": {
+ "description": "IP Pool entity definition",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "pool": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ },
+ "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
+ }
+ }
+ },
+ "status": {
+ "description": "IP Pool status",
+ "type": "object",
+ "properties": {
+ "allottedIps": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "associatedClusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "inUse": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "isSelfHosted": {
+ "type": "boolean"
+ },
+ "isSystem": {
+ "type": "boolean"
+ },
+ "spectroClusterUid": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "tenantUid": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Overload status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Spectro cluster health status",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster health condition",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "isActive": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "isReady": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "kubectlCommands": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/overlords/maas/manifest": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Returns the manifests required for the private gateway installation",
+ "operationId": "V1OverlordsMaasManifest",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "overlord manifest",
+ "type": "object",
+ "properties": {
+ "manifest": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "pairingCode",
+ "in": "query",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/maas/{uid}/account": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "update the maas cloudaccount for the private gateway",
+ "operationId": "v1OverlordsUidMaasAccountUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "account": {
+ "type": "object",
+ "required": [
+ "apiKey",
+ "apiEndpoint"
+ ],
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "shareWithProjects": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "create the maas cloudaccount for the private gateway",
+ "operationId": "v1OverlordsUidMaasAccountCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "account": {
+ "type": "object",
+ "required": [
+ "apiKey",
+ "apiEndpoint"
+ ],
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Name for the private gateway & cloud account",
+ "type": "string"
+ },
+ "shareWithProjects": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/maas/{uid}/account/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "validate the maas cloudaccount for the private gateway",
+ "operationId": "v1OverlordsUidMaasAccountValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "account": {
+ "type": "object",
+ "required": [
+ "apiKey",
+ "apiEndpoint"
+ ],
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/maas/{uid}/cloudconfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "update the maas cloud config for the private gateway",
+ "operationId": "V1OverlordsUidMaasCloudConfigUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "domain"
+ ],
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterProfiles": {
+ "description": "Cluster profiles pack configuration for private gateway cluster",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterSettings": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machineConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "description": "for master pool, this will be the failure domains for kcp",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "resourcePool": {
+ "type": "string"
+ }
+ }
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "create the maas cloud config for the private gateway",
+ "operationId": "V1OverlordsUidMaasCloudConfigCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "domain"
+ ],
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterProfiles": {
+ "description": "Cluster profiles pack configuration for private gateway cluster",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterSettings": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machineConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "description": "for master pool, this will be the failure domains for kcp",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "resourcePool": {
+ "type": "string"
+ }
+ }
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/maas/{uid}/clusterprofile": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Returns the specified maas private gateway cluster profile",
+ "operationId": "v1OverlordsUidMaasClusterProfile",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "ClusterProfile is the Schema for the clusterprofiles API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "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",
+ "type": "object",
+ "properties": {
+ "draft": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "published": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "version": {
+ "type": "string"
+ },
+ "versions": {
+ "description": "Cluster profile's list of all the versions",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile with version",
+ "properties": {
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "ClusterProfileStatus defines the observed state of ClusterProfile",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "isPublished": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/migrate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "migrate all the clusters from source overlord to target overlord",
+ "operationId": "V1OverlordsMigrate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "sourceUid": {
+ "type": "string"
+ },
+ "targetUid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ }
+ },
+ "/v1/overlords/openstack/manifest": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Returns the manifests required for the private gateway installation",
+ "operationId": "v1OverlordsOpenStackManifest",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "overlord manifest",
+ "type": "object",
+ "properties": {
+ "manifest": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "pairingCode",
+ "in": "query",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/openstack/{uid}/account": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "update the OpenStack cloudaccount for the private gateway",
+ "operationId": "v1OverlordsUidOpenStackAccountUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "account": {
+ "description": "auth-url,project,username,password,domain,cacert etc",
+ "type": "object",
+ "required": [
+ "identityEndpoint",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "shareWithProjects": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "create the OpenStack cloudaccount for the private gateway",
+ "operationId": "v1OverlordsUidOpenStackAccountCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "account": {
+ "description": "auth-url,project,username,password,domain,cacert etc",
+ "type": "object",
+ "required": [
+ "identityEndpoint",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "name": {
+ "description": "Name for the private gateway & cloud account",
+ "type": "string"
+ },
+ "shareWithProjects": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/openstack/{uid}/account/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "validate the OpenStack cloudaccount for the private gateway",
+ "operationId": "v1OverlordsUidOpenStackAccountValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "account": {
+ "description": "auth-url,project,username,password,domain,cacert etc",
+ "type": "object",
+ "required": [
+ "identityEndpoint",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/openstack/{uid}/cloudconfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "update the OpenStack cloud config for the private gateway",
+ "operationId": "v1OverlordsUidOpenStackCloudConfigUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "domain": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "clusterProfiles": {
+ "description": "Cluster profiles pack configuration for private gateway cluster",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterSettings": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machineConfig": {
+ "type": "object",
+ "required": [
+ "flavorConfig"
+ ],
+ "properties": {
+ "azs": {
+ "description": "for master pool, this will be the failure domains for kcp",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "flavorConfig": {
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "description": "Openstack flavor name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "create the OpenStack cloud config for the private gateway",
+ "operationId": "v1OverlordsUidOpenStackCloudConfigCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "clusterConfig": {
+ "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "domain": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "clusterProfiles": {
+ "description": "Cluster profiles pack configuration for private gateway cluster",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterSettings": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machineConfig": {
+ "type": "object",
+ "required": [
+ "flavorConfig"
+ ],
+ "properties": {
+ "azs": {
+ "description": "for master pool, this will be the failure domains for kcp",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "flavorConfig": {
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "description": "Openstack flavor name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/openstack/{uid}/clusterprofile": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Returns the specified OpenStack private gateway cluster profile",
+ "operationId": "v1OverlordsUidOpenStackClusterProfile",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "ClusterProfile is the Schema for the clusterprofiles API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "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",
+ "type": "object",
+ "properties": {
+ "draft": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "published": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "version": {
+ "type": "string"
+ },
+ "versions": {
+ "description": "Cluster profile's list of all the versions",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile with version",
+ "properties": {
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "ClusterProfileStatus defines the observed state of ClusterProfile",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "isPublished": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/pairing/code": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Returns the pairing code for the private gateway",
+ "operationId": "v1OverlordsPairingCode",
+ "parameters": [
+ {
+ "enum": [
+ "vsphere",
+ "openstack",
+ "maas"
+ ],
+ "type": "string",
+ "name": "cloudType",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Pairing code response",
+ "type": "object",
+ "properties": {
+ "pairingCode": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/overlords/vsphere/manifest": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Returns the manifests required for the private gateway installation",
+ "operationId": "v1OverlordsVsphereManifest",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "overlord manifest",
+ "type": "object",
+ "properties": {
+ "manifest": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "pairingCode",
+ "in": "query",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/vsphere/ova": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Returns overlord's ova information",
+ "operationId": "v1OverlordsVsphereOvaGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Overload ova details",
+ "type": "object",
+ "properties": {
+ "location": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/overlords/vsphere/{uid}/account": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "update the vSphere cloudaccount for the private gateway",
+ "operationId": "v1OverlordsUidVsphereAccountUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "account": {
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "shareWithProjects": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "create the vSphere cloudaccount for the private gateway",
+ "operationId": "v1OverlordsUidVsphereAccountCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "account": {
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ },
+ "name": {
+ "description": "Name for the private gateway & cloud account",
+ "type": "string"
+ },
+ "shareWithProjects": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/vsphere/{uid}/account/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "validate the vSphere cloudaccount for the private gateway",
+ "operationId": "v1OverlordsUidVsphereAccountValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "account": {
+ "type": "object",
+ "required": [
+ "vcenterServer",
+ "username",
+ "password"
+ ],
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/vsphere/{uid}/cloudconfig": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "update the vSphere cloud config for the private gateway",
+ "operationId": "v1OverlordsUidVsphereCloudConfigUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "clusterProfiles": {
+ "description": "Cluster profiles pack configuration for private gateway cluster",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterSettings": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "create the vSphere cloud config for the private gateway",
+ "operationId": "v1OverlordsUidVsphereCloudConfigCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "clusterProfiles": {
+ "description": "Cluster profiles pack configuration for private gateway cluster",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterSettings": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/vsphere/{uid}/clusterprofile": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Returns the specified vsphere private gateway cluster profile",
+ "operationId": "v1OverlordsUidVsphereClusterProfile",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "ClusterProfile is the Schema for the clusterprofiles API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "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",
+ "type": "object",
+ "properties": {
+ "draft": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "published": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "version": {
+ "type": "string"
+ },
+ "versions": {
+ "description": "Cluster profile's list of all the versions",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile with version",
+ "properties": {
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "ClusterProfileStatus defines the observed state of ClusterProfile",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "isPublished": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/vsphere/{uid}/pools": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Retrieves a list of IP Pools for the specified private gateway",
+ "operationId": "v1OverlordsUidPoolsList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "IP Pool entity definition",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "pool": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ },
+ "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
+ }
+ }
+ },
+ "status": {
+ "description": "IP Pool status",
+ "type": "object",
+ "properties": {
+ "allottedIps": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "associatedClusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "inUse": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Creates an IP pool defintion for the sepcified private gateway",
+ "operationId": "v1OverlordsUidPoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "IP Pool input entity definition",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "pool"
+ ],
+ "properties": {
+ "pool": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ },
+ "restrictToSingleCluster": {
+ "description": "if true, restricts this IP pool to be used by single cluster at any time",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/vsphere/{uid}/pools/{poolUid}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Updates the private gateways's specified IP Pool data",
+ "operationId": "v1OverlordsUidPoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "IP Pool input entity definition",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "pool"
+ ],
+ "properties": {
+ "pool": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ },
+ "restrictToSingleCluster": {
+ "description": "if true, restricts this IP pool to be used by single cluster at any time",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Deletes the private gateways's specified IP Pool data",
+ "operationId": "v1OverlordsUidPoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "name": "poolUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/vsphere/{uid}/properties/computecluster/resources": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Retrieves the vSphere computecluster resources for the specified private gateway's account",
+ "operationId": "v1OverlordsUidVsphereComputeclusterRes",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Datacenter and its resources like datastore, resoucepool, folders",
+ "type": "object",
+ "properties": {
+ "computecluster": {
+ "description": "Vsphere compute cluster",
+ "type": "object",
+ "properties": {
+ "datastores": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "resourcePools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "datacenter": {
+ "description": "Name of the datacenter",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "name": "datacenter",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "name": "computecluster",
+ "in": "query",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/vsphere/{uid}/properties/datacenters": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Retrieves the vSphere datacenters & datacluster for the specified private gateway's account",
+ "operationId": "v1OverlordsUidVsphereDatacenters",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "List of Datacenters with computeclusters",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "List of associated datacenters",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "List of Datacenter with computeclusters",
+ "type": "object",
+ "properties": {
+ "computeclusters": {
+ "description": "List of the VSphere compute clusters in datacenter",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "datacenter": {
+ "description": "name of the datacenter of the VSphere",
+ "type": "string"
+ },
+ "folders": {
+ "description": "List of the VSphere folders in datacenter",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "Returns the specified private gateway's for the given uid",
+ "operationId": "v1OverlordsUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Overlord defintiion",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Overload spec",
+ "type": "object",
+ "properties": {
+ "cloudAccountUid": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "ipAddress": {
+ "type": "string"
+ },
+ "ipPools": {
+ "type": "array",
+ "items": {
+ "description": "IP Pool entity definition",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "pool": {
+ "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool",
+ "type": "object",
+ "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": {
+ "description": "Nameserver define search domains and nameserver addresses",
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "search": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "prefix": {
+ "description": "Prefix is the mask of the network as integer (max 128)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ },
+ "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
+ }
+ }
+ },
+ "status": {
+ "description": "IP Pool status",
+ "type": "object",
+ "properties": {
+ "allottedIps": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "associatedClusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "inUse": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "isSelfHosted": {
+ "type": "boolean"
+ },
+ "isSystem": {
+ "type": "boolean"
+ },
+ "spectroClusterUid": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "tenantUid": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Overload status",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "Spectro cluster health status",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro cluster health condition",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "lastHeartBeatTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "isActive": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "isReady": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "kubectlCommands": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "delete the private gateway",
+ "operationId": "v1OverlordsUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Deleted response with message",
+ "properties": {
+ "msg": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/{uid}/metadata": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "update the private gateway's metadata",
+ "operationId": "v1OverlordsUidMetadataUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Resource metadata",
+ "type": "object",
+ "required": [
+ "metadata"
+ ],
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/overlords/{uid}/reset": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "overlords"
+ ],
+ "summary": "reset the private gateway by disaaociating the private gateway's resources",
+ "operationId": "v1OverlordsUidReset",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Update response with message",
+ "properties": {
+ "msg": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/packs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "packs"
+ ],
+ "summary": "Retrieves a list of packs",
+ "operationId": "v1PacksSummaryList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of pack summary items",
+ "schema": {
+ "description": "List of packs",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "Packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack summary object",
+ "type": "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack object",
+ "type": "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": {
+ "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "cloudTypes": {
+ "description": "Pack supported cloud types",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "description": "Pack logo url",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the cluster profile",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "presets": {
+ "description": "Pack presets are the set of configurations applied on user selection of presets",
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "description": "Pack schema contains constraints such as data type, format, hints for the pack values",
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "template": {
+ "description": "Pack template configuration",
+ "properties": {
+ "manifest": {
+ "description": "Pack template manifest content",
+ "type": "string"
+ },
+ "parameters": {
+ "description": "Pack template parameters",
+ "properties": {
+ "inputParameters": {
+ "description": "Pack template input parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "outputParameters": {
+ "description": "Pack template output parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "values": {
+ "description": "Pack template values",
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "Pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Pack version",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Pack status",
+ "type": "object"
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "packs"
+ ],
+ "summary": "Deletes the packs",
+ "operationId": "v1PacksSummaryDelete",
+ "parameters": [
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Properties to send back after deletion operation",
+ "properties": {
+ "count": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "items": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/packs/search": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "packs"
+ ],
+ "summary": "Retrieves a list of packs based on filter",
+ "operationId": "v1PacksSearch",
+ "parameters": [
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Packs filter spec",
+ "properties": {
+ "filter": {
+ "description": "Packs filter spec",
+ "properties": {
+ "addOnSubType": {
+ "description": "Pack add-on sub type such as monitoring, db etc",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "addOnType": {
+ "description": "Pack add-on type such as logging, monitoring, security etc",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "displayName": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "contains": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "string",
+ "x-nullable": true
+ }
+ }
+ },
+ "environment": {
+ "description": "Pack supported cloud types",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "isFips": {
+ "description": "isFips compliant",
+ "type": "boolean"
+ },
+ "layer": {
+ "description": "Pack layer",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ }
+ },
+ "name": {
+ "type": "object",
+ "properties": {
+ "beginsWith": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "contains": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "eq": {
+ "type": "string",
+ "x-nullable": true
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": true
+ },
+ "ne": {
+ "type": "string",
+ "x-nullable": true
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "source": {
+ "description": "The source filter describes the creation origin/source of the pack. Ex. source can be \"spectrocloud\" or \"community\"",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "state": {
+ "description": "Pack state such as deprecated or disabled",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Pack type",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ }
+ }
+ }
+ },
+ "sort": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Packs sort spec",
+ "properties": {
+ "field": {
+ "description": "Packs sort by fields",
+ "type": "string",
+ "enum": [
+ "name",
+ "type",
+ "layer",
+ "addOnType",
+ "displayName"
+ ],
+ "x-nullable": true
+ },
+ "order": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of pack summary items",
+ "schema": {
+ "description": "List of packs metadata",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "Packs metadata array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack metadata object",
+ "type": "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack metadata spec",
+ "type": "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "displayName": {
+ "description": "Pack display name",
+ "type": "string"
+ },
+ "group": {
+ "description": "Pack group",
+ "type": "string"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "registries": {
+ "description": "Pack registries array",
+ "type": "array",
+ "items": {
+ "description": "Registry metadata information",
+ "properties": {
+ "annotations": {
+ "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/packs/{packName}/registries/{registryUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "packs"
+ ],
+ "summary": "Retrieves a list of packs",
+ "operationId": "v1PacksNameRegistryUidList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Pack object",
+ "type": "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "displayName": {
+ "description": "Pack display name",
+ "type": "string"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "description": "Pack logo url",
+ "type": "string"
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "packValues": {
+ "description": "Pack values array",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "dependencies": {
+ "description": "Pack dependencies array",
+ "type": "array",
+ "items": {
+ "description": "Pack dependency metadata",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "packUid": {
+ "description": "Pack uid",
+ "type": "string"
+ },
+ "presets": {
+ "description": "Pack presets are the set of configurations applied on user selection of presets",
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "template": {
+ "description": "Pack template configuration",
+ "properties": {
+ "manifest": {
+ "description": "Pack template manifest content",
+ "type": "string"
+ },
+ "parameters": {
+ "description": "Pack template parameters",
+ "properties": {
+ "inputParameters": {
+ "description": "Pack template input parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "outputParameters": {
+ "description": "Pack template output parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "values": {
+ "description": "Pack template values",
+ "type": "string"
+ }
+ }
+ },
+ "values": {
+ "description": "Pack values represents the values.yaml used as input parameters",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "tags": {
+ "description": "Pack version tags array",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "group": {
+ "description": "Pack group",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "Pack uid",
+ "type": "string"
+ },
+ "parentTags": {
+ "description": "Pack version parent tags",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "version": {
+ "description": "Pack version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Pack registry uid",
+ "name": "registryUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Pack name",
+ "name": "packName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "default": "all",
+ "description": "Pack cloud type",
+ "name": "cloudType",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Pack layer",
+ "name": "layer",
+ "in": "query"
+ },
+ {
+ "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",
+ "name": "states",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/packs/{packUid}/logo": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "image/png",
+ "image/gif",
+ "image/jpeg"
+ ],
+ "tags": [
+ "packs"
+ ],
+ "summary": "Returns the logo for a specified pack",
+ "operationId": "v1PacksPackUidLogo",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Cache-Control": {
+ "type": "string",
+ "description": "Cache control directive for the response"
+ },
+ "Expires": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Pack uid",
+ "name": "packUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/packs/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "packs"
+ ],
+ "summary": "Returns the specified pack",
+ "operationId": "v1PacksUid",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A pack for the specified uid",
+ "schema": {
+ "description": "Pack object",
+ "type": "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "displayName": {
+ "description": "Pack display name",
+ "type": "string"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "description": "Pack logo url",
+ "type": "string"
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "packValues": {
+ "description": "Pack values array",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "dependencies": {
+ "description": "Pack dependencies array",
+ "type": "array",
+ "items": {
+ "description": "Pack dependency metadata",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "packUid": {
+ "description": "Pack uid",
+ "type": "string"
+ },
+ "presets": {
+ "description": "Pack presets are the set of configurations applied on user selection of presets",
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "template": {
+ "description": "Pack template configuration",
+ "properties": {
+ "manifest": {
+ "description": "Pack template manifest content",
+ "type": "string"
+ },
+ "parameters": {
+ "description": "Pack template parameters",
+ "properties": {
+ "inputParameters": {
+ "description": "Pack template input parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "outputParameters": {
+ "description": "Pack template output parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "values": {
+ "description": "Pack template values",
+ "type": "string"
+ }
+ }
+ },
+ "values": {
+ "description": "Pack values represents the values.yaml used as input parameters",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "tags": {
+ "description": "Pack version tags array",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "group": {
+ "description": "Pack group",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "Pack uid",
+ "type": "string"
+ },
+ "parentTags": {
+ "description": "Pack version parent tags",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "version": {
+ "description": "Pack version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Pack uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/packs/{uid}/readme": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "packs"
+ ],
+ "summary": "Returns the readme of a specified pack",
+ "operationId": "v1PacksUidReadme",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Readme describes the documentation of the specified pack",
+ "schema": {
+ "properties": {
+ "readme": {
+ "description": "Readme describes the documentation of the specified pack",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Pack uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/pcg/selfHosted": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "pcg"
+ ],
+ "summary": "Returns the private gateway manifest link",
+ "operationId": "v1PcgSelfHosted",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Array of kubectl commands",
+ "type": "object",
+ "required": [
+ "kubectlCommands"
+ ],
+ "properties": {
+ "kubectlCommands": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "overlordUid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/pcg/{uid}/register": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "pcg"
+ ],
+ "summary": "Registers the pcg",
+ "operationId": "v1PcgUidRegister",
+ "parameters": [
+ {
+ "name": "pairingCode",
+ "in": "body",
+ "schema": {
+ "description": "Pairing code response",
+ "type": "object",
+ "properties": {
+ "pairingCode": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/pcg/{uid}/services/ally/manifest": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "pcg"
+ ],
+ "summary": "Returns the pcg ally manifest",
+ "operationId": "v1PcgUidAllyManifestGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "download file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/pcg/{uid}/services/jet/manifest": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "pcg"
+ ],
+ "summary": "Returns the pcg jet manifest",
+ "operationId": "v1PcgUidJetManifestGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "download file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/permissions": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "permissions"
+ ],
+ "summary": "Retrieves a list of permissions",
+ "operationId": "v1PermissionsList",
+ "parameters": [
+ {
+ "enum": [
+ "system",
+ "tenant",
+ "project",
+ "resource"
+ ],
+ "type": "string",
+ "name": "scope",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of permissions",
+ "schema": {
+ "description": "Array of permissions",
+ "type": "array",
+ "items": {
+ "description": "Permission information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "permissions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "system",
+ "tenant",
+ "project",
+ "resource"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/projects": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Creates a project",
+ "operationId": "v1ProjectsCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Project information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Project specifications",
+ "properties": {
+ "logoUid": {
+ "type": "string"
+ },
+ "teams": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "roles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "teamId": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "users": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "roles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "userId": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/projects/alerts": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Retrieves a list of supported alerts for a project",
+ "operationId": "v1ProjectsAlerts",
+ "responses": {
+ "200": {
+ "description": "An array of alert components",
+ "schema": {
+ "description": "Supported project alerts component",
+ "type": "object",
+ "properties": {
+ "components": {
+ "type": "array",
+ "items": {
+ "description": "Project alert component",
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "supportedChannels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/projects/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Returns the specified project",
+ "operationId": "v1ProjectsUidGet",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Project information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Project specifications",
+ "properties": {
+ "alerts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "channels": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "alertAllUsers": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "createdBy": {
+ "type": "string"
+ },
+ "http": {
+ "type": "object",
+ "properties": {
+ "body": {
+ "type": "string"
+ },
+ "headers": {
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "method": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ }
+ },
+ "identifiers": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "isActive": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "object",
+ "properties": {
+ "isSucceeded": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "message": {
+ "type": "string"
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "email",
+ "app",
+ "http"
+ ]
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "component": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "logoUrl": {
+ "type": "string"
+ },
+ "teams": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "roles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "teamId": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "users": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "roles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "userId": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Project status",
+ "properties": {
+ "cleanUpStatus": {
+ "description": "Project cleanup status",
+ "type": "object",
+ "properties": {
+ "cleanedResources": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "msg": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "isDisabled": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Updates the specified project",
+ "operationId": "v1ProjectsUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Project information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Project specifications",
+ "properties": {
+ "logoUid": {
+ "type": "string"
+ },
+ "teams": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "roles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "teamId": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "users": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "roles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "userId": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Deletes the specified project",
+ "operationId": "v1ProjectsUidDelete",
+ "parameters": [
+ {
+ "type": "boolean",
+ "name": "cleanupProjectResources",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Project delete request payload",
+ "properties": {
+ "deletingClusterDurationThresholdInMin": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "provisioningClusterDurationThresholdInMin": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/projects/{uid}/alerts/{component}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Upsert the specified alert to the specified project",
+ "operationId": "v1ProjectsUidAlertUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "channels": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "alertAllUsers": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "createdBy": {
+ "type": "string"
+ },
+ "http": {
+ "type": "object",
+ "properties": {
+ "body": {
+ "type": "string"
+ },
+ "headers": {
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "method": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ }
+ },
+ "identifiers": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "isActive": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "object",
+ "properties": {
+ "isSucceeded": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "message": {
+ "type": "string"
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "email",
+ "app",
+ "http"
+ ]
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Create the specified alert to the specified project",
+ "operationId": "v1ProjectsUidAlertCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "alertAllUsers": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "createdBy": {
+ "type": "string"
+ },
+ "http": {
+ "type": "object",
+ "properties": {
+ "body": {
+ "type": "string"
+ },
+ "headers": {
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "method": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ }
+ },
+ "identifiers": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "isActive": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "object",
+ "properties": {
+ "isSucceeded": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "message": {
+ "type": "string"
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "email",
+ "app",
+ "http"
+ ]
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Deletes the specified alert to the specified project",
+ "operationId": "v1ProjectsUidAlertDelete",
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "name": "component",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/projects/{uid}/alerts/{component}/{alertUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Get the specified alert of the specified project",
+ "operationId": "v1ProjectsUidAlertsUidGet",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "alertAllUsers": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "createdBy": {
+ "type": "string"
+ },
+ "http": {
+ "type": "object",
+ "properties": {
+ "body": {
+ "type": "string"
+ },
+ "headers": {
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "method": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ }
+ },
+ "identifiers": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "isActive": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "object",
+ "properties": {
+ "isSucceeded": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "message": {
+ "type": "string"
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "email",
+ "app",
+ "http"
+ ]
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Update the specified alert of the specified project",
+ "operationId": "v1ProjectsUidAlertsUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "alertAllUsers": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "createdBy": {
+ "type": "string"
+ },
+ "http": {
+ "type": "object",
+ "properties": {
+ "body": {
+ "type": "string"
+ },
+ "headers": {
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "method": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ }
+ },
+ "identifiers": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "isActive": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "object",
+ "properties": {
+ "isSucceeded": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "message": {
+ "type": "string"
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "email",
+ "app",
+ "http"
+ ]
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Deletes the specified alert of the specified project",
+ "operationId": "v1ProjectsUidAlertsUidDelete",
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "name": "component",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "name": "alertUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/projects/{uid}/macros": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "List the macros of the specified project",
+ "operationId": "v1ProjectsUidMacrosList",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "properties": {
+ "macros": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Update the macros of the specified project",
+ "operationId": "v1ProjectsUidMacrosUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "macros": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Create or add new macros for the specified project",
+ "operationId": "v1ProjectsUidMacrosCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "macros": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Delete the macros for the specified project by macro name",
+ "operationId": "v1ProjectsUidMacrosDeleteByMacroName",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "macros": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Update the macros for the specified project by macro name",
+ "operationId": "v1ProjectsUidMacrosUpdateByMacroName",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "macros": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/projects/{uid}/meta": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Update the metadata of the specified project",
+ "operationId": "v1ProjectsUidMetaUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/projects/{uid}/preferences/clusterSettings": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Get project cluster settings",
+ "operationId": "v1ProjectClusterSettingsGet",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "properties": {
+ "nodesAutoRemediationSetting": {
+ "properties": {
+ "disableNodesAutoRemediation": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "isEnabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "tenantClusterSettings": {
+ "properties": {
+ "nodesAutoRemediationSetting": {
+ "properties": {
+ "disableNodesAutoRemediation": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "isEnabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/projects/{uid}/preferences/clusterSettings/nodesAutoRemediationSetting": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Update project clusters nodes auto remediation setting",
+ "operationId": "v1ProjectClustersNodesAutoRemediationSettingUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "disableNodesAutoRemediation": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "isEnabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/projects/{uid}/teams": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Update the teams association to the specified project",
+ "operationId": "v1ProjectsUidTeamsUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "teams": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "roles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "teamId": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/projects/{uid}/users": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Update the users association to the specified project",
+ "operationId": "v1ProjectsUidUsersUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "users": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "roles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "userId": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/projects/{uid}/validate": {
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "projects"
+ ],
+ "summary": "Validate and returns active resource of project before delete",
+ "operationId": "v1ProjectsUidValidate",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Active project resources",
+ "type": "object",
+ "properties": {
+ "appDeployments": {
+ "description": "Active app deployment",
+ "type": "object",
+ "properties": {
+ "apps": {
+ "type": "array",
+ "items": {
+ "description": "Active app deployment",
+ "type": "object",
+ "properties": {
+ "appRef": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "count": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "clusters": {
+ "description": "Active clusters",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Active clusters",
+ "type": "object",
+ "properties": {
+ "clusterRef": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "count": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "virtualClusters": {
+ "description": "Active clusters",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "Active clusters",
+ "type": "object",
+ "properties": {
+ "clusterRef": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "count": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/registries/helm": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Retrieves a list of Helm registries",
+ "operationId": "v1RegistriesHelmList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of registry items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Helm registry information",
+ "type": "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Helm registry credentials spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "isPrivate": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Helm registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the helm registry",
+ "type": "object",
+ "properties": {
+ "helmSyncStatus": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Creates a helm registry",
+ "operationId": "v1RegistriesHelmCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Helm registry information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Helm registry credentials spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "createOption": {
+ "description": "Helm registry create options",
+ "type": "object",
+ "properties": {
+ "charts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "skipSync": {
+ "type": "boolean"
+ }
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "isPrivate": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "enum": [
+ "system",
+ "tenant",
+ "all"
+ ],
+ "type": "string",
+ "default": "all",
+ "name": "scope",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/registries/helm/summary": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Retrieves a list of helm registries as summary",
+ "operationId": "v1RegistriesHelmSummaryList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of registry items",
+ "schema": {
+ "description": "Helm Registries Summary",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Helm Registry summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Helm Registry spec summary",
+ "type": "object",
+ "properties": {
+ "endpoint": {
+ "type": "string"
+ },
+ "isPrivate": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Helm registry status summary",
+ "properties": {
+ "sync": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "enum": [
+ "system",
+ "tenant",
+ "all"
+ ],
+ "type": "string",
+ "default": "all",
+ "name": "scope",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/registries/helm/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns no contents if helm registry is valid else error.",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Check if helm registry is valid",
+ "operationId": "V1RegistriesHelmValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Helm registry credentials spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "isPrivate": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Helm registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/registries/helm/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Returns the specified Helm registry",
+ "operationId": "v1RegistriesHelmUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Helm registry information",
+ "type": "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Helm registry credentials spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "isPrivate": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Helm registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the helm registry",
+ "type": "object",
+ "properties": {
+ "helmSyncStatus": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Updates the specified helm registry",
+ "operationId": "v1RegistriesHelmUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Helm registry information",
+ "type": "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Helm registry credentials spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "isPrivate": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Helm registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the helm registry",
+ "type": "object",
+ "properties": {
+ "helmSyncStatus": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Deletes the specified helm registry",
+ "operationId": "v1RegistriesHelmUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/registries/helm/{uid}/sync": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Sync all the helm charts from the registry",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Sync Helm registry",
+ "operationId": "v1RegistriesHelmUidSync",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "boolean",
+ "default": false,
+ "name": "forceSync",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/registries/helm/{uid}/sync/status": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Get the sync status for the specified helm registry",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Get helm registry sync status",
+ "operationId": "v1RegistriesHelmUidSyncStatus",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Helm registry sync status",
+ "schema": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/registries/metadata": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Retrieves a list of registries metadata",
+ "operationId": "v1RegistriesMetadata",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of registry metadata items",
+ "schema": {
+ "description": "Pack Registries Metadata",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Registry meta",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "enum": [
+ "system",
+ "tenant",
+ "all"
+ ],
+ "type": "string",
+ "default": "all",
+ "name": "scope",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/registries/oci/basic": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Creates a basic oci registry",
+ "operationId": "v1BasicOciRegistriesCreate",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": false,
+ "name": "skipPackSync",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Basic oci registry information",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Basic oci registry spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "type": "string",
+ "default": "helm",
+ "enum": [
+ "helm",
+ "zarf",
+ "pack"
+ ]
+ },
+ "registryUid": {
+ "description": "Basic oci registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/registries/oci/basic/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns no contents if oci registry is valid else error.",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Check if oci registry is valid",
+ "operationId": "v1BasicOciRegistriesValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Basic oci registry spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "type": "string",
+ "default": "helm",
+ "enum": [
+ "helm",
+ "zarf",
+ "pack"
+ ]
+ },
+ "registryUid": {
+ "description": "Basic oci registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/registries/oci/ecr": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Creates a ecr registry",
+ "operationId": "v1EcrRegistriesCreate",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": false,
+ "name": "skipPackSync",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Ecr registry information",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Ecr registry spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "isPrivate"
+ ],
+ "properties": {
+ "baseContentPath": {
+ "description": "OCI ecr registry content base path",
+ "type": "string"
+ },
+ "credentials": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "defaultRegion": {
+ "type": "string"
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "isPrivate": {
+ "type": "boolean"
+ },
+ "providerType": {
+ "type": "string",
+ "default": "helm",
+ "enum": [
+ "helm",
+ "pack"
+ ]
+ },
+ "registryUid": {
+ "description": "Ecr registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/registries/oci/ecr/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns no contents if ecr registry is valid else error.",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Check if ecr registry is valid",
+ "operationId": "v1EcrRegistriesValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Ecr registry spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "isPrivate"
+ ],
+ "properties": {
+ "baseContentPath": {
+ "description": "OCI ecr registry content base path",
+ "type": "string"
+ },
+ "credentials": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "defaultRegion": {
+ "type": "string"
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "isPrivate": {
+ "type": "boolean"
+ },
+ "providerType": {
+ "type": "string",
+ "default": "helm",
+ "enum": [
+ "helm",
+ "pack"
+ ]
+ },
+ "registryUid": {
+ "description": "Ecr registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/registries/oci/image": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Creates a image registry",
+ "operationId": "v1OciImageRegistryGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Oci Image Registry",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/registries/oci/summary": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Retrieves a oci registries summary",
+ "operationId": "v1OciRegistriesSummary",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of oci registry items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Oci registry information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Image registry spec",
+ "type": "object",
+ "properties": {
+ "defaultRegion": {
+ "type": "string"
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "isPrivate": {
+ "type": "boolean"
+ },
+ "providerType": {
+ "type": "string"
+ },
+ "registryType": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "OCI registry status summary",
+ "properties": {
+ "sync": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/registries/oci/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Returns the information of specified oci registry",
+ "operationId": "v1OciRegistriesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Oci registry credentials",
+ "type": "object",
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "defaultRegion": {
+ "type": "string"
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "providerType": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "name": "clusterUid",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/registries/oci/{uid}/basic": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Returns the basic oci registry",
+ "operationId": "v1BasicOciRegistriesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Basic oci registry information",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Basic oci registry spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "type": "string",
+ "default": "helm",
+ "enum": [
+ "helm",
+ "zarf",
+ "pack"
+ ]
+ },
+ "registryUid": {
+ "description": "Basic oci registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Updates the specified basic oci registry",
+ "operationId": "v1BasicOciRegistriesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Basic oci registry information",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Basic oci registry spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "type": "string",
+ "default": "helm",
+ "enum": [
+ "helm",
+ "zarf",
+ "pack"
+ ]
+ },
+ "registryUid": {
+ "description": "Basic oci registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Deletes the specified basic oci registry",
+ "operationId": "v1BasicOciRegistriesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/registries/oci/{uid}/basic/sync": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Sync all the content from the oci registry",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Sync oci registry",
+ "operationId": "v1BasicOciRegistriesUidSync",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "boolean",
+ "default": false,
+ "name": "forceSync",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/registries/oci/{uid}/basic/sync/status": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Get sync status for the oci specified registry",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Get oci registry sync status",
+ "operationId": "v1BasicOciRegistriesUidSyncStatus",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Oci registry sync status",
+ "schema": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/registries/oci/{uid}/ecr": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Returns the specified ecr registry",
+ "operationId": "v1EcrRegistriesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Ecr registry information",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Ecr registry spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "isPrivate"
+ ],
+ "properties": {
+ "baseContentPath": {
+ "description": "OCI ecr registry content base path",
+ "type": "string"
+ },
+ "credentials": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "defaultRegion": {
+ "type": "string"
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "isPrivate": {
+ "type": "boolean"
+ },
+ "providerType": {
+ "type": "string",
+ "default": "helm",
+ "enum": [
+ "helm",
+ "pack"
+ ]
+ },
+ "registryUid": {
+ "description": "Ecr registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Updates the specified ecr registry",
+ "operationId": "v1EcrRegistriesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Ecr registry information",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Ecr registry spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "isPrivate"
+ ],
+ "properties": {
+ "baseContentPath": {
+ "description": "OCI ecr registry content base path",
+ "type": "string"
+ },
+ "credentials": {
+ "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",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "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.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "defaultRegion": {
+ "type": "string"
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "isPrivate": {
+ "type": "boolean"
+ },
+ "providerType": {
+ "type": "string",
+ "default": "helm",
+ "enum": [
+ "helm",
+ "pack"
+ ]
+ },
+ "registryUid": {
+ "description": "Ecr registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Deletes the specified ecr registry",
+ "operationId": "v1EcrRegistriesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/registries/oci/{uid}/ecr/sync": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Sync all the content from the ecr registry",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Sync ecr registry",
+ "operationId": "v1EcrRegistriesUidSync",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "boolean",
+ "default": false,
+ "name": "forceSync",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/registries/oci/{uid}/ecr/sync/status": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Get sync status for the ecr specified registry",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Get ecr registry sync status",
+ "operationId": "v1EcrRegistriesUidSyncStatus",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Ecr registry sync status",
+ "schema": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/registries/pack": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Retrieves a list of Pack registries",
+ "operationId": "v1RegistriesPackList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of registry items",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack registry information",
+ "type": "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack registry credentials spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the pack registry",
+ "type": "object",
+ "properties": {
+ "packSyncStatus": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Creates a pack registry",
+ "operationId": "v1RegistriesPackCreate",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": false,
+ "name": "skipPackSync",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Pack registry information",
+ "type": "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack registry credentials spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the pack registry",
+ "type": "object",
+ "properties": {
+ "packSyncStatus": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "enum": [
+ "system",
+ "tenant",
+ "all"
+ ],
+ "type": "string",
+ "default": "all",
+ "name": "scope",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/registries/pack/summary": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Retrieves a list of pack registries as summary",
+ "operationId": "v1RegistriesPackSummaryList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of registry items",
+ "schema": {
+ "description": "Pack Registries Summary",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack Registry summary",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack Registry spec summary",
+ "type": "object",
+ "properties": {
+ "endpoint": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Pack registry status summary",
+ "type": "object",
+ "properties": {
+ "sync": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "enum": [
+ "system",
+ "tenant",
+ "all"
+ ],
+ "type": "string",
+ "default": "all",
+ "name": "scope",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/registries/pack/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Returns no contents if pack registry is valid else error.",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Check if pack registry is valid",
+ "operationId": "V1RegistriesPackValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "description": "Pack registry credentials spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/registries/pack/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Returns the specified Pack registry",
+ "operationId": "v1RegistriesPackUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Pack registry information",
+ "type": "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack registry credentials spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the pack registry",
+ "type": "object",
+ "properties": {
+ "packSyncStatus": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Updates the specified pack registry",
+ "operationId": "v1RegistriesPackUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Pack registry information",
+ "type": "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack registry credentials spec",
+ "type": "object",
+ "required": [
+ "endpoint",
+ "auth"
+ ],
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Status of the pack registry",
+ "type": "object",
+ "properties": {
+ "packSyncStatus": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Deletes the specified pack registry",
+ "operationId": "v1RegistriesPackUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/registries/pack/{uid}/sync": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Sync all the packs from the registry",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Sync Pack registry",
+ "operationId": "v1RegistriesPackUidSync",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "boolean",
+ "default": false,
+ "name": "forceSync",
+ "in": "query"
+ }
+ ]
+ },
+ "/v1/registries/pack/{uid}/sync/status": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "Get sync status for the pack specified registry",
+ "tags": [
+ "registries"
+ ],
+ "summary": "Get pack registry sync status",
+ "operationId": "v1RegistriesPackUidSyncStatus",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Pack registry sync status",
+ "schema": {
+ "description": "Status of the registry sync",
+ "type": "object",
+ "properties": {
+ "lastRunTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastSyncedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/registries/{registryName}/config": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Returns the specified system scope registry configuration",
+ "operationId": "v1RegistriesNameConfigGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Registry configuration entity",
+ "type": "object",
+ "properties": {
+ "config": {
+ "description": "Registry configuration",
+ "type": "object",
+ "properties": {
+ "auth": {
+ "description": "Auth credentials of the registry",
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "format": "password"
+ },
+ "tls": {
+ "description": "TLS configuration",
+ "type": "object",
+ "properties": {
+ "ca": {
+ "type": "string"
+ },
+ "certificate": {
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "insecureSkipVerify": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "key": {
+ "type": "string"
+ }
+ }
+ },
+ "token": {
+ "type": "string",
+ "format": "password"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "noAuth",
+ "basic",
+ "token"
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "registryName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/registries/{uid}": {
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "registries"
+ ],
+ "summary": "Deletes the specified registry",
+ "operationId": "v1RegistriesUidDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/roles": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "roles"
+ ],
+ "summary": "Retrieves a list of roles",
+ "operationId": "v1RolesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "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.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Array of Roles",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Role",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Role specifications",
+ "properties": {
+ "permissions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "system",
+ "tenant",
+ "project",
+ "resource"
+ ]
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "system",
+ "user"
+ ]
+ }
+ }
+ },
+ "status": {
+ "description": "Role status",
+ "properties": {
+ "isEnabled": {
+ "description": "Specifies if role account is enabled/disabled",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "roles"
+ ],
+ "summary": "Creates a role with specified permissions",
+ "operationId": "v1RolesCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Role",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Role specifications",
+ "properties": {
+ "permissions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "system",
+ "tenant",
+ "project",
+ "resource"
+ ]
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "system",
+ "user"
+ ]
+ }
+ }
+ },
+ "status": {
+ "description": "Role status",
+ "properties": {
+ "isEnabled": {
+ "description": "Specifies if role account is enabled/disabled",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/roles/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "roles"
+ ],
+ "summary": "Returns the specified role",
+ "operationId": "v1RolesUidGet",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Role",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Role specifications",
+ "properties": {
+ "permissions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "system",
+ "tenant",
+ "project",
+ "resource"
+ ]
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "system",
+ "user"
+ ]
+ }
+ }
+ },
+ "status": {
+ "description": "Role status",
+ "properties": {
+ "isEnabled": {
+ "description": "Specifies if role account is enabled/disabled",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "roles"
+ ],
+ "summary": "Updates the specified role",
+ "operationId": "v1RolesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Role",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Role specifications",
+ "properties": {
+ "permissions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "system",
+ "tenant",
+ "project",
+ "resource"
+ ]
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "system",
+ "user"
+ ]
+ }
+ }
+ },
+ "status": {
+ "description": "Role status",
+ "properties": {
+ "isEnabled": {
+ "description": "Specifies if role account is enabled/disabled",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "roles"
+ ],
+ "summary": "Deletes the specified role",
+ "operationId": "v1RolesUidDelete",
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/roles/{uid}/clone": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "roles"
+ ],
+ "summary": "Clone the role",
+ "operationId": "v1RolesClone",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Role clone specifications",
+ "properties": {
+ "metadata": {
+ "description": "Role clone metadata",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/services/{serviceName}/version": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "services"
+ ],
+ "summary": "Returns a latest version for a given service name",
+ "operationId": "v1ServiceVersionGet",
+ "parameters": [
+ {
+ "enum": [
+ "ally",
+ "jet",
+ "palette",
+ "ambit",
+ "ally-lite",
+ "palette-lite",
+ "crony",
+ "tick",
+ "edge",
+ "lodge",
+ "level",
+ "edgeconfig",
+ "firth",
+ "stylus"
+ ],
+ "type": "string",
+ "description": "service name",
+ "name": "serviceName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "spectro cluster uid",
+ "name": "clusterUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "edge host uid",
+ "name": "edgeHostUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Service version information",
+ "type": "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "latestVersion": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "repoName": {
+ "type": "string"
+ },
+ "sha": {
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/services/{serviceName}/versions/{version}/manifest": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "services"
+ ],
+ "summary": "Returns a service manifest for a given service name and version",
+ "operationId": "v1ServiceManifestGet",
+ "parameters": [
+ {
+ "enum": [
+ "ally",
+ "jet",
+ "palette",
+ "ambit",
+ "ally-lite",
+ "palette-lite",
+ "crony",
+ "tick",
+ "edge",
+ "lodge",
+ "level",
+ "edgeconfig",
+ "firth",
+ "stylus"
+ ],
+ "type": "string",
+ "description": "service name",
+ "name": "serviceName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "service version",
+ "name": "version",
+ "in": "path",
+ "required": true
+ },
+ {
+ "enum": [
+ "apply",
+ "delete",
+ "resources"
+ ],
+ "type": "string",
+ "description": "action type",
+ "name": "action",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "resource file name",
+ "name": "resourceFilename",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "spectro cluster uid",
+ "name": "clusterUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "edge host uid",
+ "name": "edgeHostUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Service manifest information",
+ "type": "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "manifests": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "repoName": {
+ "type": "string"
+ },
+ "sha": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/agents/{messageKey}/notify": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "operationId": "V1SpectroClustersAgentsNotify",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "messageKey",
+ "in": "path",
+ "required": true
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "SpectroClusters for which agents has to be notified",
+ "properties": {
+ "clusterUids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "notifyAllClusters": {
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/aks": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates an AKS cluster",
+ "operationId": "v1SpectroClustersAksCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "subscriptionId",
+ "location",
+ "sshKey"
+ ],
+ "properties": {
+ "aadProfile": {
+ "description": "AADProfile - AAD integration is managed by AKS.",
+ "type": "object",
+ "required": [
+ "managed",
+ "adminGroupObjectIDs"
+ ],
+ "properties": {
+ "adminGroupObjectIDs": {
+ "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "managed": {
+ "description": "Managed - Whether to enable managed AAD.",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "apiServerAccessProfile": {
+ "description": "APIServerAccessProfile - access profile for AKS API server.",
+ "type": "object",
+ "properties": {
+ "authorizedIPRanges": {
+ "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "containerName": {
+ "type": "string"
+ },
+ "controlPlaneSubnet": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "enablePrivateCluster": {
+ "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster",
+ "type": "boolean"
+ },
+ "infraLBConfig": {
+ "type": "object",
+ "properties": {
+ "apiServerLB": {
+ "description": "LoadBalancerSpec defines an Azure load balancer.",
+ "type": "object",
+ "properties": {
+ "apiServerLBStaticIP": {
+ "type": "string"
+ },
+ "ipAllocationMethod": {
+ "type": "string",
+ "default": "Dynamic",
+ "enum": [
+ "Static",
+ "Dynamic"
+ ]
+ },
+ "privateDNSName": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Load Balancer type",
+ "type": "string",
+ "default": "Public",
+ "enum": [
+ "Internal",
+ "Public"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "Instance type stands for VMSize in Azure",
+ "type": "string"
+ },
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "managedPoolConfig": {
+ "type": "object",
+ "properties": {
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/aks/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get AKS cluster estimated rate information",
+ "operationId": "v1SpectroClustersAksRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro Azure cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "subscriptionId",
+ "location",
+ "sshKey"
+ ],
+ "properties": {
+ "aadProfile": {
+ "description": "AADProfile - AAD integration is managed by AKS.",
+ "type": "object",
+ "required": [
+ "managed",
+ "adminGroupObjectIDs"
+ ],
+ "properties": {
+ "adminGroupObjectIDs": {
+ "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "managed": {
+ "description": "Managed - Whether to enable managed AAD.",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "apiServerAccessProfile": {
+ "description": "APIServerAccessProfile - access profile for AKS API server.",
+ "type": "object",
+ "properties": {
+ "authorizedIPRanges": {
+ "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "containerName": {
+ "type": "string"
+ },
+ "controlPlaneSubnet": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "enablePrivateCluster": {
+ "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster",
+ "type": "boolean"
+ },
+ "infraLBConfig": {
+ "type": "object",
+ "properties": {
+ "apiServerLB": {
+ "description": "LoadBalancerSpec defines an Azure load balancer.",
+ "type": "object",
+ "properties": {
+ "apiServerLBStaticIP": {
+ "type": "string"
+ },
+ "ipAllocationMethod": {
+ "type": "string",
+ "default": "Dynamic",
+ "enum": [
+ "Static",
+ "Dynamic"
+ ]
+ },
+ "privateDNSName": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Load Balancer type",
+ "type": "string",
+ "default": "Public",
+ "enum": [
+ "Internal",
+ "Public"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "Instance type stands for VMSize in Azure",
+ "type": "string"
+ },
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "managedPoolConfig": {
+ "type": "object",
+ "properties": {
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Aks Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/aks/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates AKS cluster create operation",
+ "operationId": "v1SpectroClustersAksValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "subscriptionId",
+ "location",
+ "sshKey"
+ ],
+ "properties": {
+ "aadProfile": {
+ "description": "AADProfile - AAD integration is managed by AKS.",
+ "type": "object",
+ "required": [
+ "managed",
+ "adminGroupObjectIDs"
+ ],
+ "properties": {
+ "adminGroupObjectIDs": {
+ "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "managed": {
+ "description": "Managed - Whether to enable managed AAD.",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "apiServerAccessProfile": {
+ "description": "APIServerAccessProfile - access profile for AKS API server.",
+ "type": "object",
+ "properties": {
+ "authorizedIPRanges": {
+ "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "containerName": {
+ "type": "string"
+ },
+ "controlPlaneSubnet": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "enablePrivateCluster": {
+ "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster",
+ "type": "boolean"
+ },
+ "infraLBConfig": {
+ "type": "object",
+ "properties": {
+ "apiServerLB": {
+ "description": "LoadBalancerSpec defines an Azure load balancer.",
+ "type": "object",
+ "properties": {
+ "apiServerLBStaticIP": {
+ "type": "string"
+ },
+ "ipAllocationMethod": {
+ "type": "string",
+ "default": "Dynamic",
+ "enum": [
+ "Static",
+ "Dynamic"
+ ]
+ },
+ "privateDNSName": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Load Balancer type",
+ "type": "string",
+ "default": "Public",
+ "enum": [
+ "Internal",
+ "Public"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "Instance type stands for VMSize in Azure",
+ "type": "string"
+ },
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "managedPoolConfig": {
+ "type": "object",
+ "properties": {
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Aks Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/aws": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates an AWS cluster",
+ "operationId": "v1SpectroClustersAwsCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "AWS cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for aws cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/aws/import": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Imports an AWS cluster",
+ "operationId": "v1SpectroClustersAwsImport",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro AWS cluster import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "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.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/aws/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get AWS cluster estimated rate information",
+ "operationId": "v1SpectroClustersAwsRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro AWS cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "Cluster level configuration for aws cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "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"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Aws Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/aws/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates AWS cluster create operation",
+ "operationId": "v1SpectroClustersAwsValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "AWS cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for aws cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Aws Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/azure": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates an Azure cluster",
+ "operationId": "v1SpectroClustersAzureCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "subscriptionId",
+ "location",
+ "sshKey"
+ ],
+ "properties": {
+ "aadProfile": {
+ "description": "AADProfile - AAD integration is managed by AKS.",
+ "type": "object",
+ "required": [
+ "managed",
+ "adminGroupObjectIDs"
+ ],
+ "properties": {
+ "adminGroupObjectIDs": {
+ "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "managed": {
+ "description": "Managed - Whether to enable managed AAD.",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "apiServerAccessProfile": {
+ "description": "APIServerAccessProfile - access profile for AKS API server.",
+ "type": "object",
+ "properties": {
+ "authorizedIPRanges": {
+ "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "containerName": {
+ "type": "string"
+ },
+ "controlPlaneSubnet": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "enablePrivateCluster": {
+ "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster",
+ "type": "boolean"
+ },
+ "infraLBConfig": {
+ "type": "object",
+ "properties": {
+ "apiServerLB": {
+ "description": "LoadBalancerSpec defines an Azure load balancer.",
+ "type": "object",
+ "properties": {
+ "apiServerLBStaticIP": {
+ "type": "string"
+ },
+ "ipAllocationMethod": {
+ "type": "string",
+ "default": "Dynamic",
+ "enum": [
+ "Static",
+ "Dynamic"
+ ]
+ },
+ "privateDNSName": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Load Balancer type",
+ "type": "string",
+ "default": "Public",
+ "enum": [
+ "Internal",
+ "Public"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "Instance type stands for VMSize in Azure",
+ "type": "string"
+ },
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "managedPoolConfig": {
+ "type": "object",
+ "properties": {
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/azure/import": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Imports an Azure cluster",
+ "operationId": "v1SpectroClustersAzureImport",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro Azure cluster import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "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.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/azure/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get Azure cluster estimated rate information",
+ "operationId": "v1SpectroClustersAzureRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro Azure cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "subscriptionId",
+ "location",
+ "sshKey"
+ ],
+ "properties": {
+ "aadProfile": {
+ "description": "AADProfile - AAD integration is managed by AKS.",
+ "type": "object",
+ "required": [
+ "managed",
+ "adminGroupObjectIDs"
+ ],
+ "properties": {
+ "adminGroupObjectIDs": {
+ "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "managed": {
+ "description": "Managed - Whether to enable managed AAD.",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "apiServerAccessProfile": {
+ "description": "APIServerAccessProfile - access profile for AKS API server.",
+ "type": "object",
+ "properties": {
+ "authorizedIPRanges": {
+ "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "containerName": {
+ "type": "string"
+ },
+ "controlPlaneSubnet": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "enablePrivateCluster": {
+ "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster",
+ "type": "boolean"
+ },
+ "infraLBConfig": {
+ "type": "object",
+ "properties": {
+ "apiServerLB": {
+ "description": "LoadBalancerSpec defines an Azure load balancer.",
+ "type": "object",
+ "properties": {
+ "apiServerLBStaticIP": {
+ "type": "string"
+ },
+ "ipAllocationMethod": {
+ "type": "string",
+ "default": "Dynamic",
+ "enum": [
+ "Static",
+ "Dynamic"
+ ]
+ },
+ "privateDNSName": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Load Balancer type",
+ "type": "string",
+ "default": "Public",
+ "enum": [
+ "Internal",
+ "Public"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "Instance type stands for VMSize in Azure",
+ "type": "string"
+ },
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "managedPoolConfig": {
+ "type": "object",
+ "properties": {
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Azure Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/azure/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates Azure cluster create operation",
+ "operationId": "v1SpectroClustersAzureValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Azure cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "subscriptionId",
+ "location",
+ "sshKey"
+ ],
+ "properties": {
+ "aadProfile": {
+ "description": "AADProfile - AAD integration is managed by AKS.",
+ "type": "object",
+ "required": [
+ "managed",
+ "adminGroupObjectIDs"
+ ],
+ "properties": {
+ "adminGroupObjectIDs": {
+ "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "managed": {
+ "description": "Managed - Whether to enable managed AAD.",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "apiServerAccessProfile": {
+ "description": "APIServerAccessProfile - access profile for AKS API server.",
+ "type": "object",
+ "properties": {
+ "authorizedIPRanges": {
+ "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "containerName": {
+ "type": "string"
+ },
+ "controlPlaneSubnet": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "enablePrivateCluster": {
+ "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster",
+ "type": "boolean"
+ },
+ "infraLBConfig": {
+ "type": "object",
+ "properties": {
+ "apiServerLB": {
+ "description": "LoadBalancerSpec defines an Azure load balancer.",
+ "type": "object",
+ "properties": {
+ "apiServerLBStaticIP": {
+ "type": "string"
+ },
+ "ipAllocationMethod": {
+ "type": "string",
+ "default": "Dynamic",
+ "enum": [
+ "Static",
+ "Dynamic"
+ ]
+ },
+ "privateDNSName": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Load Balancer type",
+ "type": "string",
+ "default": "Public",
+ "enum": [
+ "Internal",
+ "Public"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "Instance type stands for VMSize in Azure",
+ "type": "string"
+ },
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean"
+ },
+ "osDisk": {
+ "type": "object",
+ "properties": {
+ "diskSizeGB": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "managedDisk": {
+ "type": "object",
+ "properties": {
+ "storageAccountType": {
+ "type": "string"
+ }
+ }
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "managedPoolConfig": {
+ "type": "object",
+ "properties": {
+ "isSystemNodePool": {
+ "description": "whether this pool is for system node Pool",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "osType": {
+ "type": "string",
+ "default": "Linux",
+ "enum": [
+ "Linux",
+ "Windows"
+ ]
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Azure Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/cloudTypes/{cloudType}": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates a Custom cluster",
+ "operationId": "v1SpectroClustersCustomCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Custom cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "values"
+ ],
+ "properties": {
+ "values": {
+ "description": "YAML string for Cluster and CloudCluster",
+ "type": "string"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "values": {
+ "description": "Machine pool configuration as yaml content",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the custom cluster",
+ "type": "object",
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "isControlPlane": {
+ "description": "Whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/spectroclusters/cloudTypes/{cloudType}/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates Custom cluster create operation",
+ "operationId": "v1SpectroClustersCustomValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Custom cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "values"
+ ],
+ "properties": {
+ "values": {
+ "description": "YAML string for Cluster and CloudCluster",
+ "type": "string"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "values": {
+ "description": "Machine pool configuration as yaml content",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the custom cluster",
+ "type": "object",
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "isControlPlane": {
+ "description": "Whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Custom Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud type",
+ "name": "cloudType",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/spectroclusters/config/edgeInstaller": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Cluster configuration for the edge installer",
+ "operationId": "v1SpectroClustersConfigEdgeInstaller",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "properties": {
+ "installerDownloadLinks": {
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/coxedge": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates a CoxEdge cluster",
+ "operationId": "v1SpectroClustersCoxEdgeCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "CoxEdge cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "sshAuthorizedKeys",
+ "coxEdgeLoadBalancerConfig"
+ ],
+ "properties": {
+ "coxEdgeLoadBalancerConfig": {
+ "description": "CoxEdge loadbalancer config",
+ "type": "object",
+ "properties": {
+ "pops": {
+ "description": "CoxEdge PoPs - geographical location for the loadbalancer",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "coxEdgeWorkerLoadBalancerConfig": {
+ "description": "CoxEdge loadbalancer config",
+ "type": "object",
+ "properties": {
+ "pops": {
+ "description": "CoxEdge PoPs - geographical location for the loadbalancer",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "environment": {
+ "type": "string"
+ },
+ "organizationId": {
+ "type": "string"
+ },
+ "sshAuthorizedKeys": {
+ "description": "CoxEdge ssh authorized keys",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "cloudType": {
+ "type": "string"
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "deployments": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cpuUtilization": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "enableAutoScaling": {
+ "type": "boolean"
+ },
+ "instancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "minInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "pops": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "persistentStorages": {
+ "description": "Array of coxedge load persistent storages",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "CoxEdge load persistent storage",
+ "type": "object",
+ "properties": {
+ "path": {
+ "description": "Coxedge load persistent storage path",
+ "type": "string"
+ },
+ "size": {
+ "description": "Coxedge load persistent storage size",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ }
+ },
+ "securityGroupRules": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "block",
+ "allow"
+ ]
+ },
+ "description": {
+ "type": "string"
+ },
+ "portRange": {
+ "type": "string"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "TCP",
+ "UDP",
+ "TCP_UDP",
+ "ESP",
+ "AH",
+ "ICMP",
+ "GRE"
+ ]
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "spec": {
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/coxedge/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get Cox Edge cluster estimated rate information",
+ "operationId": "v1SpectroClustersCoxEdgeRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cox Edge cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "sshAuthorizedKeys",
+ "coxEdgeLoadBalancerConfig"
+ ],
+ "properties": {
+ "coxEdgeLoadBalancerConfig": {
+ "description": "CoxEdge loadbalancer config",
+ "type": "object",
+ "properties": {
+ "pops": {
+ "description": "CoxEdge PoPs - geographical location for the loadbalancer",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "coxEdgeWorkerLoadBalancerConfig": {
+ "description": "CoxEdge loadbalancer config",
+ "type": "object",
+ "properties": {
+ "pops": {
+ "description": "CoxEdge PoPs - geographical location for the loadbalancer",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "environment": {
+ "type": "string"
+ },
+ "organizationId": {
+ "type": "string"
+ },
+ "sshAuthorizedKeys": {
+ "description": "CoxEdge ssh authorized keys",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "deployments": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cpuUtilization": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "enableAutoScaling": {
+ "type": "boolean"
+ },
+ "instancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "minInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "pops": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "persistentStorages": {
+ "description": "Array of coxedge load persistent storages",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "CoxEdge load persistent storage",
+ "type": "object",
+ "properties": {
+ "path": {
+ "description": "Coxedge load persistent storage path",
+ "type": "string"
+ },
+ "size": {
+ "description": "Coxedge load persistent storage size",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ }
+ },
+ "securityGroupRules": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "block",
+ "allow"
+ ]
+ },
+ "description": {
+ "type": "string"
+ },
+ "portRange": {
+ "type": "string"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "TCP",
+ "UDP",
+ "TCP_UDP",
+ "ESP",
+ "AH",
+ "ICMP",
+ "GRE"
+ ]
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "spec": {
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Azure Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/coxedge/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates Cox Edge cluster create operation",
+ "operationId": "v1SpectroClustersCoxEdgeValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "CoxEdge cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "sshAuthorizedKeys",
+ "coxEdgeLoadBalancerConfig"
+ ],
+ "properties": {
+ "coxEdgeLoadBalancerConfig": {
+ "description": "CoxEdge loadbalancer config",
+ "type": "object",
+ "properties": {
+ "pops": {
+ "description": "CoxEdge PoPs - geographical location for the loadbalancer",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "coxEdgeWorkerLoadBalancerConfig": {
+ "description": "CoxEdge loadbalancer config",
+ "type": "object",
+ "properties": {
+ "pops": {
+ "description": "CoxEdge PoPs - geographical location for the loadbalancer",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "environment": {
+ "type": "string"
+ },
+ "organizationId": {
+ "type": "string"
+ },
+ "sshAuthorizedKeys": {
+ "description": "CoxEdge ssh authorized keys",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "cloudType": {
+ "type": "string"
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "deployments": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cpuUtilization": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "enableAutoScaling": {
+ "type": "boolean"
+ },
+ "instancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "minInstancesPerPop": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "pops": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "persistentStorages": {
+ "description": "Array of coxedge load persistent storages",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "CoxEdge load persistent storage",
+ "type": "object",
+ "properties": {
+ "path": {
+ "description": "Coxedge load persistent storage path",
+ "type": "string"
+ },
+ "size": {
+ "description": "Coxedge load persistent storage size",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ }
+ },
+ "securityGroupRules": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "block",
+ "allow"
+ ]
+ },
+ "description": {
+ "type": "string"
+ },
+ "portRange": {
+ "type": "string"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "TCP",
+ "UDP",
+ "TCP_UDP",
+ "ESP",
+ "AH",
+ "ICMP",
+ "GRE"
+ ]
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "spec": {
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Azure Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/edge": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates a Edge cluster",
+ "operationId": "v1SpectroClustersEdgeCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "EdgeClusterConfig defines Edge Cluster specific Spec",
+ "type": "object",
+ "properties": {
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
+ "properties": {
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostUid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/edge-native": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates an EdgeNative cluster",
+ "operationId": "v1SpectroClustersEdgeNativeCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "EdgeNative cluster create or update request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "overlayNetworkConfiguration": {
+ "type": "object",
+ "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
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
+ "properties": {
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "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",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/edge-native/import": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Imports an EdgeNative cluster",
+ "operationId": "v1SpectroClustersEdgeNativeImport",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro EdgeNative cluster import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "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.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/edge-native/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get edge-native cluster estimated rate information",
+ "operationId": "v1SpectroClustersEdgeNativeRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge-native cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "overlayNetworkConfiguration": {
+ "type": "object",
+ "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
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
+ "properties": {
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "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",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "EdgeNative Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/edge-native/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates edge-native cluster create operation",
+ "operationId": "v1SpectroClustersEdgeNativeValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "EdgeNative cluster create or update request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "overlayNetworkConfiguration": {
+ "type": "object",
+ "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
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
+ "properties": {
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "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",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "EdgeNative Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/edge/import": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Imports an Edge cluster",
+ "operationId": "v1SpectroClustersEdgeImport",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro Edge cluster import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "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.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/edge/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get edge cluster estimated rate information",
+ "operationId": "v1SpectroClustersEdgeRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "EdgeClusterConfig defines Edge Cluster specific Spec",
+ "type": "object",
+ "properties": {
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
+ "properties": {
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostUid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Edge Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/edge/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates edge cluster create operation",
+ "operationId": "v1SpectroClustersEdgeValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Edge cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "EdgeClusterConfig defines Edge Cluster specific Spec",
+ "type": "object",
+ "properties": {
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
+ "properties": {
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostUid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "edge Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/eks": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates an EKS cluster",
+ "operationId": "v1SpectroClustersEksCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro EKS cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "EksClusterConfig defines EKS specific config",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "properties": {
+ "addons": {
+ "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters",
+ "type": "array",
+ "items": {
+ "description": "EksAddon represents a EKS addon",
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "endpointAccess": {
+ "description": "EndpointAccess specifies how control plane endpoints are accessible",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "public": {
+ "description": "Public controls whether control plane endpoints are publicly accessible",
+ "type": "boolean"
+ },
+ "publicCIDRs": {
+ "description": "PublicCIDRs specifies which blocks can access the public endpoint",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "fargateProfiles": {
+ "type": "array",
+ "items": {
+ "description": "FargateProfile defines the desired state of FargateProfile",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "name specifies the profile name.",
+ "type": "string"
+ },
+ "selectors": {
+ "description": "Selectors specify fargate pod selectors.",
+ "type": "array",
+ "items": {
+ "description": "FargateSelector specifies a selector for pods that should run on this fargate pool",
+ "type": "object",
+ "required": [
+ "namespace"
+ ],
+ "properties": {
+ "labels": {
+ "description": "Labels specifies which pod labels this selector should match.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "description": "Namespace specifies which namespace this selector should match.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "subnetIds": {
+ "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudConfig": {
+ "properties": {
+ "awsLaunchTemplate": {
+ "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group",
+ "type": "object",
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "description": "AMI is the reference to the AMI from which to create the machine instance",
+ "type": "object",
+ "properties": {
+ "eksOptimizedLookupType": {
+ "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store",
+ "type": "string",
+ "enum": [
+ "AmazonLinux",
+ "AmazonLinuxGPU"
+ ]
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "description": "Volume encapsulates the configuration options for the storage device.",
+ "type": "object",
+ "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",
+ "type": "integer",
+ "format": "int64"
+ },
+ "throughput": {
+ "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "type": {
+ "description": "Type is the type of the volume (e.g. gp2, io1, etc...)",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "enableAwsLaunchTemplate": {
+ "description": "flag to know if aws launch template is enabled",
+ "type": "boolean"
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/eks/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get EKS cluster estimated rate information",
+ "operationId": "v1SpectroClustersEksRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro EKS cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "EksClusterConfig defines EKS specific config",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "properties": {
+ "addons": {
+ "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters",
+ "type": "array",
+ "items": {
+ "description": "EksAddon represents a EKS addon",
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "endpointAccess": {
+ "description": "EndpointAccess specifies how control plane endpoints are accessible",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "public": {
+ "description": "Public controls whether control plane endpoints are publicly accessible",
+ "type": "boolean"
+ },
+ "publicCIDRs": {
+ "description": "PublicCIDRs specifies which blocks can access the public endpoint",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudConfig": {
+ "properties": {
+ "awsLaunchTemplate": {
+ "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group",
+ "type": "object",
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "description": "AMI is the reference to the AMI from which to create the machine instance",
+ "type": "object",
+ "properties": {
+ "eksOptimizedLookupType": {
+ "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store",
+ "type": "string",
+ "enum": [
+ "AmazonLinux",
+ "AmazonLinuxGPU"
+ ]
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "description": "Volume encapsulates the configuration options for the storage device.",
+ "type": "object",
+ "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",
+ "type": "integer",
+ "format": "int64"
+ },
+ "throughput": {
+ "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "type": {
+ "description": "Type is the type of the volume (e.g. gp2, io1, etc...)",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "enableAwsLaunchTemplate": {
+ "description": "flag to know if aws launch template is enabled",
+ "type": "boolean"
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Eks Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/eks/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates EKS cluster create operation",
+ "operationId": "v1SpectroClustersEksValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro EKS cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "EksClusterConfig defines EKS specific config",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "properties": {
+ "addons": {
+ "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters",
+ "type": "array",
+ "items": {
+ "description": "EksAddon represents a EKS addon",
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "endpointAccess": {
+ "description": "EndpointAccess specifies how control plane endpoints are accessible",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "public": {
+ "description": "Public controls whether control plane endpoints are publicly accessible",
+ "type": "boolean"
+ },
+ "publicCIDRs": {
+ "description": "PublicCIDRs specifies which blocks can access the public endpoint",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "fargateProfiles": {
+ "type": "array",
+ "items": {
+ "description": "FargateProfile defines the desired state of FargateProfile",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "name specifies the profile name.",
+ "type": "string"
+ },
+ "selectors": {
+ "description": "Selectors specify fargate pod selectors.",
+ "type": "array",
+ "items": {
+ "description": "FargateSelector specifies a selector for pods that should run on this fargate pool",
+ "type": "object",
+ "required": [
+ "namespace"
+ ],
+ "properties": {
+ "labels": {
+ "description": "Labels specifies which pod labels this selector should match.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "description": "Namespace specifies which namespace this selector should match.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "subnetIds": {
+ "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudConfig": {
+ "properties": {
+ "awsLaunchTemplate": {
+ "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group",
+ "type": "object",
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "description": "AMI is the reference to the AMI from which to create the machine instance",
+ "type": "object",
+ "properties": {
+ "eksOptimizedLookupType": {
+ "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store",
+ "type": "string",
+ "enum": [
+ "AmazonLinux",
+ "AmazonLinuxGPU"
+ ]
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "description": "Volume encapsulates the configuration options for the storage device.",
+ "type": "object",
+ "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",
+ "type": "integer",
+ "format": "int64"
+ },
+ "throughput": {
+ "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "type": {
+ "description": "Type is the type of the volume (e.g. gp2, io1, etc...)",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "enableAwsLaunchTemplate": {
+ "description": "flag to know if aws launch template is enabled",
+ "type": "boolean"
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Eks Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/features/backup/locations/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the cluster object references based on locationUid",
+ "operationId": "V1ClusterFeatureBackupLocationUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster Object References",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Change cluster backup location",
+ "operationId": "V1ClusterFeatureBackupLocationUidChange",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster backup location type",
+ "required": [
+ "locationType"
+ ],
+ "properties": {
+ "locationType": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/spectroclusters/features/logFetcher/{uid}/download": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Download log fetcher logs for cluster by log fetcher uid",
+ "operationId": "v1ClusterFeatureLogFetcherLogDownload",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "fileName",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "file"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ },
+ "Content-Type": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid for which log is requested",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/spectroclusters/features/logFetcher/{uid}/log": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "consumes": [
+ "multipart/form-data"
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Update log fetcher logs by log fetcher uid",
+ "operationId": "v1ClusterFeatureLogFetcherLogUpdate",
+ "parameters": [
+ {
+ "type": "file",
+ "description": "Log file by agent",
+ "name": "fileName",
+ "in": "formData"
+ },
+ {
+ "type": "string",
+ "description": "Unique request Id",
+ "name": "requestId",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid for which log is requested",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/spectroclusters/gcp": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates a GCP cluster",
+ "operationId": "v1SpectroClustersGcpCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "GCP cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
+ "properties": {
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
+ "type": "object",
+ "properties": {
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
+ "type": "boolean"
+ },
+ "location": {
+ "description": "Can be Region or Zone",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/gcp/import": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Imports a GCP cluster",
+ "operationId": "v1SpectroClustersGcpImport",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro GCP cluster import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "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.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/gcp/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get GCP cluster estimated rate information",
+ "operationId": "v1SpectroClustersGcpRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Gcp cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
+ "properties": {
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
+ "type": "object",
+ "properties": {
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
+ "type": "boolean"
+ },
+ "location": {
+ "description": "Can be Region or Zone",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Gcp Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/gcp/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates GCP cluster create operation",
+ "operationId": "v1SpectroClustersGcpValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "GCP cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
+ "properties": {
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
+ "type": "object",
+ "properties": {
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
+ "type": "boolean"
+ },
+ "location": {
+ "description": "Can be Region or Zone",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Gcp Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/generic/import": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "description": "The machines information will be captured, whereas the cloud specific configuration info will not be retrieved",
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Imports a cluster of any cloud type in generic way",
+ "operationId": "v1SpectroClustersGenericImport",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro generic cluster import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "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.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "edgeConfig": {
+ "type": "object",
+ "properties": {
+ "edgeHostUid": {
+ "description": "Deprecated. Use 'edgeHostUids' field",
+ "type": "string"
+ },
+ "edgeHostUids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/generic/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get generic cluster estimated rate information",
+ "operationId": "v1SpectroClustersGenericRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Generic cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "Generic cluster config",
+ "type": "object",
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "region": {
+ "description": "cluster region information",
+ "type": "string"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudConfig": {
+ "description": "Generic cluster config",
+ "type": "object",
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "region": {
+ "description": "cluster region information",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Genric Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/gke": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates an GKE cluster",
+ "operationId": "v1SpectroClustersGkeCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "GCP cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
+ "properties": {
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
+ "type": "object",
+ "properties": {
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
+ "type": "boolean"
+ },
+ "location": {
+ "description": "Can be Region or Zone",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/gke/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get GKE cluster estimated rate information",
+ "operationId": "v1SpectroClustersGkeRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Gcp cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
+ "properties": {
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
+ "type": "object",
+ "properties": {
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
+ "type": "boolean"
+ },
+ "location": {
+ "description": "Can be Region or Zone",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Gke Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/gke/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates GKE cluster create operation",
+ "operationId": "v1SpectroClustersGkeValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "GCP cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
+ "properties": {
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
+ "type": "object",
+ "properties": {
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
+ "type": "boolean"
+ },
+ "location": {
+ "description": "Can be Region or Zone",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Gke Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/libvirt": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates a Libvirt cluster",
+ "operationId": "v1SpectroClustersLibvirtCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Libvirt cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "instanceType",
+ "placements",
+ "rootDiskInGB"
+ ],
+ "properties": {
+ "instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nonRootDisksInGB": {
+ "description": "NonRootDisksInGB is the list of additional disks, if required, in GB",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Libvirt placement config",
+ "type": "object",
+ "required": [
+ "hostUid"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "hostUid": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the libvirt network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "sourceStoragePool": {
+ "type": "string"
+ },
+ "targetStoragePool": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "rootDiskInGB": {
+ "description": "RootDiskInGB is the size of a vm's root disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "xslTemplate": {
+ "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/libvirt/import": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Imports a libvirt cluster",
+ "operationId": "v1SpectroClustersLibvirtImport",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro Libvirt cluster import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "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.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/spectroclusters/libvirt/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get libvirt cluster estimated rate information",
+ "operationId": "v1SpectroClustersLibvirtRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "libvirt cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "instanceType",
+ "placements",
+ "rootDiskInGB"
+ ],
+ "properties": {
+ "instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nonRootDisksInGB": {
+ "description": "NonRootDisksInGB is the list of additional disks, if required, in GB",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Libvirt placement config",
+ "type": "object",
+ "required": [
+ "hostUid"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "hostUid": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the libvirt network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "sourceStoragePool": {
+ "type": "string"
+ },
+ "targetStoragePool": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "rootDiskInGB": {
+ "description": "RootDiskInGB is the size of a vm's root disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "xslTemplate": {
+ "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Libvirt Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadDaemonSets": {
- "description": "Cluster workload daemonset summary",
- "properties": {
- "daemonSets": {
- "items": {
- "$ref": "#/definitions/v1ClusterWorkloadDaemonSet"
+ "/v1/spectroclusters/libvirt/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates libvirt cluster create operation",
+ "operationId": "v1SpectroClustersLibvirtValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Libvirt cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "required": [
+ "instanceType",
+ "placements",
+ "rootDiskInGB"
+ ],
+ "properties": {
+ "instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
+ "properties": {
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "nonRootDisksInGB": {
+ "description": "NonRootDisksInGB is the list of additional disks, if required, in GB",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Libvirt placement config",
+ "type": "object",
+ "required": [
+ "hostUid"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "hostUid": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the libvirt network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "sourceStoragePool": {
+ "type": "string"
+ },
+ "targetStoragePool": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "rootDiskInGB": {
+ "description": "RootDiskInGB is the size of a vm's root disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "xslTemplate": {
+ "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1ClusterWorkloadJob": {
- "description": "Cluster workload job summary",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ClusterWorkloadMetadata"
- },
- "status": {
- "$ref": "#/definitions/v1ClusterWorkloadJobStatus"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Libvirt Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadJobStatus": {
- "description": "Cluster workload job status",
- "properties": {
- "completionTime": {
- "$ref": "#/definitions/v1Time"
- },
- "conditions": {
- "items": {
- "$ref": "#/definitions/v1ClusterWorkloadCondition"
+ "/v1/spectroclusters/maas": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates a MAAS cluster",
+ "operationId": "v1SpectroClustersMaasCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro Maas cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "domain"
+ ],
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType",
+ "resourcePool"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "resourcePool": {
+ "description": "the resource pool",
+ "type": "string"
+ },
+ "tags": {
+ "description": "Tags in maas environment",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadMetadata": {
- "description": "Cluster workload metadata",
- "properties": {
- "creationTimestamp": {
- "$ref": "#/definitions/v1Time"
- },
- "entity": {
- "$ref": "#/definitions/v1ClusterWorkloadRef"
- },
- "labels": {
- "additionalProperties": {
- "type": "string"
+ "/v1/spectroclusters/maas/import": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Imports a Maas cluster",
+ "operationId": "v1SpectroClustersMaasImport",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro maas cluster import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "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.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "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": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
}
},
- "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"
+ "/v1/spectroclusters/maas/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get maas cluster estimated rate information",
+ "operationId": "v1SpectroClustersMaasRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Maas cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "domain"
+ ],
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType",
+ "resourcePool"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "resourcePool": {
+ "description": "the resource pool",
+ "type": "string"
+ },
+ "tags": {
+ "description": "Tags in maas environment",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Maas Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "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"
+ "/v1/spectroclusters/maas/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates MAAS cluster create operation",
+ "operationId": "v1SpectroClustersMaasValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro Maas cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "domain"
+ ],
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType",
+ "resourcePool"
+ ],
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "resourcePool": {
+ "description": "the resource pool",
+ "type": "string"
+ },
+ "tags": {
+ "description": "Tags in maas environment",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Maas Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadPodContainerResources": {
- "description": "Cluster workload pod container resources",
- "properties": {
- "limits": {
- "$ref": "#/definitions/v1ClusterWorkloadPodContainerResource"
- },
- "requests": {
- "$ref": "#/definitions/v1ClusterWorkloadPodContainerResource"
+ "/v1/spectroclusters/openstack": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates a OpenStack cluster",
+ "operationId": "v1SpectroClustersOpenStackCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "OpenStack cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "domain": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "flavorConfig"
+ ],
+ "properties": {
+ "azs": {
+ "description": "for master pool, this will be the failure domains for kcp",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "diskGiB": {
+ "description": "Root disk size",
+ "type": "integer",
+ "format": "int32"
+ },
+ "flavorConfig": {
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "description": "Openstack flavor name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "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"
+ "/v1/spectroclusters/openstack/import": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Imports an OpenStack cluster",
+ "operationId": "v1SpectroClustersOpenStackImport",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro OpenStack cluster import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "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.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ }
},
- "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"
+ "/v1/spectroclusters/openstack/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get openstack cluster estimated rate information",
+ "operationId": "v1SpectroClustersOpenStackRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Openstack cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "domain": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "flavorConfig"
+ ],
+ "properties": {
+ "azs": {
+ "description": "for master pool, this will be the failure domains for kcp",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "diskGiB": {
+ "description": "Root disk size",
+ "type": "integer",
+ "format": "int32"
+ },
+ "flavorConfig": {
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "description": "Openstack flavor name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Openstack Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadPodMetadata": {
- "description": "Cluster workload pod metadata",
- "properties": {
- "associatedRefs": {
- "items": {
- "$ref": "#/definitions/v1ClusterWorkloadRef"
+ "/v1/spectroclusters/openstack/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "creationTimestamp": {
- "$ref": "#/definitions/v1Time"
- },
- "entity": {
- "$ref": "#/definitions/v1ClusterWorkloadRef"
- },
- "labels": {
- "additionalProperties": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates OpenStack cluster create operation",
+ "operationId": "v1SpectroClustersOpenStackValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "OpenStack cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "domain": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "flavorConfig"
+ ],
+ "properties": {
+ "azs": {
+ "description": "for master pool, this will be the failure domains for kcp",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "diskGiB": {
+ "description": "Root disk size",
+ "type": "integer",
+ "format": "int32"
+ },
+ "flavorConfig": {
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "description": "Openstack flavor name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "object"
- },
- "machineUid": {
- "type": "string"
- },
- "namespace": {
- "type": "string"
- },
- "nodename": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "vSphere Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadPodSpec": {
- "description": "Cluster workload pod spec",
- "properties": {
- "containers": {
- "items": {
- "$ref": "#/definitions/v1ClusterWorkloadPodContainer"
+ "/v1/spectroclusters/spc/download": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "volumes": {
- "items": {
- "$ref": "#/definitions/v1ClusterWorkloadPodVolume"
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Downloads the cluster definition archive file",
+ "operationId": "v1SpectroClustersSpcDownload",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster definition entity",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster definition spec entity",
+ "type": "object",
+ "required": [
+ "profiles",
+ "cloudType"
+ ],
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "profiles": {
+ "description": "Cluster definition profiles",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster definition profile entity",
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster definition archive file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadPodStatus": {
- "description": "Cluster workload pod status",
- "properties": {
- "containers": {
- "items": {
- "$ref": "#/definitions/v1ClusterWorkloadPodContainerStatus"
+ "/v1/spectroclusters/tke": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "phase": {
- "type": "string"
- },
- "podIp": {
- "type": "string"
- },
- "qosClass": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates a Tke cluster",
+ "operationId": "v1SpectroClustersTkeCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Tencent cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "properties": {
+ "endpointAccess": {
+ "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "securityGroup": {
+ "description": "Tencent security group",
+ "type": "string"
+ },
+ "subnetId": {
+ "description": "Tencent Subnet",
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyIDs": {
+ "type": "array",
+ "items": {
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "subnetIds": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadPodVolume": {
- "description": "Cluster workload pod volume",
- "properties": {
- "name": {
- "type": "string"
+ "/v1/spectroclusters/tke/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get TKE cluster estimated rate information",
+ "operationId": "v1SpectroClustersTkeRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro Tencent cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "properties": {
+ "endpointAccess": {
+ "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "securityGroup": {
+ "description": "Tencent security group",
+ "type": "string"
+ },
+ "subnetId": {
+ "description": "Tencent Subnet",
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyIDs": {
+ "type": "array",
+ "items": {
+ "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"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "subnetIds": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Tke Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadPods": {
- "description": "Cluster workload pods summary",
- "properties": {
- "pods": {
- "items": {
- "$ref": "#/definitions/v1ClusterWorkloadPod"
+ "/v1/spectroclusters/tke/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates TKE cluster create operation",
+ "operationId": "v1SpectroClustersTkeValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Tencent cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
+ "type": "object",
+ "required": [
+ "region"
+ ],
+ "properties": {
+ "endpointAccess": {
+ "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "securityGroup": {
+ "description": "Tencent security group",
+ "type": "string"
+ },
+ "subnetId": {
+ "description": "Tencent Subnet",
+ "type": "string"
+ }
+ }
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyIDs": {
+ "type": "array",
+ "items": {
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "subnetIds": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Tke Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
}
},
- "v1ClusterWorkloadRef": {
- "description": "Cluster workload ref",
- "properties": {
- "kind": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "uid": {
- "type": "string"
+ "/v1/spectroclusters/upgrade/settings": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get cluster settings by context",
+ "operationId": "v1SpectroClustersUpgradeSettingsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "properties": {
+ "spectroComponents": {
+ "type": "string",
+ "enum": [
+ "lock",
+ "unlock"
+ ]
+ }
+ }
+ }
+ }
}
- },
- "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
+ "/v1/spectroclusters/validate/name": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates the cluster name",
+ "operationId": "v1SpectroClustersValidateName",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster name",
+ "name": "name",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadRoleBinding": {
- "description": "Cluster workload rbac binding summary",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ClusterWorkloadMetadata"
- },
- "spec": {
- "$ref": "#/definitions/v1ClusterRbacBinding"
+ "/v1/spectroclusters/validate/packs": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates spectro cluster packs",
+ "operationId": "v1SpectroClustersValidatePacks",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster entity for pack refs validate",
+ "type": "object",
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster packs validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadRoleBindings": {
- "description": "Cluster workload rbac bindings summary",
- "properties": {
- "bindings": {
- "items": {
- "$ref": "#/definitions/v1ClusterWorkloadRoleBinding"
+ "/v1/spectroclusters/virtual": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates a virtual cluster",
+ "operationId": "v1SpectroClustersVirtualCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro virtual cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "clusterConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "description": "Cluster level configuration for virtual cluster",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "description": "APIEndpoint represents a reachable Kubernetes API endpoint.",
+ "type": "object",
+ "required": [
+ "host",
+ "port"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "helmRelease": {
+ "type": "object",
+ "properties": {
+ "chart": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "default": ""
+ },
+ "repo": {
+ "type": "string",
+ "default": ""
+ },
+ "version": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "values": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "kubernetesVersion": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "maxCPU": {
+ "description": "Maximum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxMemInMiB": {
+ "description": "Maximum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxStorageGiB": {
+ "description": "Maximum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMiB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minStorageGiB": {
+ "description": "Minimum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- },
- "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"
+ "/v1/spectroclusters/virtual/packs/values": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "statefulSets": {
- "items": {
- "$ref": "#/definitions/v1ClusterWorkloadStatefulSet"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get the cluster pack values yaml",
+ "operationId": "v1VirtualClustersPacksValues",
+ "parameters": [
+ {
+ "enum": [
+ "k3s",
+ "cncf_k8s"
+ ],
+ "type": "string",
+ "default": "k3s",
+ "description": "Kubernetes distribution type",
+ "name": "kubernetesDistroType",
+ "in": "query"
},
- "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "schema": {
+ "description": "Virtual cluster packs values",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "type": "array",
+ "items": {
+ "description": "Virtual cluster packs value",
+ "type": "object",
+ "properties": {
+ "distroType": {
+ "type": "string"
+ },
+ "layer": {
+ "type": "string"
+ },
+ "values": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClusterWorkloadStatefulSets": {
- "description": "Cluster workload statefulsets summary",
- "properties": {
- "statefulSets": {
- "items": {
- "$ref": "#/definitions/v1ClusterWorkloadStatefulSet"
+ "/v1/spectroclusters/virtual/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1ClusterWorkloadsFilter": {
- "description": "Cluster workloads filter",
- "properties": {
- "namespaces": {
- "items": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates virtual cluster create operation",
+ "operationId": "v1SpectroClustersVirtualValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro virtual cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudType",
+ "clusterConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "description": "Cluster level configuration for virtual cluster",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "description": "APIEndpoint represents a reachable Kubernetes API endpoint.",
+ "type": "object",
+ "required": [
+ "host",
+ "port"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "helmRelease": {
+ "type": "object",
+ "properties": {
+ "chart": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "default": ""
+ },
+ "repo": {
+ "type": "string",
+ "default": ""
+ },
+ "version": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "values": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "kubernetesVersion": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "maxCPU": {
+ "description": "Maximum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxMemInMiB": {
+ "description": "Maximum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "maxStorageGiB": {
+ "description": "Maximum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minCPU": {
+ "description": "Minimum CPU cores",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minMemInMiB": {
+ "description": "Minimum memory in MiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minStorageGiB": {
+ "description": "Minimum storage in GiB",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array",
- "uniqueItems": true
- }
- },
- "type": "object"
- },
- "v1ClusterWorkloadsSpec": {
- "description": "Cluster workloads spec",
- "properties": {
- "filter": {
- "$ref": "#/definitions/v1ClusterWorkloadsFilter"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Virtual Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1ClustersInfo": {
- "description": "Active clusters information",
- "properties": {
- "clustersMeta": {
- "items": {
- "$ref": "#/definitions/v1ClusterMeta"
+ "/v1/spectroclusters/vsphere": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Creates a vSphere cluster",
+ "operationId": "v1SpectroClustersVsphereCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "vSphere cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "placement"
+ ],
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "placement": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "edgeHostUid": {
+ "description": "Appliance (Edge Host) uid for Edge env",
+ "type": "string"
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryMiB",
+ "diskGiB"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
}
},
- "v1ComplianceScanDriverSpec": {
- "description": "Compliance Scan driver spec",
- "properties": {
- "config": {
- "$ref": "#/definitions/v1ComplianceScanConfig"
- },
- "isClusterConfig": {
- "type": "boolean"
+ "/v1/spectroclusters/vsphere/import": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Imports a vSphere cluster",
+ "operationId": "v1SpectroClustersVsphereImport",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Spectro Vsphere cluster import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "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.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
}
},
- "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"
+ "/v1/spectroclusters/vsphere/rate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get vSphere cluster estimated rate information",
+ "operationId": "v1SpectroClustersVsphereRate",
+ "parameters": [
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "name": "periodType",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Vsphere cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "placement"
+ ],
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "placement": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryMiB",
+ "diskGiB"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Vsphere Cluster estimated rate response",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage 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"
+ "/v1/spectroclusters/vsphere/validate": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates vSphere cluster create operation",
+ "operationId": "v1SpectroClustersVsphereValidate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "vSphere cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "placement"
+ ],
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "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",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "placement": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "updateWorkerPoolsInParallel": {
+ "type": "boolean"
+ }
+ }
+ },
+ "edgeHostUid": {
+ "description": "Appliance (Edge Host) uid for Edge env",
+ "type": "string"
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "required": [
+ "numCPUs",
+ "memoryMiB",
+ "diskGiB"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "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": {
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "Master or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "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",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ }
+ },
+ "policies": {
+ "description": "Cluster policies",
+ "type": "object",
+ "properties": {
+ "backupPolicy": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "scanPolicy": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "vSphere Cluster validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
}
},
- "v1ConstraintError": {
- "properties": {
- "code": {
- "type": "string"
- },
- "message": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "v1ConstraintValidatorResponse": {
- "description": "Constraint validator response",
- "properties": {
- "results": {
- "items": {
- "$ref": "#/definitions/v1ConstraintValidatorResult"
+ "/v1/spectroclusters/{uid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- }
- },
- "type": "object"
- },
- "v1ConstraintValidatorResult": {
- "description": "Constraint validator result",
- "properties": {
- "displayName": {
- "type": "string"
- },
- "errors": {
- "items": {
- "$ref": "#/definitions/v1ConstraintError"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the specified cluster",
+ "operationId": "v1SpectroClustersGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Comma separated tags like system,profile",
+ "name": "includeTags",
+ "in": "query"
},
- "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": {
- "kind": {
- "description": "Cloud account kind",
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1CoxEdgeCloudAccount"
- },
- "status": {
- "$ref": "#/definitions/v1CloudAccountStatus"
- }
- },
- "type": "object"
- },
- "v1CoxEdgeAccounts": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1CoxEdgeAccount"
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "Resolve pack values if set to true",
+ "name": "resolvePackValues",
+ "in": "query"
},
- "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": "string",
+ "description": "Includes pack meta such as schema, presets",
+ "name": "includePackMeta",
+ "in": "query"
},
- "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"
+ {
+ "type": "string",
+ "description": "Filter cluster profile templates by profileType",
+ "name": "profileType",
+ "in": "query"
+ },
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "Include non spectro labels in the cluster labels if set to true",
+ "name": "includeNonSpectroLabels",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "SpectroCluster is the Schema for the spectroclusters API",
+ "type": "object",
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "SpectroClusterSpec defines the desired state of SpectroCluster",
+ "type": "object",
+ "properties": {
+ "cloudConfigRef": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "cloudType": {
+ "type": "string"
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute contains additional cluster metadata information.",
+ "type": "string"
+ },
+ "clusterRbac": {
+ "description": "Deprecated. Use clusterResources",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterResources": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "description": "Cluster namespaces",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "rbacs": {
+ "description": "Cluster RBAC role bindings",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "machineHealthConfig": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "clusterType": {
+ "type": "string",
+ "enum": [
+ "PureManage",
+ "AlloyMonitor",
+ "AlloyAssist",
+ "AlloyExtend"
+ ]
+ }
+ }
+ },
+ "status": {
+ "description": "SpectroClusterStatus",
+ "type": "object",
+ "properties": {
+ "abortTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "addOnServices": {
+ "type": "array",
+ "items": {
+ "description": "Spectro cluster addon service",
+ "properties": {
+ "endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "apiEndpoints": {
+ "type": "array",
+ "items": {
+ "description": "APIEndpoint represents a reachable Kubernetes API endpoint.",
+ "type": "object",
+ "required": [
+ "host",
+ "port"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "clusterImport": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "fips": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "profileStatus": {
+ "type": "object",
+ "properties": {
+ "hasUserMacros": {
+ "description": "If it is true then profile pack values has a reference to user defined macros",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "repave": {
+ "description": "Cluster repave status",
+ "properties": {
+ "state": {
+ "type": "string",
+ "default": "Pending",
+ "enum": [
+ "Pending",
+ "Approved",
+ "Reverted"
+ ]
+ }
+ }
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "spcApply": {
+ "type": "object",
+ "properties": {
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "DownloadAndInstall",
+ "DownloadAndInstallLater"
+ ]
+ },
+ "canBeApplied": {
+ "description": "If it is true then Agent can apply the changes to the palette",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "crdDigest": {
+ "type": "string"
+ },
+ "lastModifiedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "patchAppliedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "spcHash": {
+ "type": "string"
+ },
+ "spcInfraHash": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "description": "current operational state",
+ "type": "string"
+ },
+ "upgrades": {
+ "type": "array",
+ "items": {
+ "description": "Upgrades represent the reason of the last upgrade that took place",
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "timestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "virtual": {
+ "properties": {
+ "appDeployments": {
+ "description": "list of apps deployed on the virtual cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "lifecycleStatus": {
+ "properties": {
+ "msg": {
+ "description": "error or success msg of lifecycle",
+ "type": "string"
+ },
+ "status": {
+ "description": "lifecycle status",
+ "type": "string",
+ "enum": [
+ "Pausing",
+ "Paused",
+ "Resuming",
+ "Running",
+ "Error"
+ ]
+ }
+ }
+ },
+ "state": {
+ "description": "cluster virtual host status",
+ "type": "string"
+ },
+ "virtualClusters": {
+ "description": "list of virtual clusters deployed on the cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "apiBaseUrl",
- "apiKey"
- ],
- "type": "object"
- },
- "v1CoxEdgeCloudClusterConfigEntity": {
- "description": "CoxEdge cloud cluster config entity",
- "properties": {
- "clusterConfig": {
- "$ref": "#/definitions/v1CoxEdgeClusterConfig"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Deletes the specified cluster",
+ "operationId": "v1SpectroClustersDelete",
+ "parameters": [
+ {
+ "type": "boolean",
+ "description": "If set to true the cluster will be force deleted and user has to manually clean up the provisioned cloud resources",
+ "name": "forceDelete",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object"
- },
- "v1CoxEdgeCloudConfig": {
- "description": "CoxEdgeCloudConfig is the Schema for the coxedgecloudconfigs API",
- "properties": {
- "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/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1CoxEdgeCloudConfigSpec"
- },
- "status": {
- "$ref": "#/definitions/v1CoxEdgeCloudConfigStatus"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/spectroclusters/{uid}/assets": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get the cluster asset doc",
+ "operationId": "v1SpectroClustersUidAssetsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster asset",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "type": "object",
+ "properties": {
+ "frpKubeconfig": {
+ "type": "string"
+ },
+ "kubeconfig": {
+ "type": "string"
+ },
+ "kubeconfigclient": {
+ "type": "string"
+ },
+ "manifest": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Associate the assets for the cluster",
+ "operationId": "v1SpectroClustersUidAssets",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster asset",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "type": "object",
+ "properties": {
+ "frpKubeconfig": {
+ "type": "string"
+ },
+ "kubeconfig": {
+ "type": "string"
+ },
+ "kubeconfigclient": {
+ "type": "string"
+ },
+ "manifest": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/spectroclusters/{uid}/assets/adminKubeconfig": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the specified cluster's kube config file",
+ "operationId": "v1SpectroClustersUidAdminKubeConfig",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "download file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1CoxEdgeEnvironments": {
- "description": "List of CoxEdge environments",
- "properties": {
- "environments": {
- "items": {
- "$ref": "#/definitions/v1CoxEdgeEnvironment"
- },
- "type": "array"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "required": [
- "environments"
- ],
- "type": "object"
+ ]
},
- "v1CoxEdgeEnvironmentsRequest": {
- "description": "Request payload to get CoxEdge environments",
- "properties": {
- "credentials": {
- "$ref": "#/definitions/v1CoxEdgeCredentials"
- },
- "organizationId": {
- "description": "CoxEdge organizationId",
- "type": "string"
+ "/v1/spectroclusters/{uid}/assets/frpKubeconfig": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the specified cluster's frp kube config file",
+ "operationId": "v1SpectroClustersUidFrpKubeConfigGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "download file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1CoxEdgeInstanceTypes": {
- "description": "List of CoxEdge instance types",
- "properties": {
- "instanceTypes": {
- "items": {
- "$ref": "#/definitions/v1InstanceType"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1CoxEdgeLoadBalancerConfig": {
- "description": "CoxEdge loadbalancer config",
- "properties": {
- "pops": {
- "description": "CoxEdge PoPs - geographical location for the loadbalancer",
- "items": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the cluster's frp kube config data",
+ "operationId": "v1SpectroClustersUidFrpKubeConfigUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster asset Frp Kube Config",
+ "type": "object",
+ "properties": {
+ "frpKubeconfig": {
+ "type": "string"
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Deletes the cluster's frp kube config client data",
+ "operationId": "v1SpectroClustersUidFrpKubeConfigDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object"
- },
- "v1CoxEdgeMachine": {
- "description": "CoxEdge cloud VM definition",
- "properties": {
- "kind": {
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1CoxEdgeMachineSpec"
- },
- "status": {
- "$ref": "#/definitions/v1CloudMachineStatus"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1CoxEdgeMachinePoolCloudConfigEntity": {
- "properties": {
- "deployments": {
- "items": {
- "$ref": "#/definitions/v1CoxEdgeDeployment"
- },
- "type": "array"
- },
- "persistentStorages": {
- "description": "Array of coxedge load persistent storages",
- "items": {
- "$ref": "#/definitions/v1CoxEdgeLoadPersistentStorage"
+ "/v1/spectroclusters/{uid}/assets/kubeconfig": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "securityGroupRules": {
- "items": {
- "$ref": "#/definitions/v1CoxEdgeSecurityGroupRule"
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the specified cluster's kube config file",
+ "operationId": "v1SpectroClustersUidKubeConfig",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": true,
+ "description": "FRP (reverse-proxy) based kube config will be returned if available",
+ "name": "frp",
+ "in": "query"
},
- "type": "array"
- },
- "spec": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "download file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the cluster's manifest data",
+ "operationId": "v1SpectroClustersUidKubeConfigUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster asset Kube Config",
+ "type": "object",
+ "properties": {
+ "kubeconfig": {
+ "type": "string"
+ }
+ }
+ }
},
- "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"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "isControlPlane"
- ],
- "type": "object"
- },
- "v1CoxEdgeMachinePoolConfigEntity": {
- "properties": {
- "cloudConfig": {
- "$ref": "#/definitions/v1CoxEdgeMachinePoolCloudConfigEntity"
- },
- "poolConfig": {
- "$ref": "#/definitions/v1MachinePoolConfigEntity"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "required": [
- "cloudConfig"
- ],
- "type": "object"
+ ]
},
- "v1CoxEdgeMachineSpec": {
- "description": "CoxEdge cloud VM definition spec",
- "properties": {
- "addAnycastIpAddress": {
- "type": "boolean"
- },
- "deployments": {
- "items": {
- "$ref": "#/definitions/v1CoxEdgeDeployment"
+ "/v1/spectroclusters/{uid}/assets/kubeconfigclient": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "image": {
- "type": "string"
- },
- "persistentStorages": {
- "items": {
- "$ref": "#/definitions/v1CoxEdgeLoadPersistentStorage"
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the specified cluster's kube config client file",
+ "operationId": "v1SpectroClustersUidKubeConfigClientGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "download file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "ports": {
- "items": {
- "$ref": "#/definitions/v1CoxEdgePort"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the cluster's kube config client data",
+ "operationId": "v1SpectroClustersUidKubeConfigClientUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster asset Kube Config Client",
+ "type": "object",
+ "properties": {
+ "kubeconfigclient": {
+ "type": "string"
+ }
+ }
+ }
},
- "type": "array"
- },
- "providerId": {
- "type": "string"
- },
- "specs": {
- "type": "string"
- },
- "sshAuthorizedKeys": {
- "items": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Deletes the cluster's kube config client data",
+ "operationId": "v1SpectroClustersUidKubeConfigClientDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1CoxEdgeMachines": {
- "description": "CoxEdge machine list",
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1CoxEdgeMachine"
+ "/v1/spectroclusters/{uid}/assets/manifest": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the specified cluster's manifest data",
+ "operationId": "v1SpectroClustersUidManifestGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "string"
+ }
+ }
}
},
- "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified cluster's manifest data",
+ "operationId": "v1SpectroClustersUidManifestUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster asset",
+ "type": "object",
+ "properties": {
+ "manifest": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1CoxEdgeOrganizations": {
- "description": "List of CoxEdge organizations",
- "properties": {
- "organizations": {
- "items": {
- "$ref": "#/definitions/v1CoxEdgeOrganization"
+ "/v1/spectroclusters/{uid}/clusterConfig/clusterMetaAttribute": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified cluster meta attribute",
+ "operationId": "v1SpectroClustersUidClusterMetaAttributeUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster additional metadata entity",
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "type": "string"
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "organizations"
- ],
- "type": "object"
- },
- "v1CoxEdgePort": {
- "description": "CoxEdge network port",
- "properties": {
- "protocol": {
- "type": "string"
- },
- "publicPort": {
- "type": "string"
- },
- "publicPortDesc": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/spectroclusters/{uid}/clusterConfig/controlPlaneHealthCheckTimeout": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified cluster controlPlane health check timeout",
+ "operationId": "V1ControlPlaneHealthCheckTimeoutUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "controlPlaneHealthCheckTimeout": {
+ "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes",
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1CoxEdgeRegions": {
- "description": "List of CoxEdge regions",
- "properties": {
- "regions": {
- "items": {
- "$ref": "#/definitions/v1CoxEdgeRegion"
+ "/v1/spectroclusters/{uid}/clusterConfig/hostCluster": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified cluster host config",
+ "operationId": "V1HostClusterConfigUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "hostClusterConfig": {
+ "properties": {
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
+ "/v1/spectroclusters/{uid}/clusterConfig/lifecycleConfig": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified cluster Life cycle configuration",
+ "operationId": "v1SpectroClustersUidLifecycleConfigUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1CoxEdgeServices": {
- "description": "List of CoxEdge services",
- "properties": {
- "services": {
- "items": {
- "$ref": "#/definitions/v1CoxEdgeService"
+ "/v1/spectroclusters/{uid}/clusterConfig/osPatch": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified cluster OS patch configuration",
+ "operationId": "v1SpectroClustersUidOsPatchUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "services"
- ],
- "type": "object"
- },
- "v1CustomAccount": {
- "description": "Custom account information",
- "properties": {
- "apiVersion": {
- "description": "Cloud account api version",
- "type": "string"
- },
- "kind": {
- "description": "Cloud account kind",
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1CustomCloudAccount"
- },
- "status": {
- "$ref": "#/definitions/v1CloudAccountStatus"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1CustomAccountEntity": {
- "description": "Custom account information",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMetaInputEntity"
- },
- "spec": {
- "$ref": "#/definitions/v1CustomCloudAccount"
+ "/v1/spectroclusters/{uid}/config/namespaces": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Retrieves namespaces for the specified cluster",
+ "operationId": "v1SpectroClustersUidConfigNamespacesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster namespace status",
+ "properties": {
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster resource error",
+ "properties": {
+ "msg": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "resourceType": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1CustomAccounts": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1CustomAccount"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates namespaces for the specified cluster",
+ "operationId": "v1SpectroClustersUidConfigNamespacesUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1CustomCloudAccount": {
- "properties": {
- "credentials": {
- "additionalProperties": {
- "type": "string"
+ "/v1/spectroclusters/{uid}/config/namespaces/{namespaceUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "description": "Cloud account credentials",
- "type": "object"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Retrieves the specified namespace of the cluster",
+ "operationId": "v1SpectroClustersUidConfigNamespacesUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster's namespace response",
+ "schema": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster namespace status",
+ "properties": {
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster resource error",
+ "properties": {
+ "msg": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "resourceType": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "credentials"
- ],
- "type": "object"
- },
- "v1CustomCloudClusterConfigEntity": {
- "description": "Custom cloud cluster config entity",
- "properties": {
- "clusterConfig": {
- "$ref": "#/definitions/v1CustomClusterConfig"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified namespace of the cluster",
+ "operationId": "v1SpectroClustersUidConfigNamespacesUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster Namespace resource defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster namespace spec",
+ "properties": {
+ "isRegex": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "resourceAllocation": {
+ "description": "Cluster namespace resource allocation",
+ "properties": {
+ "cpuCores": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "memoryMiB": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1CustomCloudConfig": {
- "description": "CustomCloudConfig is the Schema for the custom cloudconfigs API",
- "properties": {
- "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/v1ObjectMeta"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "spec": {
- "$ref": "#/definitions/v1CustomCloudConfigSpec"
+ {
+ "type": "string",
+ "description": "Cluster namespace uid",
+ "name": "namespaceUid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/spectroclusters/{uid}/config/rbacs": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Retrieves RBAC information for the specified cluster",
+ "operationId": "v1SpectroClustersUidConfigRbacsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster rbac status",
+ "properties": {
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster resource error",
+ "properties": {
+ "msg": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "resourceType": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1CustomCloudMetaEntity": {
- "description": "Custom cloud meta entity",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta",
- "description": "Custom cloud metadata"
- },
- "spec": {
- "$ref": "#/definitions/v1CustomCloudMetaSpecEntity"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates RBAC information for the specified cluster",
+ "operationId": "v1SpectroClustersUidConfigRbacsUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "rbacs": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1CustomCloudRequestEntity": {
- "description": "Custom cloud request entity",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMetaInputEntity",
- "description": "Custom cloud metadata"
- },
- "spec": {
- "$ref": "#/definitions/v1CustomCloudSpecEntity"
+ "/v1/spectroclusters/{uid}/config/rbacs/{rbacUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Retrieves the specified RBAC of the cluster",
+ "operationId": "v1SpectroClustersUidConfigRbacsUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster's RBAC response",
+ "schema": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster rbac status",
+ "properties": {
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster resource error",
+ "properties": {
+ "msg": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "resourceType": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified RBAC of the cluster",
+ "operationId": "v1SpectroClustersUidConfigRbacsUidUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster RBAC role binding defintion",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster RBAC spec",
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster RBAC binding",
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "role": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "Role",
+ "ClusterRole"
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "subjects": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster role ref",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "ServiceAccount"
+ ]
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "RoleBinding",
+ "ClusterRoleBinding"
+ ]
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "Object for which the resource is related",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "spectrocluster",
+ "machine",
+ "cloudconfig",
+ "clusterprofile",
+ "pack",
+ "appprofile",
+ "appdeployment",
+ "edgehost"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "name": {
- "description": "Custom cloudtype name",
- "type": "string"
+ {
+ "type": "string",
+ "description": "RBAC resource uid",
+ "name": "rbacUid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1CustomCloudTypeCloudAccountKeys": {
- "description": "Custom cloudType custom cloud account keys",
- "properties": {
- "keys": {
- "description": "Array of custom cloud type cloud account keys",
- "items": {
- "type": "string"
+ "/v1/spectroclusters/{uid}/download": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Download the specified cluster",
+ "operationId": "v1SpectroClustersUidDownload",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "download cluster archive file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1CustomCloudTypeContentResponse": {
- "description": "Custom cloudType content response",
- "properties": {
- "yaml": {
- "description": "custom cloud type content",
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1CustomCloudTypes": {
- "description": "Custom cloudType content response",
- "properties": {
- "cloudTypes": {
- "description": "Array of custom cloud types",
- "items": {
- "$ref": "#/definitions/v1CustomCloudType"
+ "/v1/spectroclusters/{uid}/edge-native/edgeHosts": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Retrieves a list of edge host of edge-native cluster",
+ "operationId": "v1EdgeNativeClustersHostsList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "List of edge host device",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "aclmeta": {
+ "description": "Resource access control information (Read-only response data)",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "cloudProperties": {
+ "description": "Additional cloud properties of the edge host (applicable based on the cloud type)",
+ "type": "object",
+ "properties": {
+ "vsphere": {
+ "description": "Vsphere cloud properties of edge host",
+ "properties": {
+ "datacenters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere datacenter",
+ "type": "object",
+ "properties": {
+ "computeClusters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere compute cluster",
+ "type": "object",
+ "properties": {
+ "datastores": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "resourcePools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "folders": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "device": {
+ "description": "DeviceSpec defines the desired state of Device",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the edge host",
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ },
+ "cpu": {
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "number of cpu cores",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "string"
+ },
+ "partitions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "fileSystemType": {
+ "type": "string"
+ },
+ "freeSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "mountPoint": {
+ "type": "string"
+ },
+ "totalSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "usedSpace": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "Size in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendor": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "gpus": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "memory": {
+ "type": "object",
+ "properties": {
+ "sizeInMB": {
+ "description": "memory size in bytes",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "os": {
+ "type": "object",
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "host": {
+ "description": "EdgeHost is the underlying appliance",
+ "type": "object",
+ "required": [
+ "hostUid",
+ "hostAddress"
+ ],
+ "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": {
+ "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": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "SSH secret name",
+ "type": "string"
+ },
+ "privateKey": {
+ "description": "Private Key to access the host",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "hostPairingKey": {
+ "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS",
+ "type": "string",
+ "format": "password",
+ "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": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "properties": {
+ "description": "Additional properties of edge host",
+ "properties": {
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "Network defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "storagePools": {
+ "type": "array",
+ "items": {
+ "description": "StoragePool is the storage pool for the vm image",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "service": {
+ "description": "ServiceSpec defines the specification of service registering edge",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "description": "Cloudtype of the provisioned edge host",
+ "type": "string",
+ "enum": [
+ "libvirt",
+ "vsphere",
+ "edge-native"
+ ]
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "healthy",
+ "unhealthy"
+ ]
+ }
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "profileStatus": {
+ "type": "object",
+ "properties": {
+ "hasUserMacros": {
+ "description": "If it is true then profile pack values has a reference to user defined macros",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "serviceAuthToken": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "required": [
- "values"
- ],
- "type": "object"
+ ]
},
- "v1CustomClusterConfigEntity": {
- "properties": {
- "location": {
- "$ref": "#/definitions/v1ClusterLocation"
- },
- "machineManagementConfig": {
- "$ref": "#/definitions/v1MachineManagementConfig"
- },
- "resources": {
- "$ref": "#/definitions/v1ClusterResourcesEntity"
+ "/v1/spectroclusters/{uid}/edge/edgeHosts": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Retrieves a list of edge host of libvirt cluster",
+ "operationId": "v1EdgeClustersHostsList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "List of edge host device",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "aclmeta": {
+ "description": "Resource access control information (Read-only response data)",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "cloudProperties": {
+ "description": "Additional cloud properties of the edge host (applicable based on the cloud type)",
+ "type": "object",
+ "properties": {
+ "vsphere": {
+ "description": "Vsphere cloud properties of edge host",
+ "properties": {
+ "datacenters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere datacenter",
+ "type": "object",
+ "properties": {
+ "computeClusters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere compute cluster",
+ "type": "object",
+ "properties": {
+ "datastores": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "resourcePools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "folders": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "device": {
+ "description": "DeviceSpec defines the desired state of Device",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the edge host",
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ },
+ "cpu": {
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "number of cpu cores",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "string"
+ },
+ "partitions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "fileSystemType": {
+ "type": "string"
+ },
+ "freeSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "mountPoint": {
+ "type": "string"
+ },
+ "totalSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "usedSpace": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "Size in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendor": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "gpus": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "memory": {
+ "type": "object",
+ "properties": {
+ "sizeInMB": {
+ "description": "memory size in bytes",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "os": {
+ "type": "object",
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "host": {
+ "description": "EdgeHost is the underlying appliance",
+ "type": "object",
+ "required": [
+ "hostUid",
+ "hostAddress"
+ ],
+ "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": {
+ "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": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "SSH secret name",
+ "type": "string"
+ },
+ "privateKey": {
+ "description": "Private Key to access the host",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "hostPairingKey": {
+ "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS",
+ "type": "string",
+ "format": "password",
+ "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": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "properties": {
+ "description": "Additional properties of edge host",
+ "properties": {
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "Network defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "storagePools": {
+ "type": "array",
+ "items": {
+ "description": "StoragePool is the storage pool for the vm image",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "service": {
+ "description": "ServiceSpec defines the specification of service registering edge",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "description": "Cloudtype of the provisioned edge host",
+ "type": "string",
+ "enum": [
+ "libvirt",
+ "vsphere",
+ "edge-native"
+ ]
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "healthy",
+ "unhealthy"
+ ]
+ }
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "profileStatus": {
+ "type": "object",
+ "properties": {
+ "hasUserMacros": {
+ "description": "If it is true then profile pack values has a reference to user defined macros",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "serviceAuthToken": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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"
- },
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1CustomMachine": {
- "description": "Custom cloud VM definition",
- "properties": {
- "kind": {
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1CustomMachineSpec"
- },
- "status": {
- "$ref": "#/definitions/v1CloudMachineStatus"
+ "/v1/spectroclusters/{uid}/features/backup": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the cluster backup result",
+ "operationId": "v1ClusterFeatureBackupGet",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "backupRequestUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster Backup",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster Backup Spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "config": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster Backup Status",
+ "properties": {
+ "clusterBackupStatuses": {
+ "type": "array",
+ "items": {
+ "description": "Cluster Backup Status Meta",
+ "properties": {
+ "actor": {
+ "description": "Compliance Scan actor",
+ "properties": {
+ "actorType": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "backupConfig": {
+ "description": "Backup config",
+ "properties": {
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "backupLocationConfig": {
+ "description": "Backup location configuration",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "backupRequestUid": {
+ "type": "string"
+ },
+ "backupStatusMeta": {
+ "type": "array",
+ "items": {
+ "description": "Backup status meta",
+ "properties": {
+ "backupName": {
+ "type": "string"
+ },
+ "backupState": {
+ "description": "Backup state",
+ "properties": {
+ "backupTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deleteState": {
+ "type": "string"
+ },
+ "msg": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "backupedNamespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "expiryDate": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "restoreStatusMeta": {
+ "type": "array",
+ "items": {
+ "description": "Backup restored status",
+ "properties": {
+ "backupName": {
+ "type": "string"
+ },
+ "destinationClusterRef": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "restoreState": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1CustomMachinePoolBaseConfigEntity": {
- "description": "Machine pool configuration for the custom cluster",
- "properties": {
- "additionalLabels": {
- "additionalProperties": {
- "type": "string"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Update cluster backup settings",
+ "operationId": "v1ClusterFeatureBackupUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
},
- "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1CustomMachinePoolConfig": {
- "properties": {
- "additionalLabels": {
- "additionalProperties": {
- "type": "string"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Create cluster backup settings",
+ "operationId": "v1ClusterFeatureBackupCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
},
- "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"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "required": [
- "isControlPlane"
- ],
- "type": "object"
- },
- "v1CustomMachinePoolConfigEntity": {
- "properties": {
- "cloudConfig": {
- "$ref": "#/definitions/v1CustomMachinePoolCloudConfigEntity"
- },
- "poolConfig": {
- "$ref": "#/definitions/v1CustomMachinePoolBaseConfigEntity"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Reset cluster backup schedule settings",
+ "operationId": "v1ClusterFeatureBackupScheduleReset",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1CustomMachines": {
- "description": "List of Custom machines",
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1CustomMachine"
+ "/v1/spectroclusters/{uid}/features/backup/onDemand": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Create on demand cluster backup",
+ "operationId": "v1ClusterFeatureBackupOnDemandCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster backup config",
+ "properties": {
+ "backupLocationName": {
+ "type": "string"
+ },
+ "backupLocationUid": {
+ "type": "string"
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupPrefix": {
+ "type": "string"
+ },
+ "durationInHours": {
+ "type": "number",
+ "format": "int64"
+ },
+ "includeAllDisks": {
+ "type": "boolean"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "locationType": {
+ "type": "string"
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1CustomNic": {
- "description": "Custom network interface",
- "properties": {
- "index": {
- "format": "int8",
- "type": "integer"
- },
- "networkName": {
- "type": "string"
- },
- "privateIPs": {
- "items": {
- "type": "string"
+ "/v1/spectroclusters/{uid}/features/backup/{backupName}/request/{requestUid}": {
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "publicIp": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Delete cluster backup",
+ "operationId": "v1ClusterFeatureBackupDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
},
- "type": "object"
- },
- "v1DashboardWorkspace": {
- "description": "Workspace information",
- "properties": {
- "meta": {
- "$ref": "#/definitions/v1DashboardWorkspaceMeta"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1DashboardWorkspaceSpec"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "status": {
- "$ref": "#/definitions/v1DashboardWorkspaceStatus"
- }
- }
- },
- "v1DashboardWorkspaceAllocation": {
- "description": "Workspace allocation",
- "properties": {
- "cpu": {
- "$ref": "#/definitions/v1DashboardWorkspaceResourceAllocation"
+ {
+ "type": "string",
+ "name": "backupName",
+ "in": "path",
+ "required": true
},
- "memory": {
- "$ref": "#/definitions/v1DashboardWorkspaceResourceAllocation"
+ {
+ "type": "string",
+ "name": "requestUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1DashboardWorkspaceClusterRef": {
- "description": "Workspace cluster reference",
- "properties": {
- "name": {
- "type": "string"
- },
- "uid": {
- "type": "string"
+ "/v1/spectroclusters/{uid}/features/complianceScan": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the compliance scan of cluster, if driverType is provided then specific status of driverType will be returned",
+ "operationId": "v1ClusterFeatureComplianceScanGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster Compliance Scan",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster compliance scan Spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "driverSpec": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Compliance Scan driver spec",
+ "properties": {
+ "config": {
+ "description": "Compliance Scan config",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "isClusterConfig": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- }
- },
- "v1DashboardWorkspaceMeta": {
- "description": "Deprecated. Workspace meta data",
- "properties": {
- "clusterNames": {
- "description": "Deprecated. Use clusterRefs",
- "items": {
- "type": "string"
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "clusterRefs": {
- "items": {
- "$ref": "#/definitions/v1DashboardWorkspaceClusterRef"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Update cluster compliance scan settings",
+ "operationId": "v1ClusterFeatureComplianceScanUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array",
- "uniqueItems": true
- },
- "creationTime": {
- "$ref": "#/definitions/v1Time"
- },
- "name": {
- "type": "string"
- },
- "namespaces": {
- "items": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Create cluster compliance scan",
+ "operationId": "v1ClusterFeatureComplianceScanCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster compliance scan schedule configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan schedule config for kube bench driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan schedule config for kube hunter driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan schedule config for sonobuoy driver",
+ "properties": {
+ "schedule": {
+ "description": "Cluster feature schedule",
+ "properties": {
+ "scheduledRunTime": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array",
- "uniqueItems": true
- },
- "uid": {
- "type": "string"
- }
- }
- },
- "v1DashboardWorkspaceNamespaceAllocation": {
- "description": "Workspace namespace allocation",
- "properties": {
- "name": {
- "type": "string"
- },
- "total": {
- "$ref": "#/definitions/v1DashboardWorkspaceAllocation"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
- }
- },
- "v1DashboardWorkspaceQuota": {
- "description": "Workspace resource quota",
- "properties": {
- "resourceAllocation": {
- "$ref": "#/definitions/v1DashboardWorkspaceQuotaResourceAllocation"
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1DashboardWorkspaceQuotaResourceAllocation": {
- "description": "Workspace quota resource allocation",
- "properties": {
- "cpu": {
- "exclusiveMinimum": true,
- "minimum": 0,
- "type": "number"
- },
- "memory": {
- "exclusiveMinimum": true,
- "minimum": 0,
- "type": "number"
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the compliance scan log by cluster uid and driver type",
+ "operationId": "v1ClusterFeatureComplianceScanLogsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster compliance scan Logs",
+ "properties": {
+ "kubeBenchLogs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster compliance scan KubeBench Log",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster compliance scan logs spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "driverType": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster compliance scan KubeBench Log Status",
+ "properties": {
+ "actor": {
+ "description": "Compliance Scan actor",
+ "properties": {
+ "actorType": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "message": {
+ "type": "string"
+ },
+ "reports": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Compliance Scan KubeBench Report",
+ "properties": {
+ "fail": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "info": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "logs": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan KubeBench Log",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "expected": {
+ "type": "string"
+ },
+ "remediation": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "testId": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "pass": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "warn": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "scanTime": {
+ "description": "Cluster compliance scan Time",
+ "properties": {
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kubeHunterLogs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster compliance scan KubeHunter Log",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster compliance scan logs spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "driverType": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster compliance scan KubeHunter Log Status",
+ "properties": {
+ "actor": {
+ "description": "Compliance Scan actor",
+ "properties": {
+ "actorType": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "message": {
+ "type": "string"
+ },
+ "reports": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Compliance Scan KubeHunter Report",
+ "properties": {
+ "logs": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan KubeHunter Log",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "evidence": {
+ "type": "string"
+ },
+ "reference": {
+ "type": "string"
+ },
+ "severity": {
+ "type": "string"
+ },
+ "testId": {
+ "type": "string"
+ },
+ "vulnerability": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "vulnerabilites": {
+ "description": "Compliance Scan KubeHunter Vulnerabilities",
+ "properties": {
+ "high": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "low": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "medium": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "scanTime": {
+ "description": "Cluster compliance scan Time",
+ "properties": {
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "sonobuoyLogs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster compliance scan Sonobuoy Log",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster compliance scan logs spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "driverType": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster compliance scan Sonobuoy Log Status",
+ "properties": {
+ "actor": {
+ "description": "Compliance Scan actor",
+ "properties": {
+ "actorType": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "message": {
+ "type": "string"
+ },
+ "reports": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Compliance Scan Sonobuoy Report",
+ "properties": {
+ "fail": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "logs": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan Sonobuoy Log",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "msg": {
+ "type": "string"
+ },
+ "output": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "node": {
+ "type": "string"
+ },
+ "pass": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "plugin": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "total": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "scanTime": {
+ "description": "Cluster compliance scan Time",
+ "properties": {
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "syftLogs": {
+ "type": "array",
+ "items": {
+ "description": "Cluster Compliance Scan Syft Log",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster compliance scan logs spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "driverType": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster compliance scan Syft Log Status",
+ "properties": {
+ "actor": {
+ "description": "Compliance Scan actor",
+ "properties": {
+ "actorType": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "location": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "message": {
+ "type": "string"
+ },
+ "reports": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan Syft Report",
+ "properties": {
+ "dependencies": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan Syft Dependency",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "image": {
+ "type": "string"
+ },
+ "imageContexts": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan Syft Image Context",
+ "properties": {
+ "containerName": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "podName": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "isSBOMExist": {
+ "type": "boolean"
+ },
+ "state": {
+ "type": "string"
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "vulnerabilities": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan Syft Vulnerability",
+ "properties": {
+ "fixedIn": {
+ "type": "string"
+ },
+ "installed": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "severity": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vulnerability": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "vulnerabilitySummary": {
+ "description": "Compliance Scan Syft Vulnerability Summary",
+ "properties": {
+ "critical": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "high": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "low": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "medium": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "negligible": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "unknown": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "scanContext": {
+ "description": "Compliance Scan Syft Context",
+ "properties": {
+ "format": {
+ "type": "string"
+ },
+ "labelSelector": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "podName": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "scanTime": {
+ "description": "Cluster compliance scan Time",
+ "properties": {
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- }
- },
- "v1DashboardWorkspaceResourceAllocation": {
- "description": "Workspace resource allocation",
- "properties": {
- "allocated": {
- "format": "float64",
- "type": "number",
- "x-omitempty": false
- },
- "usage": {
- "format": "float64",
- "type": "number",
- "x-omitempty": false
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1DashboardWorkspaceSpec": {
- "description": "Workspace spec summary",
- "properties": {
- "clusterRefs": {
- "items": {
- "$ref": "#/definitions/v1DashboardWorkspaceClusterRef"
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/kubeBench": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "namespaces": {
- "items": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Update the KubeBench compliance scan log by uid",
+ "operationId": "v1ClusterFeatureScanKubeBenchLogUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "KubeBench response",
+ "required": [
+ "requestUid",
+ "status",
+ "reports"
+ ],
+ "properties": {
+ "reports": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "KubeBench report",
+ "properties": {
+ "fail": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "info": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "logs": {
+ "type": "array",
+ "items": {
+ "description": "KubeBench log",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "expected": {
+ "type": "string"
+ },
+ "remediation": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "testId": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "pass": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "warn": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "Completed",
+ "InProgress",
+ "Failed",
+ "Initiated"
+ ]
+ }
+ }
+ }
},
- "type": "array",
- "uniqueItems": true
- },
- "quota": {
- "$ref": "#/definitions/v1DashboardWorkspaceQuota"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
- }
- },
- "v1DashboardWorkspaceStatus": {
- "description": "Workspace status",
- "properties": {
- "namespaces": {
- "items": {
- "$ref": "#/definitions/v1DashboardWorkspaceNamespaceAllocation"
- },
- "type": "array",
- "uniqueItems": true
- },
- "total": {
- "$ref": "#/definitions/v1DashboardWorkspaceAllocation"
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1DashboardWorkspaces": {
- "properties": {
- "cpuUnit": {
- "type": "string"
- },
- "items": {
- "items": {
- "$ref": "#/definitions/v1DashboardWorkspace"
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/kubeHunter": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "memoryUnit": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Update the KubeHunter compliance scan log by uid",
+ "operationId": "v1ClusterFeatureScanKubeHunterLogUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "KubeHunter response",
+ "required": [
+ "requestUid",
+ "status",
+ "reports"
+ ],
+ "properties": {
+ "reports": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "KubeHunter report",
+ "properties": {
+ "logs": {
+ "type": "array",
+ "items": {
+ "description": "KubeHunter log",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "evidence": {
+ "type": "string"
+ },
+ "reference": {
+ "type": "string"
+ },
+ "severity": {
+ "type": "string"
+ },
+ "testId": {
+ "type": "string"
+ },
+ "vulnerability": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "vulnerabilities": {
+ "description": "KubeHunter vulnerability data",
+ "properties": {
+ "high": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "low": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "medium": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "Completed",
+ "InProgress",
+ "Failed",
+ "Initiated"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1DataSinkConfig": {
- "description": "Data sink",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1DataSinkSpec"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1DataSinkSpec": {
- "properties": {
- "auditDataSinks": {
- "items": {
- "$ref": "#/definitions/v1DataSinkableSpec"
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/sonobuoy": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- }
- },
- "type": "object"
- },
- "v1DataSinkableSpec": {
- "properties": {
- "cloudWatch": {
- "$ref": "#/definitions/v1CloudWatch"
- },
- "type": {
- "enum": [
- "cloudwatch"
- ],
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Update the Sonobuoy compliance scan log by uid",
+ "operationId": "v1ClusterFeatureScanSonobuoyLogUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Sonobuoy response",
+ "required": [
+ "requestUid",
+ "status",
+ "reports"
+ ],
+ "properties": {
+ "reports": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Sonobuoy report",
+ "properties": {
+ "fail": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "logs": {
+ "type": "array",
+ "items": {
+ "description": "Sonobuoy log",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "msg": {
+ "type": "string"
+ },
+ "output": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "node": {
+ "type": "string"
+ },
+ "pass": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "plugin": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "total": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "Completed",
+ "InProgress",
+ "Failed",
+ "Initiated"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1DatabaseTransferJob": {
- "description": "database transfer job details",
- "properties": {
- "backupStatus": {
- "$ref": "#/definitions/v1TransferJob"
- },
- "backupUid": {
- "type": "string"
- },
- "mode": {
- "enum": [
- "FileSystem",
- "Ftp"
- ],
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1DatabaseTransferStatus": {
- "description": "database transfer status",
- "properties": {
- "backups": {
- "items": {
- "$ref": "#/definitions/v1DatabaseTransferJob"
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/syft": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "isActive": {
- "type": "boolean"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Update the Syft compliance scan log by uid",
+ "operationId": "v1ClusterFeatureScanSyftLogUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Syft response",
+ "required": [
+ "requestUid",
+ "status",
+ "report"
+ ],
+ "properties": {
+ "report": {
+ "description": "Syft report",
+ "properties": {
+ "batchNo": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "batchSize": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "dependencies": {
+ "type": "array",
+ "items": {
+ "description": "Syft dependency",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "image": {
+ "type": "string"
+ },
+ "imageContexts": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan Syft Image Context",
+ "properties": {
+ "containerName": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "podName": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "sbom": {
+ "type": "string"
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "vulnerabilities": {
+ "type": "array",
+ "items": {
+ "description": "Syft vulnerability",
+ "properties": {
+ "fixedIn": {
+ "type": "string"
+ },
+ "installed": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "severity": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vulnerability": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "vulnerabilitySummary": {
+ "description": "Syft vulnerability summary",
+ "properties": {
+ "critical": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "high": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "low": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "medium": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "negligible": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "unknown": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "Completed",
+ "InProgress",
+ "Failed",
+ "Initiated"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1DeleteMeta": {
- "description": "Properties to send back after deletion operation",
- "properties": {
- "count": {
- "format": "int64",
- "type": "integer"
- },
- "items": {
- "additionalProperties": {
- "type": "string"
- },
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1DeletedMsg": {
- "description": "Deleted response with message",
- "properties": {
- "msg": {
- "type": "string"
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}": {
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Delete the compliance scan log by uid",
+ "operationId": "v1ClusterFeatureComplianceScanLogDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
}
- }
- },
- "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
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "virtualClustersLimit": {
- "description": "number of active virtual clusters",
- "format": "int32",
- "type": "number",
- "x-omitempty": false
+ {
+ "type": "string",
+ "name": "logUid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/kubeBench": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "memory": {
- "$ref": "#/definitions/v1Memory"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the KubeBench compliance scan log by uid",
+ "operationId": "v1ClusterFeatureKubeBenchLogGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster compliance scan KubeBench Log",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster compliance scan logs spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "driverType": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster compliance scan KubeBench Log Status",
+ "properties": {
+ "actor": {
+ "description": "Compliance Scan actor",
+ "properties": {
+ "actorType": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "message": {
+ "type": "string"
+ },
+ "reports": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Compliance Scan KubeBench Report",
+ "properties": {
+ "fail": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "info": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "logs": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan KubeBench Log",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "expected": {
+ "type": "string"
+ },
+ "remediation": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "testId": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "pass": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "warn": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "scanTime": {
+ "description": "Cluster compliance scan Time",
+ "properties": {
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "nics": {
- "items": {
- "$ref": "#/definitions/v1Nic"
- },
- "type": "array"
+ {
+ "type": "string",
+ "name": "logUid",
+ "in": "path",
+ "required": true
},
- "os": {
- "$ref": "#/definitions/v1OS"
+ {
+ "type": "string",
+ "name": "reportId",
+ "in": "query"
}
- },
- "type": "object"
+ ]
},
- "v1Disk": {
- "properties": {
- "controller": {
- "type": "string"
- },
- "partitions": {
- "items": {
- "$ref": "#/definitions/v1Partition"
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/kubeHunter": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the KubeHunter compliance scan log by uid",
+ "operationId": "v1ClusterFeatureKubeHunterLogGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster compliance scan KubeHunter Log",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster compliance scan logs spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "driverType": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster compliance scan KubeHunter Log Status",
+ "properties": {
+ "actor": {
+ "description": "Compliance Scan actor",
+ "properties": {
+ "actorType": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "message": {
+ "type": "string"
+ },
+ "reports": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Compliance Scan KubeHunter Report",
+ "properties": {
+ "logs": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan KubeHunter Log",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "evidence": {
+ "type": "string"
+ },
+ "reference": {
+ "type": "string"
+ },
+ "severity": {
+ "type": "string"
+ },
+ "testId": {
+ "type": "string"
+ },
+ "vulnerability": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "vulnerabilites": {
+ "description": "Compliance Scan KubeHunter Vulnerabilities",
+ "properties": {
+ "high": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "low": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "medium": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "scanTime": {
+ "description": "Cluster compliance scan Time",
+ "properties": {
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "size": {
- "description": "Size in GB",
- "format": "int32",
- "type": "integer"
+ {
+ "type": "string",
+ "name": "logUid",
+ "in": "path",
+ "required": true
},
- "vendor": {
- "type": "string"
+ {
+ "type": "string",
+ "name": "reportId",
+ "in": "query"
}
- },
- "type": "object"
+ ]
},
- "v1DomainHost": {
- "description": "update domain host for application. RootDomain gets dervied from domain host url",
- "properties": {
- "host": {
- "type": "string"
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/sonobuoy": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the Sonobuoy compliance scan log by uid",
+ "operationId": "v1ClusterFeatureSonobuoyLogGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster compliance scan Sonobuoy Log",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster compliance scan logs spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "driverType": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster compliance scan Sonobuoy Log Status",
+ "properties": {
+ "actor": {
+ "description": "Compliance Scan actor",
+ "properties": {
+ "actorType": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "message": {
+ "type": "string"
+ },
+ "reports": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Compliance Scan Sonobuoy Report",
+ "properties": {
+ "fail": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "logs": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan Sonobuoy Log",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "msg": {
+ "type": "string"
+ },
+ "output": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "node": {
+ "type": "string"
+ },
+ "pass": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "plugin": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "total": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "scanTime": {
+ "description": "Cluster compliance scan Time",
+ "properties": {
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "state": {
+ "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "isPrivate": {
- "description": "If it is public or private",
- "type": "boolean"
+ {
+ "type": "string",
+ "name": "logUid",
+ "in": "path",
+ "required": true
},
- "region": {
- "description": "Name of the region",
- "type": "string"
+ {
+ "type": "string",
+ "name": "reportId",
+ "in": "query"
}
- },
- "type": "object"
+ ]
},
- "v1EcrImageEntity": {
- "properties": {
- "name": {
- "description": "Image name",
- "type": "string"
- },
- "tag": {
- "description": "Image tag",
- "type": "string"
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/syft": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the Syft compliance scan log by uid",
+ "operationId": "v1ClusterFeatureSyftLogGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster Compliance Scan Syft Log",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster compliance scan logs spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "driverType": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster compliance scan Syft Log Status",
+ "properties": {
+ "actor": {
+ "description": "Compliance Scan actor",
+ "properties": {
+ "actorType": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "location": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "message": {
+ "type": "string"
+ },
+ "reports": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan Syft Report",
+ "properties": {
+ "dependencies": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan Syft Dependency",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "image": {
+ "type": "string"
+ },
+ "imageContexts": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan Syft Image Context",
+ "properties": {
+ "containerName": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "podName": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "isSBOMExist": {
+ "type": "boolean"
+ },
+ "state": {
+ "type": "string"
+ },
+ "time": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "vulnerabilities": {
+ "type": "array",
+ "items": {
+ "description": "Compliance Scan Syft Vulnerability",
+ "properties": {
+ "fixedIn": {
+ "type": "string"
+ },
+ "installed": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "severity": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "vulnerability": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "vulnerabilitySummary": {
+ "description": "Compliance Scan Syft Vulnerability Summary",
+ "properties": {
+ "critical": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "high": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "low": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "medium": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "negligible": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "unknown": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "requestUid": {
+ "type": "string"
+ },
+ "scanContext": {
+ "description": "Compliance Scan Syft Context",
+ "properties": {
+ "format": {
+ "type": "string"
+ },
+ "labelSelector": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "podName": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ }
+ },
+ "scanTime": {
+ "description": "Cluster compliance scan Time",
+ "properties": {
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1EcrImageValidateEntity": {
- "description": "Ecr registry image meta",
- "properties": {
- "authEntity": {
- "$ref": "#/definitions/v1EcrAuthorizationRequestEntity"
- },
- "imageTag": {
- "description": "Name of the image tag",
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "images": {
- "description": "Ecr Image Entity",
- "items": {
- "$ref": "#/definitions/v1EcrImageEntity"
+ {
+ "type": "string",
+ "name": "logUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/syft/sbom": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "repoName": {
- "description": "Name of the repo",
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the image sbom of syft scan log of cluster",
+ "operationId": "v1SyftScanLogImageSBOMGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "download file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1EcrRegistry": {
- "description": "Ecr registry information",
- "properties": {
- "kind": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
+ {
+ "type": "string",
+ "name": "logUid",
+ "in": "path",
+ "required": true
},
- "spec": {
- "$ref": "#/definitions/v1EcrRegistrySpec"
+ {
+ "type": "string",
+ "name": "image",
+ "in": "query"
}
- },
- "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"
+ "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/{driver}/download": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Downloads the driver cluster logs",
+ "operationId": "v1ClusterFeatureDriverLogDownload",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "file"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ },
+ "Content-Type": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "isPrivate": {
- "type": "boolean"
+ {
+ "type": "string",
+ "name": "logUid",
+ "in": "path",
+ "required": true
},
- "providerType": {
- "default": "helm",
+ {
"enum": [
- "helm",
- "pack"
+ "kubeBench",
+ "kubeHunter",
+ "sonobuoy",
+ "syft"
],
- "type": "string"
- },
- "registryUid": {
- "description": "Ecr registry uid",
- "type": "string"
- },
- "scope": {
- "type": "string"
+ "type": "string",
+ "name": "driver",
+ "in": "path",
+ "required": true
},
- "tls": {
- "$ref": "#/definitions/v1TlsConfiguration"
+ {
+ "type": "string",
+ "default": "pdf",
+ "name": "fileFormat",
+ "in": "query"
}
- },
- "required": [
- "endpoint",
- "isPrivate"
- ],
- "type": "object"
+ ]
},
- "v1EdgeCloudClusterConfigEntity": {
- "description": "Edge cloud cluster config entity",
- "properties": {
- "clusterConfig": {
- "$ref": "#/definitions/v1EdgeClusterConfig"
+ "/v1/spectroclusters/{uid}/features/complianceScan/onDemand": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Create on demand cluster compliance scan",
+ "operationId": "v1ClusterFeatureComplianceScanOnDemandCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster compliance scan on demand configuration",
+ "properties": {
+ "kubeBench": {
+ "description": "Cluster compliance scan config for kube bench driver",
+ "properties": {
+ "runScan": {
+ "type": "boolean"
+ }
+ }
+ },
+ "kubeHunter": {
+ "description": "Cluster compliance scan config for kube hunter driver",
+ "properties": {
+ "runScan": {
+ "type": "boolean"
+ }
+ }
+ },
+ "sonobuoy": {
+ "description": "Cluster compliance scan config for sonobuoy driver",
+ "properties": {
+ "runScan": {
+ "type": "boolean"
+ }
+ }
+ },
+ "syft": {
+ "description": "Cluster compliance scan config for syft driver",
+ "properties": {
+ "config": {
+ "description": "Cluster compliance scan specification",
+ "properties": {
+ "format": {
+ "type": "string",
+ "enum": [
+ "cyclonedx-json",
+ "github-json",
+ "spdx-json",
+ "syft-json"
+ ]
+ },
+ "labelSelector": {
+ "type": "string"
+ },
+ "location": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "podName": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "cluster",
+ "namespace",
+ "label-selector",
+ "pod"
+ ]
+ }
+ }
+ },
+ "runScan": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1EdgeCloudConfig": {
- "description": "EdgeCloudConfig is the Schema for the Edgecloudconfigs API",
- "properties": {
- "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/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1EdgeCloudConfigSpec"
- },
- "status": {
- "$ref": "#/definitions/v1EdgeCloudConfigStatus"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1EdgeCloudConfigSpec": {
- "description": "EdgeCloudConfigSpec defines the desired state of EdgeCloudConfig",
- "properties": {
- "clusterConfig": {
- "$ref": "#/definitions/v1EdgeClusterConfig"
- },
- "machinePoolConfig": {
- "items": {
- "$ref": "#/definitions/v1EdgeMachinePoolConfig"
+ "/v1/spectroclusters/{uid}/features/helmCharts": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get the installed helm charts of a specified cluster",
+ "operationId": "v1ClusterFeatureHelmChartsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster helm charts metadata",
+ "properties": {
+ "charts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster helm chart metadata",
+ "properties": {
+ "localName": {
+ "type": "string"
+ },
+ "matchedRegistries": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster helm registry information",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "values": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "clusterConfig",
- "machinePoolConfig"
- ],
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1EdgeCloudConfigStatus": {
- "properties": {
- "conditions": {
- "items": {
- "$ref": "#/definitions/v1ClusterCondition"
+ "/v1/spectroclusters/{uid}/features/logFetcher": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get the log fetcher for cluster",
+ "operationId": "v1ClusterFeatureLogFetcherGet",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "requestId",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster Log Fetcher",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster Log Fetcher Spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ },
+ "log": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster Log Fetcher Status",
+ "properties": {
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Create the log fetcher for cluster",
+ "operationId": "v1ClusterFeatureLogFetcherCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster Log Fetcher Request",
+ "properties": {
+ "duration": {
+ "description": "Duration for which log is requested",
+ "type": "integer",
+ "format": "int64",
+ "default": 10
+ },
+ "k8s": {
+ "description": "Cluster Log Fetcher K8s",
+ "properties": {
+ "labelSelector": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "namespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "mode": {
+ "description": "Accepted Values - [\"cluster\", \"app\"]. if \"app\" then logs will be fetched from the virtual cluster",
+ "type": "string",
+ "default": "cluster",
+ "enum": [
+ "cluster",
+ "app"
+ ]
+ },
+ "noOfLines": {
+ "description": "No of lines of logs requested",
+ "type": "integer",
+ "format": "int64",
+ "default": 1000
+ },
+ "node": {
+ "description": "Cluster Log Fetcher Node Request",
+ "properties": {
+ "logs": {
+ "description": "Array of logs",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "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",
+ "parameters": [
+ {
"type": "string",
- "x-omitempty": false
- },
- "project": {
- "$ref": "#/definitions/v1ObjectEntity",
- "description": "ProjectUid where the edgehost will be placed during auto registration",
- "x-omitempty": false
+ "description": "Cluster uid for which log is requested",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/spectroclusters/{uid}/features/manifests": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get the installed manifests of a specified cluster",
+ "operationId": "v1ClusterFeatureManifestsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster manifests information",
+ "properties": {
+ "manifests": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster manifest information",
+ "properties": {
+ "content": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1EdgeHostClusterEntity": {
- "properties": {
- "clusterUid": {
- "type": "string"
+ "/v1/spectroclusters/{uid}/features/restore": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the cluster restore of cluster",
+ "operationId": "v1ClusterFeatureRestoreGet",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "restoreRequestUid",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster Restore",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster Restore Spec",
+ "properties": {
+ "clusterUid": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Cluster Restore Status",
+ "properties": {
+ "clusterRestoreStatuses": {
+ "type": "array",
+ "items": {
+ "description": "Cluster Restore Status Meta",
+ "properties": {
+ "actor": {
+ "description": "Compliance Scan actor",
+ "properties": {
+ "actorType": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "backupName": {
+ "type": "string"
+ },
+ "backupRequestUid": {
+ "type": "string"
+ },
+ "restoreRequestUid": {
+ "type": "string"
+ },
+ "restoreStatusMeta": {
+ "description": "Restore status meta",
+ "properties": {
+ "isSucceeded": {
+ "type": "boolean"
+ },
+ "msg": {
+ "type": "string"
+ },
+ "restoreTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "sourceClusterRef": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1EdgeHostDevice": {
- "properties": {
- "aclmeta": {
- "$ref": "#/definitions/v1AclMeta"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1EdgeHostDeviceSpec"
- },
- "status": {
- "$ref": "#/definitions/v1EdgeHostDeviceStatus"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1EdgeHostDeviceEntity": {
- "description": "Edge host device information",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectTagsEntity"
- },
- "spec": {
- "$ref": "#/definitions/v1EdgeHostDeviceSpecEntity"
+ "/v1/spectroclusters/{uid}/features/restore/onDemand": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Create on demand cluster restore",
+ "operationId": "v1ClusterFeatureRestoreOnDemandCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster restore config",
+ "required": [
+ "backupRequestUid",
+ "backupName",
+ "destinationClusterUid"
+ ],
+ "properties": {
+ "backupName": {
+ "type": "string"
+ },
+ "backupRequestUid": {
+ "type": "string"
+ },
+ "destinationClusterUid": {
+ "type": "string"
+ },
+ "includeClusterResources": {
+ "type": "boolean"
+ },
+ "includeNamespaces": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "preserveNodePorts": {
+ "type": "boolean"
+ },
+ "restorePVs": {
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1EdgeHostDeviceHostCheckSum": {
- "properties": {
- "hostCheckSum": {
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1EdgeHostDeviceHostPairingKey": {
- "properties": {
- "hostPairingKey": {
- "format": "password",
- "type": "string"
+ "/v1/spectroclusters/{uid}/import/manifest": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "produces": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the specified cluster's import manifest file",
+ "operationId": "v1SpectroClustersUidImportManifest",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "download file",
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ },
+ "headers": {
+ "Content-Disposition": {
+ "type": "string"
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1EdgeHostDeviceMetaUpdateEntity": {
- "description": "Edge host device uid and name",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectTagsEntity"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1EdgeHostDeviceSpec": {
- "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice",
- "properties": {
- "cloudProperties": {
- "$ref": "#/definitions/v1EdgeHostCloudProperties"
- },
- "clusterProfileTemplates": {
- "items": {
- "$ref": "#/definitions/v1ClusterProfileTemplate"
+ "/v1/spectroclusters/{uid}/import/upgrade": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Upgrade the specified imported read only cluster with full permissions",
+ "operationId": "v1SpectroClustersUidImportUpgradePatch",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1EdgeHostDeviceSpecEntity": {
- "description": "Edge host device spec",
- "properties": {
- "archType": {
- "$ref": "#/definitions/v1ArchType"
- },
- "hostPairingKey": {
- "format": "password",
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/spectroclusters/{uid}/k8certificates": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "profileStatus": {
- "$ref": "#/definitions/v1ProfileStatus"
- },
- "serviceAuthToken": {
- "type": "string"
- },
- "state": {
- "enum": [
- "ready",
- "unpaired",
- "in-use"
- ],
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get K8Certificate for spectro cluster",
+ "operationId": "v1SpectroClustersK8Certificate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "K8 Certificates for all the cluster's master nodes",
+ "type": "object",
+ "properties": {
+ "machineCertificates": {
+ "type": "array",
+ "items": {
+ "description": "K8 Certificates for master nodes",
+ "type": "object",
+ "properties": {
+ "certificateAuthorities": {
+ "description": "Applicable certificate authorities",
+ "type": "array",
+ "items": {
+ "description": "Certificate Authority",
+ "type": "object",
+ "properties": {
+ "certificates": {
+ "type": "array",
+ "items": {
+ "description": "Certificate details",
+ "type": "object",
+ "properties": {
+ "expiry": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "expiry": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1EdgeHostDevices": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1EdgeHostDevice"
+ "/v1/spectroclusters/{uid}/k8certificates/renew": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Sets the cluster master nodes Kubernetes certificates for renewal",
+ "operationId": "v1SpectroClustersCertificatesRenew",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "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"
+ "/v1/spectroclusters/{uid}/kubectl/redirect": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the specified cluster's kube config file",
+ "operationId": "V1SpectroClustersUidKubeCtlRedirect",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Active resources of tenant",
+ "type": "object",
+ "properties": {
+ "redirectUri": {
+ "type": "string"
+ }
+ }
+ }
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/spectroclusters/{uid}/libvirt/edgeHosts": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Retrieves a list of edge hosts of the libvirt cluster",
+ "operationId": "v1LibvirtClustersHostsList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "List of edge host devices",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "properties": {
+ "aclmeta": {
+ "description": "Resource access control information (Read-only response data)",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "cloudProperties": {
+ "description": "Additional cloud properties of the edge host (applicable based on the cloud type)",
+ "type": "object",
+ "properties": {
+ "vsphere": {
+ "description": "Vsphere cloud properties of edge host",
+ "properties": {
+ "datacenters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere datacenter",
+ "type": "object",
+ "properties": {
+ "computeClusters": {
+ "type": "array",
+ "items": {
+ "description": "Vsphere compute cluster",
+ "type": "object",
+ "properties": {
+ "datastores": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "resourcePools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "folders": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "device": {
+ "description": "DeviceSpec defines the desired state of Device",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the edge host",
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ },
+ "cpu": {
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "number of cpu cores",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "string"
+ },
+ "partitions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "fileSystemType": {
+ "type": "string"
+ },
+ "freeSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "mountPoint": {
+ "type": "string"
+ },
+ "totalSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "usedSpace": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "Size in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendor": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "gpus": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "memory": {
+ "type": "object",
+ "properties": {
+ "sizeInMB": {
+ "description": "memory size in bytes",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "os": {
+ "type": "object",
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "host": {
+ "description": "EdgeHost is the underlying appliance",
+ "type": "object",
+ "required": [
+ "hostUid",
+ "hostAddress"
+ ],
+ "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": {
+ "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": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "SSH secret name",
+ "type": "string"
+ },
+ "privateKey": {
+ "description": "Private Key to access the host",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "hostPairingKey": {
+ "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS",
+ "type": "string",
+ "format": "password",
+ "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": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "properties": {
+ "description": "Additional properties of edge host",
+ "properties": {
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "Network defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "storagePools": {
+ "type": "array",
+ "items": {
+ "description": "StoragePool is the storage pool for the vm image",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "service": {
+ "description": "ServiceSpec defines the specification of service registering edge",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "description": "Cloudtype of the provisioned edge host",
+ "type": "string",
+ "enum": [
+ "libvirt",
+ "vsphere",
+ "edge-native"
+ ]
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice",
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "healthy",
+ "unhealthy"
+ ]
+ }
+ }
+ },
+ "inUseClusters": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "profileStatus": {
+ "type": "object",
+ "properties": {
+ "hasUserMacros": {
+ "description": "If it is true then profile pack values has a reference to user defined macros",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "serviceAuthToken": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "networkName",
- "networkType"
- ],
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1EdgeHostProperties": {
- "description": "Additional properties of edge host",
- "properties": {
- "networks": {
- "items": {
- "$ref": "#/definitions/v1EdgeHostNetwork"
+ "/v1/spectroclusters/{uid}/location": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "storagePools": {
- "items": {
- "$ref": "#/definitions/v1EdgeHostStoragePool"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Associate the assets for the cluster",
+ "operationId": "v1SpectroClustersUidLocationPut",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster location",
+ "type": "object",
+ "properties": {
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
- }
- }
- },
- "v1EdgeHostSSHSecret": {
- "properties": {
- "name": {
- "description": "SSH secret name",
- "type": "string"
- },
- "privateKey": {
- "description": "Private Key to access the host",
- "type": "string"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1EdgeHostVsphereCloudProperties": {
- "description": "Vsphere cloud properties of edge host",
- "properties": {
- "datacenters": {
- "items": {
- "$ref": "#/definitions/v1VsphereCloudDatacenter"
+ "/v1/spectroclusters/{uid}/metadata": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- }
- }
- },
- "v1EdgeHostsMeta": {
- "properties": {
- "edgeHosts": {
- "items": {
- "$ref": "#/definitions/v1EdgeHostMeta"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Update the specified spectro cluster metadata",
+ "operationId": "v1SpectroClustersUidMetadataUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Resource metadata",
+ "type": "object",
+ "required": [
+ "metadata"
+ ],
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name of the resource.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1EdgeHostsMetadata": {
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1EdgeHostsMetadataSpec"
- },
- "status": {
- "$ref": "#/definitions/v1EdgeHostsMetadataStatus"
+ "/v1/spectroclusters/{uid}/namespaces": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns available namespaces for the cluster",
+ "operationId": "v1ClusterNamespacesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster's available namespaces",
+ "properties": {
+ "namespaces": {
+ "type": "array",
+ "items": {
+ "description": "Cluster's namespace",
+ "properties": {
+ "namespace": {
+ "type": "string"
+ },
+ "pvcCount": {
+ "type": "number",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1EdgeHostsMetadataFilter": {
- "description": "Edge host metadata spec",
- "properties": {
- "filter": {
- "$ref": "#/definitions/v1EdgeHostsMetadataFilterSpec"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "sort": {
- "items": {
- "$ref": "#/definitions/v1EdgeHostsMetadataSortSpec"
- },
- "type": "array",
- "uniqueItems": true
+ {
+ "type": "boolean",
+ "default": false,
+ "name": "skipEmptyNamespaces",
+ "in": "query"
}
- }
+ ]
},
- "v1EdgeHostsMetadataFilterSpec": {
- "description": "Edge hosts metadata filter spec",
- "properties": {
- "name": {
- "$ref": "#/definitions/v1FilterString"
- },
- "states": {
- "items": {
- "$ref": "#/definitions/v1EdgeHostState"
+ "/v1/spectroclusters/{uid}/oidc": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns k8s spectrocluster oidc",
+ "operationId": "V1SpectroClustersUidOIDC",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "spc uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "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": {
+ "type": "object",
+ "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
+ }
+ }
+ },
+ "scopes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ }
}
}
},
- "v1EdgeHostsMetadataSortFields": {
- "enum": [
- "name",
- "state",
- "creationTimestamp",
- "lastModifiedTimestamp"
- ],
- "type": "string",
- "x-nullable": true
- },
- "v1EdgeHostsMetadataSortSpec": {
- "properties": {
- "field": {
- "$ref": "#/definitions/v1EdgeHostsMetadataSortFields"
- },
- "order": {
- "$ref": "#/definitions/v1SortOrder"
+ "/v1/spectroclusters/{uid}/oidc/dashboard/url": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns k8s dashboard url",
+ "operationId": "V1SpectroClustersUidOIDCDashboardUrl",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "spc uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Service version information",
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string"
+ }
+ }
+ }
+ }
}
}
},
- "v1EdgeHostsMetadataSpec": {
- "properties": {
- "clusterProfileTemplates": {
- "items": {
- "$ref": "#/definitions/v1ProfileTemplateSummary"
+ "/v1/spectroclusters/{uid}/pack/manifests/{manifestUid}": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the specified cluster's manifest",
+ "operationId": "v1SpectroClustersUidPackManifestsUidGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "type": "array"
- },
- "state": {
- "$ref": "#/definitions/v1EdgeHostState"
- }
- },
- "type": "object"
- },
- "v1EdgeHostsMetadataSummary": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1EdgeHostsMetadata"
+ {
+ "type": "string",
+ "description": "manifest uid which is part of the pack ref",
+ "name": "manifestUid",
+ "in": "path",
+ "required": true
},
- "type": "array",
- "uniqueItems": true
- }
- },
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1EdgeHostsSearchSummary": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1EdgeHostsMetadata"
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "resolve pack manifest values if set to true",
+ "name": "resolveManifestValues",
+ "in": "query"
},
- "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": {
- "kind": {
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1EdgeMachineSpec"
- },
- "status": {
- "$ref": "#/definitions/v1CloudMachineStatus"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Pack manifest content",
+ "schema": {
+ "description": "Manifest object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Manifest spec",
+ "properties": {
+ "published": {
+ "description": "Published manifest object",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "digest": {
+ "description": "Manifest digest",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1EdgeMachinePoolCloudConfigEntity": {
- "properties": {
- "edgeHosts": {
- "items": {
- "$ref": "#/definitions/v1EdgeMachinePoolHostEntity"
+ "/v1/spectroclusters/{uid}/pack/properties": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
- }
- },
- "required": [
- "edgeHosts"
- ]
- },
- "v1EdgeMachinePoolConfig": {
- "properties": {
- "additionalLabels": {
- "additionalProperties": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Get specified cluster pack properties",
+ "operationId": "v1SpectroClustersUidPackProperties",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "description": "additionalLabels",
- "type": "object"
- },
- "additionalTags": {
- "additionalProperties": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Pack layer",
+ "name": "layer",
+ "in": "query",
+ "required": true
},
- "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": "string",
+ "description": "Pack values yaml field path",
+ "name": "fieldPath",
+ "in": "query",
+ "required": true
},
- "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": "string",
+ "description": "Pack name",
+ "name": "name",
+ "in": "query"
},
- "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": "boolean",
+ "default": true,
+ "description": "Is the macros need to be resolved",
+ "name": "resolveMacros",
+ "in": "query"
},
- "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"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster's pack properties response",
+ "schema": {
+ "description": "Cluster pack properties response",
+ "type": "object",
+ "properties": {
+ "yaml": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
}
- },
- "required": [
- "hosts"
- ],
- "type": "object"
+ }
},
- "v1EdgeMachinePoolConfigEntity": {
- "properties": {
- "cloudConfig": {
- "$ref": "#/definitions/v1EdgeMachinePoolCloudConfigEntity"
- },
- "poolConfig": {
- "$ref": "#/definitions/v1MachinePoolConfigEntity"
+ "/v1/spectroclusters/{uid}/packRefs": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the cluster's pack references",
+ "operationId": "v1SpectroClustersPacksRefUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster input for notification update",
+ "type": "object",
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile notification update request payload",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack input entity with values to overwrite and manifests for the intial creation",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "layer": {
+ "description": "Pack layer",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "spcApplySettings": {
+ "type": "object",
+ "properties": {
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "DownloadAndInstall",
+ "DownloadAndInstallLater"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "hostUid": {
- "description": "HostUid is the ID of the EdgeHost",
- "type": "string"
- }
- },
- "required": [
- "hostUid",
- "hostAddress"
- ],
- "type": "object"
- },
- "v1EdgeMachinePoolHostEntity": {
- "properties": {
- "hostUid": {
- "type": "string"
+ {
+ "type": "string",
+ "name": "notify",
+ "in": "query"
}
- },
- "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"
+ "/v1/spectroclusters/{uid}/packs/resolvedValues": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the specified cluster's packs resolved values",
+ "operationId": "v1SpectroClustersUidPacksResolvedValuesGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster profiles resolved values response",
+ "type": "object",
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile resolved pack values",
+ "properties": {
+ "resolved": {
+ "description": "Cluster profile pack resolved values",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "mounts": {
- "items": {
- "$ref": "#/definitions/v1EdgeMount"
- },
- "type": "array",
- "uniqueItems": true
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster profiles param reference entity",
+ "type": "object",
+ "properties": {
+ "references": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ ]
},
- "v1EdgeMachines": {
- "description": "Edge machine list",
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1EdgeMachine"
+ "/v1/spectroclusters/{uid}/packs/status": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Patch update specified cluster's packs status",
+ "operationId": "v1SpectroClustersUidPacksStatusPatch",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "ReadyForInstall",
+ "Installed",
+ "Ready",
+ "Error",
+ "UpgradeAvailable",
+ "WaitingForOtherLayers"
+ ]
+ }
+ }
+ },
+ "endTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "profileUid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "startTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1EdgeMount": {
- "description": "Edge mounts",
- "properties": {
- "containerPath": {
- "type": "string"
- },
- "hostPath": {
- "type": "string"
- },
- "readonly": {
- "type": "boolean"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1EdgeNativeCloudClusterConfigEntity": {
- "description": "EdgeNative cloud cluster config entity",
- "properties": {
- "clusterConfig": {
- "$ref": "#/definitions/v1EdgeNativeClusterConfig"
+ "/v1/spectroclusters/{uid}/profile": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Replaces the specified cluster profile for the cluster",
+ "operationId": "v1SpectroClustersPatchProfile",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "type": "object"
+ ]
},
- "v1EdgeNativeCloudConfigSpec": {
- "description": "EdgeNativeCloudConfigSpec defines the desired state of EdgeNativeCloudConfig",
- "properties": {
- "clusterConfig": {
- "$ref": "#/definitions/v1EdgeNativeClusterConfig"
- },
- "machinePoolConfig": {
- "items": {
- "$ref": "#/definitions/v1EdgeNativeMachinePoolConfig"
+ "/v1/spectroclusters/{uid}/profileUpdates": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the profile updates of a specified cluster",
+ "operationId": "v1SpectroClustersGetProfileUpdates",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/spectroclusters/{uid}/profiles": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the associated profiles of a specified cluster",
+ "operationId": "v1SpectroClustersGetProfiles",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "includes pack meta such as schema, presets",
+ "name": "includePackMeta",
+ "in": "query"
},
- "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "required": [
+ "profiles"
+ ],
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile response",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Cluster profile spec response",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "description": "Cluster profile cloud type",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile packs object",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack object",
+ "type": "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": {
+ "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "cloudTypes": {
+ "description": "Pack supported cloud types",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "description": "Pack logo url",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the cluster profile",
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "presets": {
+ "description": "Pack presets are the set of configurations applied on user selection of presets",
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "description": "Pack schema contains constraints such as data type, format, hints for the pack values",
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "template": {
+ "description": "Pack template configuration",
+ "properties": {
+ "manifest": {
+ "description": "Pack template manifest content",
+ "type": "string"
+ },
+ "parameters": {
+ "description": "Pack template parameters",
+ "properties": {
+ "inputParameters": {
+ "description": "Pack template input parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "outputParameters": {
+ "description": "Pack template output parameters array",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Pack template parameter options array",
+ "type": "object",
+ "additionalProperties": {
+ "description": "Pack template parameter option",
+ "type": "object",
+ "properties": {
+ "dependencies": {
+ "description": "Pack template parameter dependencies",
+ "type": "array",
+ "items": {
+ "description": "Pack template dependency",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ },
+ "description": {
+ "description": "Pack template parameter description",
+ "type": "string"
+ },
+ "label": {
+ "description": "Pack template parameter label",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "values": {
+ "description": "Pack template values",
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "Pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Pack version",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Pack status",
+ "type": "object"
+ }
+ }
+ }
+ },
+ "relatedObject": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "version": {
+ "description": "Cluster profile version",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "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"
- },
- "isTwoNodeCandidate": {
- "default": false,
- "description": "Enable this flag to support 2-Node HA mode. True indicates this edgehost which act as the recovery node. It is a immutable field can be set only during cluster provisioning.",
- "type": "boolean",
- "x-omitempty": false
- },
- "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"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Associate cluster profiles to the specified cluster",
+ "operationId": "v1SpectroClustersUpdateProfiles",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "Resolve pending cluster notification if set to true",
+ "name": "resolveNotification",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "profiles"
+ ],
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "spcApplySettings": {
+ "type": "object",
+ "properties": {
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "DownloadAndInstall",
+ "DownloadAndInstallLater"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Remove cluster profiles from the specified cluster",
+ "operationId": "v1SpectroClustersDeleteProfiles",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "profileUids": {
+ "description": "Cluster's profile uid list",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1EdgeNativeMachine": {
- "description": "EdgeNative cloud VM definition",
- "properties": {
- "kind": {
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1EdgeNativeMachineSpec"
- },
- "status": {
- "$ref": "#/definitions/v1CloudMachineStatus"
- }
- }
- },
- "v1EdgeNativeMachinePoolCloudConfigEntity": {
- "properties": {
- "edgeHosts": {
- "items": {
- "$ref": "#/definitions/v1EdgeNativeMachinePoolHostEntity"
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Patch cluster profiles to the specified cluster",
+ "operationId": "v1SpectroClustersPatchProfiles",
+ "parameters": [
+ {
+ "type": "boolean",
+ "default": false,
+ "description": "Resolve pending cluster notification if set to true",
+ "name": "resolveNotification",
+ "in": "query"
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "profiles"
+ ],
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "spcApplySettings": {
+ "type": "object",
+ "properties": {
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "DownloadAndInstall",
+ "DownloadAndInstallLater"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "edgeHosts"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
]
},
- "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"
+ "/v1/spectroclusters/{uid}/profiles/packs/manifests": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the associated profile's pack manifests of a specified cluster",
+ "operationId": "v1SpectroClustersGetProfilesPacksManifests",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Includes pack meta such as schema, presets",
+ "name": "includePackMeta",
+ "in": "query"
},
- "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": "boolean",
+ "default": false,
+ "description": "Resolve pack macro variables if set to true",
+ "name": "resolveMacros",
+ "in": "query"
},
- "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": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "required": [
+ "profiles"
+ ],
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile pack manifests",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile pack manifests",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Pack manifests spec",
+ "type": "object",
+ "properties": {
+ "addonType": {
+ "description": "Pack add-on type such as logging, monitoring, security etc",
+ "type": "string"
+ },
+ "annotations": {
+ "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "cloudTypes": {
+ "description": "Pack supported cloud types",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "description": "Pack logo url",
+ "type": "string"
+ },
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the cluster profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "presets": {
+ "description": "Pack presets are the set of configurations applied on user selection of presets",
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "Pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "description": "Pack schema contains constraints such as data type, format, hints for the pack values",
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "Pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Pack version",
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Pack status",
+ "type": "object"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1EdgeNativeMachinePoolHostEntity": {
- "properties": {
- "hostName": {
- "description": "Edge host name",
- "type": "string"
- },
- "hostUid": {
- "description": "Edge host id",
- "type": "string"
- },
- "isTwoNodeCandidate": {
- "default": false,
- "description": "\"Set to true if edgeHost has to be selected as a candidate for promotion to a control plane node. It is a immutable field.\"\n",
- "type": "boolean",
- "x-omitempty": false
- },
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- },
- "required": [
- "hostUid"
]
},
- "v1EdgeNativeMachineSpec": {
- "description": "EdgeNative cloud VM definition spec",
- "properties": {
- "edgeHostUid": {
- "type": "string"
- },
- "instanceType": {
- "$ref": "#/definitions/v1EdgeNativeInstanceType"
- },
- "nics": {
- "items": {
- "$ref": "#/definitions/v1EdgeNativeNic"
+ "/v1/spectroclusters/{uid}/profiles/{profileUid}/packs/{packName}/config": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the specified cluster's profile pack configuration",
+ "operationId": "v1SpectroClustersUidProfilesUidPacksConfigGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "profile uid",
+ "name": "profileUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "pack name",
+ "name": "packName",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of cluster pack values",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack configuration",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "type": "object",
+ "properties": {
+ "associatedObject": {
+ "type": "string"
+ },
+ "isValuesOverridden": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "digest": {
+ "type": "string"
+ },
+ "isOverridden": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string"
+ },
+ "parentUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "packUid": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "values": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1EdgeNativeMachines": {
- "description": "EdgeNative machine list",
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1EdgeNativeMachine"
+ "/v1/spectroclusters/{uid}/profiles/{profileUid}/packs/{packName}/manifests": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the associated profiles pack manifests of the specified cluster",
+ "operationId": "v1SpectroClustersProfilesUidPackManifestsGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "description": "Manifests array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Manifest object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "Manifest spec",
+ "properties": {
+ "published": {
+ "description": "Published manifest object",
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "digest": {
+ "description": "Manifest digest",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1EdgeNativeNic": {
- "description": "Generic network interface",
- "properties": {
- "index": {
- "format": "int8",
- "type": "integer"
- },
- "networkName": {
- "type": "string"
- },
- "privateIPs": {
- "items": {
- "type": "string"
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "publicIp": {
- "type": "string"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates cluster profiles pack manifests to the specified cluster",
+ "operationId": "v1SpectroClustersProfilesUidPackManifestsUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Pack manifests input params",
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Manifest request payload",
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
- },
- "v1EdgeNativeOverlayNetworkConfiguration": {
- "properties": {
- "cidr": {
- "description": "CIDR is the CIDR of the overlay network",
- "type": "string"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "enable": {
- "description": "Enable is a flag to enable overlay network",
- "type": "boolean",
- "x-omitempty": false
- }
- },
- "type": "object"
- },
- "v1EdgeNativeTwoNodeCandidateEntity": {
- "properties": {
- "masterEdgeHost": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Cluster profile uid",
+ "name": "profileUid",
+ "in": "path",
+ "required": true
},
- "workerEdgeHost": {
- "type": "string"
+ {
+ "type": "string",
+ "description": "Name of the pack",
+ "name": "packName",
+ "in": "path",
+ "required": true
}
- },
- "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"
+ "/v1/spectroclusters/{uid}/rate": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the estimated rate of the specified cluster",
+ "operationId": "v1SpectroClustersUidRate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Cluster estimated rate information",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool estimated rate information",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "nodesCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "rate": {
+ "description": "Cloud estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "description": "Compute estimated rate information",
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "storage": {
+ "type": "array",
+ "items": {
+ "description": "Storage estimated rate information",
+ "type": "object",
+ "properties": {
+ "iops": {
+ "type": "number",
+ "format": "float64"
+ },
+ "rate": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "sizeGB": {
+ "type": "number",
+ "format": "float64"
+ },
+ "throughput": {
+ "type": "number",
+ "format": "float64"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "rate": {
+ "description": "Cluster total estimated rate information",
+ "type": "object",
+ "properties": {
+ "compute": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "storage": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "total": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "resourceMetadata": {
+ "description": "Cloud resource metadata",
+ "type": "object",
+ "properties": {
+ "instanceTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud Instance type details",
+ "type": "object",
+ "properties": {
+ "category": {
+ "description": "Category of instance type",
+ "type": "string",
+ "x-go-name": "Category"
+ },
+ "cost": {
+ "description": "Instance cost entity",
+ "type": "object",
+ "properties": {
+ "price": {
+ "description": "Array of cloud instance price",
+ "type": "array",
+ "items": {
+ "description": "Cloud instance price",
+ "type": "object",
+ "properties": {
+ "onDemand": {
+ "description": "OnDemand price of instance",
+ "type": "number",
+ "format": "double"
+ },
+ "os": {
+ "description": "Os associated with instance price. Allowed values - [linux, windows]",
+ "type": "string",
+ "enum": [
+ "linux",
+ "windows"
+ ]
+ },
+ "spot": {
+ "description": "Spot price of instance",
+ "type": "number",
+ "format": "double"
+ }
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "Cpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Cpu"
+ },
+ "gpu": {
+ "description": "Gpu of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Gpu"
+ },
+ "memory": {
+ "description": "Memory of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Memory"
+ },
+ "nonSupportedZones": {
+ "description": "Non supported zones of the instance in a particular region",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "price": {
+ "description": "Price of instance type",
+ "type": "number",
+ "format": "double",
+ "x-go-name": "Price"
+ },
+ "supportedArchitectures": {
+ "description": "Supported architecture of the instance",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "type": {
+ "description": "Type of instance type",
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ }
+ }
+ },
+ "storageTypes": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Cloud cloud Storage type details",
+ "type": "object",
+ "properties": {
+ "cost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "iopsCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "kind": {
+ "description": "kind of storage type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the storage type",
+ "type": "string"
+ },
+ "throughputCost": {
+ "description": "Cloud storage cost",
+ "type": "object",
+ "properties": {
+ "discountedUsage": {
+ "description": "Cloud storage upper limit which is free.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Array of cloud storage range prices",
+ "type": "array",
+ "items": {
+ "description": "Cloud storage price within an upper limit.",
+ "type": "object",
+ "properties": {
+ "limit": {
+ "description": "Upper limit of cloud storage usage",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price of cloud storage type",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
},
- "type": "object"
- },
- "v1EdgeToken": {
- "description": "Edge token information",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1EdgeTokenSpec"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
},
- "status": {
- "$ref": "#/definitions/v1EdgeTokenStatus"
+ {
+ "enum": [
+ "hourly",
+ "monthly",
+ "yearly"
+ ],
+ "type": "string",
+ "default": "hourly",
+ "description": "Period type [hourly, monthly, yearly]",
+ "name": "periodType",
+ "in": "query"
}
- },
- "type": "object"
+ ]
},
- "v1EdgeTokenActiveState": {
- "description": "Edge token active state",
- "properties": {
- "isActive": {
- "description": "Set to 'true', if the token is active",
- "type": "boolean"
+ "/v1/spectroclusters/{uid}/repave/approve": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the spectrocluster repave approve update",
+ "operationId": "v1SpectroClustersUidRepaveApproveUpdate",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
}
},
- "v1EdgeTokenEntity": {
- "description": "Edge token request payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1EdgeTokenSpecEntity"
+ "/v1/spectroclusters/{uid}/repave/status": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the spectrocluster repave",
+ "operationId": "v1SpectroClustersUidRepaveGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Returns cluster repave status",
+ "schema": {
+ "description": "Spectro cluster repave status information",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "reasons": {
+ "description": "Spectro cluster repave reasons",
+ "type": "array",
+ "items": {
+ "description": "Cluster repave reason description",
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "pack": {
+ "description": "Cluster pack difference",
+ "type": "object",
+ "properties": {
+ "current": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ },
+ "diffConfigKeys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "target": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "source": {
+ "type": "string",
+ "enum": [
+ "user",
+ "hubble",
+ "palette",
+ "stylus"
+ ]
+ },
+ "spectroClusterUid": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "repaveTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string",
+ "default": "Pending",
+ "enum": [
+ "Pending",
+ "Approved",
+ "Reverted"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1EdgeTokenProject": {
- "description": "Edge token project information",
- "properties": {
- "name": {
- "description": "Project name",
- "type": "string"
- },
- "uid": {
- "description": "Project uid",
- "type": "string"
+ "/v1/spectroclusters/{uid}/reset": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "reset the cluster s by deleting machine pools and condtions",
+ "operationId": "V1SpectroClustersUidReset",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/spectroclusters/{uid}/status/condition": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified cluster status condition",
+ "operationId": "v1SpectroClustersUpdateStatusCondition",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/spectroclusters/{uid}/status/conditions": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified cluster status conditions",
+ "operationId": "v1SpectroClustersUpdateStatusConditions",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "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"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "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"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
}
- }
+ ]
},
- "v1EdgeTokenStatus": {
- "description": "Edge token status",
- "properties": {
- "isActive": {
- "description": "Set to 'true', if the token is active",
- "type": "boolean",
- "x-omitempty": false
+ "/v1/spectroclusters/{uid}/status/endpoints": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified cluster's service endpoints information",
+ "operationId": "v1SpectroClustersUpdateStatusEndpoints",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "APIEndpoint represents a reachable Kubernetes API endpoint.",
+ "type": "object",
+ "required": [
+ "host",
+ "port"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1EdgeTokenUpdate": {
- "description": "Edge token update request payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1EdgeTokenSpecUpdate"
+ "/v1/spectroclusters/{uid}/status/imported": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified cluster status as imported",
+ "operationId": "v1SpectroClustersUpdateStatusImported",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1EdgeTokens": {
- "properties": {
- "items": {
- "description": "List of edge tokens",
- "items": {
- "$ref": "#/definitions/v1EdgeToken"
+ "/v1/spectroclusters/{uid}/status/services": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array",
- "uniqueItems": true
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the specified cluster's services information",
+ "operationId": "v1SpectroClustersUpdateStatusServices",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "required": [
- "items"
- ],
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/spectroclusters/{uid}/status/spcApply": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the SPC apply information for the agent",
+ "operationId": "v1SpectroClustersUidStatusSpcApplyGet",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "DownloadAndInstall",
+ "DownloadAndInstallLater"
+ ]
+ },
+ "canBeApplied": {
+ "description": "If it is true then Agent can apply the changes to the palette",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "crdDigest": {
+ "type": "string"
+ },
+ "lastModifiedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "patchAppliedTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "spcHash": {
+ "type": "string"
+ },
+ "spcInfraHash": {
+ "type": "string"
+ }
+ }
+ }
+ }
}
},
- "required": [
- "name",
- "version"
- ],
- "type": "object"
- },
- "v1EksCloudClusterConfigEntity": {
- "description": "EKS cloud cluster config entity",
- "properties": {
- "clusterConfig": {
- "$ref": "#/definitions/v1EksClusterConfig"
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Set the CanBeApplied to true on the spcApply status. CanBeApplied indicates the agent to orchestrate the spc changes",
+ "operationId": "v1SpectroClustersUidStatusSpcApply",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "v1EksCloudConfig": {
- "description": "EksCloudConfig is the Schema for the ekscloudconfigs API",
- "properties": {
- "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/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1EksCloudConfigSpec"
+ "/v1/spectroclusters/{uid}/status/spcApply/patchTime": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the agent patch time for the SPC changes",
+ "operationId": "v1SpectroClustersUidStatusSpcPatchTime",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "clusterHash": {
+ "type": "string"
+ },
+ "patchTime": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/spectroclusters/{uid}/status/upgrades": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
},
- "type": "array"
- },
- "machinePoolConfig": {
- "items": {
- "$ref": "#/definitions/v1EksMachinePoolConfig"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Updates the cluster's upgrade status",
+ "operationId": "v1SpectroClustersUidUpgradesPut",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster status upgrades",
+ "type": "object",
+ "properties": {
+ "upgrades": {
+ "type": "array",
+ "items": {
+ "description": "Upgrades represent the reason of the last upgrade that took place",
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "timestamp": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
}
},
- "type": "object"
+ "parameters": [
+ {
+ "type": "string",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
},
- "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"
+ "/v1/spectroclusters/{uid}/validate/packs": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates cluster packs",
+ "operationId": "v1SpectroClustersUidValidatePacks",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster entity for pack refs validate",
+ "type": "object",
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster packs validation response",
+ "schema": {
+ "description": "Cluster validator response",
+ "type": "object",
+ "properties": {
+ "machinePools": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Cluster profile validator response",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Constraint validator response",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Constraint validator result",
+ "type": "object",
+ "properties": {
+ "displayName": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "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"
+ "/v1/spectroclusters/{uid}/validate/repave": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
},
- "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"
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Validates if cluster gets repaved for the specified packs",
+ "operationId": "v1SpectroClustersUidValidateRepave",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Cluster entity for pack refs validate",
+ "type": "object",
+ "properties": {
+ "profiles": {
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
},
- "type": "array"
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Cluster repave validation response",
+ "schema": {
+ "description": "Cluster repave validation response",
+ "type": "object",
+ "properties": {
+ "isRepaveRequired": {
+ "description": "If true then the pack changes can cause cluster repave",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "reasons": {
+ "type": "array",
+ "items": {
+ "description": "Cluster repave reason description",
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "pack": {
+ "description": "Cluster pack difference",
+ "type": "object",
+ "properties": {
+ "current": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ },
+ "diffConfigKeys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "target": {
+ "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",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "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": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- },
- "type": "object"
+ }
},
- "v1EksFargateProfiles": {
- "description": "Fargate profiles",
- "properties": {
- "fargateProfiles": {
- "items": {
- "$ref": "#/definitions/v1FargateProfile"
+ "/v1/spectroclusters/{uid}/vms": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "spectroclusters"
+ ],
+ "summary": "Returns the list of virtual machines",
+ "operationId": "v1SpectroClustersVMList",
+ "parameters": [
+ {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv",
+ "description": "Namespace names, comma separated value (ex: dev,test). If namespace is empty it returns the specific resource under all namespace",
+ "name": "namespace",
+ "in": "query"
},
- "type": "array"
+ {
+ "type": "integer",
+ "format": "int64",
+ "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.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Scope the request to the specified project uid",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "VirtualMachineList is a list of virtual machines",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "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": {
+ "type": "array",
+ "items": {
+ "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.",
+ "required": [
+ "spec"
+ ],
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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",
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
+ "type": "object",
+ "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": {
+ "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",
+ "type": "object",
+ "properties": {
+ "Raw": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "byte"
+ }
+ }
+ }
+ },
+ "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": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "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.",
+ "type": "object",
+ "required": [
+ "apiVersion",
+ "kind",
+ "name",
+ "uid"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like",
+ "type": "object",
+ "required": [
+ "template"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "spec"
+ ],
+ "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": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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",
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
+ "type": "object",
+ "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": {
+ "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",
+ "type": "object",
+ "properties": {
+ "Raw": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "byte"
+ }
+ }
+ }
+ },
+ "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": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "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.",
+ "type": "object",
+ "required": [
+ "apiVersion",
+ "kind",
+ "name",
+ "uid"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "DataVolumeSpec defines the DataVolume type specification",
+ "type": "object",
+ "properties": {
+ "checkpoints": {
+ "description": "Checkpoints is a list of DataVolumeCheckpoints, representing stages in a multistage import.",
+ "type": "array",
+ "items": {
+ "description": "DataVolumeCheckpoint defines a stage in a warm migration.",
+ "type": "object",
+ "required": [
+ "previous",
+ "current"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "dataSource": {
+ "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.",
+ "type": "object",
+ "required": [
+ "kind",
+ "name"
+ ],
+ "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"
+ }
+ }
+ },
+ "dataSourceRef": {
+ "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.",
+ "type": "object",
+ "required": [
+ "kind",
+ "name"
+ ],
+ "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"
+ }
+ }
+ },
+ "resources": {
+ "description": "ResourceRequirements describes the compute resource requirements.",
+ "type": "object",
+ "properties": {
+ "limits": {
+ "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
+ "type": "object",
+ "additionalProperties": {
+ "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"
+ }
+ },
+ "requests": {
+ "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",
+ "additionalProperties": {
+ "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"
+ }
+ }
+ }
+ },
+ "selector": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
+ "type": "array",
+ "items": {
+ "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchLabels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "source": {
+ "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC",
+ "type": "object",
+ "properties": {
+ "blank": {
+ "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC",
+ "type": "object"
+ },
+ "http": {
+ "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",
+ "type": "object",
+ "required": [
+ "url"
+ ],
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretExtraHeaders": {
+ "description": "SecretExtraHeaders is a list of Secret references, each containing an extra HTTP header that may include sensitive information",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "imageio": {
+ "description": "DataVolumeSourceImageIO provides the parameters to create a Data Volume from an imageio source",
+ "type": "object",
+ "required": [
+ "url",
+ "diskId"
+ ],
+ "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"
+ }
+ }
+ },
+ "pvc": {
+ "description": "DataVolumeSourcePVC provides the parameters to create a Data Volume from an existing PVC",
+ "type": "object",
+ "required": [
+ "namespace",
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "description": "The name of the source PVC",
+ "type": "string"
+ },
+ "namespace": {
+ "description": "The namespace of the source PVC",
+ "type": "string"
+ }
+ }
+ },
+ "registry": {
+ "description": "DataVolumeSourceRegistry provides the parameters to create a Data Volume from an registry source",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "s3": {
+ "description": "DataVolumeSourceS3 provides the parameters to create a Data Volume from an S3 source",
+ "type": "object",
+ "required": [
+ "url"
+ ],
+ "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"
+ }
+ }
+ },
+ "upload": {
+ "description": "DataVolumeSourceUpload provides the parameters to create a Data Volume by uploading the source",
+ "type": "object"
+ },
+ "vddk": {
+ "description": "DataVolumeSourceVDDK provides the parameters to create a Data Volume from a Vmware source",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "sourceRef": {
+ "description": "DataVolumeSourceRef defines an indirect reference to the source of data for the DataVolume",
+ "type": "object",
+ "required": [
+ "kind",
+ "name"
+ ],
+ "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"
+ }
+ }
+ },
+ "storage": {
+ "description": "StorageSpec defines the Storage type specification",
+ "type": "object",
+ "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",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "dataSource": {
+ "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.",
+ "type": "object",
+ "required": [
+ "kind",
+ "name"
+ ],
+ "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"
+ }
+ }
+ },
+ "resources": {
+ "description": "ResourceRequirements describes the compute resource requirements.",
+ "type": "object",
+ "properties": {
+ "limits": {
+ "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
+ "type": "object",
+ "additionalProperties": {
+ "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"
+ }
+ },
+ "requests": {
+ "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",
+ "additionalProperties": {
+ "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"
+ }
+ }
+ }
+ },
+ "selector": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
+ "type": "array",
+ "items": {
+ "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchLabels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "instancetype": {
+ "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI template.",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "preference": {
+ "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI template.",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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",
+ "type": "string",
+ "format": "date-time",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "labels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
+ "type": "object",
+ "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": {
+ "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",
+ "type": "object",
+ "properties": {
+ "Raw": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "byte"
+ }
+ }
+ }
+ },
+ "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": {
+ "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.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "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.",
+ "type": "object",
+ "required": [
+ "apiVersion",
+ "kind",
+ "name",
+ "uid"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "spec": {
+ "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.",
+ "type": "object",
+ "required": [
+ "domain"
+ ],
+ "properties": {
+ "accessCredentials": {
+ "description": "Specifies a set of public keys to inject into the vm guest",
+ "type": "array",
+ "items": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "sshPublicKey": {
+ "description": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest",
+ "type": "object",
+ "required": [
+ "source",
+ "propagationMethod"
+ ],
+ "properties": {
+ "propagationMethod": {
+ "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.",
+ "type": "object",
+ "properties": {
+ "configDrive": {
+ "type": "object"
+ },
+ "qemuGuestAgent": {
+ "type": "object",
+ "required": [
+ "users"
+ ],
+ "properties": {
+ "users": {
+ "description": "Users represents a list of guest users that should have the ssh public keys added to their authorized_keys file.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-kubernetes-list-type": "set"
+ }
+ }
+ }
+ }
+ },
+ "source": {
+ "description": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.",
+ "type": "object",
+ "properties": {
+ "secret": {
+ "type": "object",
+ "required": [
+ "secretName"
+ ],
+ "properties": {
+ "secretName": {
+ "description": "SecretName represents the name of the secret in the VMI's namespace",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "userPassword": {
+ "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.",
+ "type": "object",
+ "required": [
+ "source",
+ "propagationMethod"
+ ],
+ "properties": {
+ "propagationMethod": {
+ "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.",
+ "type": "object",
+ "properties": {
+ "qemuGuestAgent": {
+ "type": "object"
+ }
+ }
+ },
+ "source": {
+ "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.",
+ "type": "object",
+ "properties": {
+ "secret": {
+ "type": "object",
+ "required": [
+ "secretName"
+ ],
+ "properties": {
+ "secretName": {
+ "description": "SecretName represents the name of the secret in the VMI's namespace",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "x-kubernetes-list-type": "atomic"
+ },
+ "affinity": {
+ "description": "Affinity is a group of affinity scheduling rules.",
+ "type": "object",
+ "properties": {
+ "nodeAffinity": {
+ "description": "Node affinity is a group of node affinity scheduling rules.",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "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).",
+ "type": "object",
+ "required": [
+ "weight",
+ "preference"
+ ],
+ "properties": {
+ "preference": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "A list of node selector requirements by node's labels.",
+ "type": "array",
+ "items": {
+ "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchFields": {
+ "description": "A list of node selector requirements by node's fields.",
+ "type": "array",
+ "items": {
+ "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "weight": {
+ "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "requiredDuringSchedulingIgnoredDuringExecution": {
+ "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.",
+ "type": "object",
+ "required": [
+ "nodeSelectorTerms"
+ ],
+ "properties": {
+ "nodeSelectorTerms": {
+ "description": "Required. A list of node selector terms. The terms are ORed.",
+ "type": "array",
+ "items": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "A list of node selector requirements by node's labels.",
+ "type": "array",
+ "items": {
+ "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchFields": {
+ "description": "A list of node selector requirements by node's fields.",
+ "type": "array",
+ "items": {
+ "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "podAffinity": {
+ "description": "Pod affinity is a group of inter pod affinity scheduling rules.",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)",
+ "type": "object",
+ "required": [
+ "weight",
+ "podAffinityTerm"
+ ],
+ "properties": {
+ "podAffinityTerm": {
+ "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",
+ "type": "object",
+ "required": [
+ "topologyKey"
+ ],
+ "properties": {
+ "labelSelector": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
+ "type": "array",
+ "items": {
+ "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchLabels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "namespaceSelector": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
+ "type": "array",
+ "items": {
+ "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchLabels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "weight": {
+ "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "topologyKey"
+ ],
+ "properties": {
+ "labelSelector": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
+ "type": "array",
+ "items": {
+ "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchLabels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "namespaceSelector": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
+ "type": "array",
+ "items": {
+ "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchLabels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "podAntiAffinity": {
+ "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)",
+ "type": "object",
+ "required": [
+ "weight",
+ "podAffinityTerm"
+ ],
+ "properties": {
+ "podAffinityTerm": {
+ "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",
+ "type": "object",
+ "required": [
+ "topologyKey"
+ ],
+ "properties": {
+ "labelSelector": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
+ "type": "array",
+ "items": {
+ "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchLabels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "namespaceSelector": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
+ "type": "array",
+ "items": {
+ "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchLabels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "weight": {
+ "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "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",
+ "type": "object",
+ "required": [
+ "topologyKey"
+ ],
+ "properties": {
+ "labelSelector": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
+ "type": "array",
+ "items": {
+ "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchLabels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "namespaceSelector": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
+ "type": "array",
+ "items": {
+ "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchLabels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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\"",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "dnsConfig": {
+ "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "PodDNSConfigOption defines DNS resolver options of a pod.",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Required.",
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "required": [
+ "devices"
+ ],
+ "properties": {
+ "chassis": {
+ "description": "Chassis specifies the chassis info passed to the domain.",
+ "type": "object",
+ "properties": {
+ "asset": {
+ "type": "string"
+ },
+ "manufacturer": {
+ "type": "string"
+ },
+ "serial": {
+ "type": "string"
+ },
+ "sku": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "clock": {
+ "description": "Represents the clock and timers of a vmi.",
+ "type": "object",
+ "properties": {
+ "timer": {
+ "description": "Represents all available timers in a vmi.",
+ "type": "object",
+ "properties": {
+ "hpet": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "hyperv": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "kvm": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "pit": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "rtc": {
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "UTC sets the guest clock to UTC on each boot.",
+ "type": "object",
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ },
+ "cpu": {
+ "description": "CPU allows specifying the CPU topology.",
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "CPUFeature allows specifying a CPU feature.",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ "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": {
+ "type": "object",
+ "properties": {
+ "guestMappingPassthrough": {
+ "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"
+ }
+ }
+ },
+ "realtime": {
+ "description": "Realtime holds the tuning knobs specific for realtime workloads.",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "sockets": {
+ "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "threads": {
+ "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "devices": {
+ "type": "object",
+ "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": {
+ "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"
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "blockSize": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "custom": {
+ "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.",
+ "type": "object",
+ "required": [
+ "logical",
+ "physical"
+ ],
+ "properties": {
+ "logical": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "physical": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "matchVolume": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "cache": {
+ "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.",
+ "type": "string"
+ },
+ "cdrom": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "dedicatedIOThread": {
+ "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.",
+ "type": "boolean"
+ },
+ "disk": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "io": {
+ "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.",
+ "type": "string"
+ },
+ "lun": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "filesystems": {
+ "description": "Filesystems describes filesystem which is connected to the vmi.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "virtiofs"
+ ],
+ "properties": {
+ "name": {
+ "description": "Name is the device name",
+ "type": "string"
+ },
+ "virtiofs": {
+ "type": "object"
+ }
+ }
+ },
+ "x-kubernetes-list-type": "atomic"
+ },
+ "gpus": {
+ "description": "Whether to attach a GPU device to the vmi.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "deviceName"
+ ],
+ "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": {
+ "type": "object",
+ "properties": {
+ "display": {
+ "type": "object",
+ "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": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "x-kubernetes-list-type": "atomic"
+ },
+ "hostDevices": {
+ "description": "Whether to attach a host device to the vmi.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "deviceName"
+ ],
+ "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"
+ }
+ }
+ },
+ "x-kubernetes-list-type": "atomic"
+ },
+ "inputs": {
+ "description": "Inputs describe input devices",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "name"
+ ],
+ "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"
+ }
+ }
+ }
+ },
+ "interfaces": {
+ "description": "Interfaces describe network interfaces which are added to the vmi.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "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).",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "bridge": {
+ "description": "InterfaceBridge connects to a given network via a linux bridge.",
+ "type": "object"
+ },
+ "dhcpOptions": {
+ "description": "Extra DHCP options to use in the interface.",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "privateOptions": {
+ "description": "If specified will pass extra DHCP options for private use, range: 224-254",
+ "type": "array",
+ "items": {
+ "description": "DHCPExtraOptions defines Extra DHCP options for a VM.",
+ "type": "object",
+ "required": [
+ "option",
+ "value"
+ ],
+ "properties": {
+ "option": {
+ "description": "Option is an Integer value from 224-254 Required.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "value": {
+ "description": "Value is a String value for the Option provided Required.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "tftpServerName": {
+ "description": "If specified will pass option 66 to interface's DHCP server",
+ "type": "string"
+ }
+ }
+ },
+ "macAddress": {
+ "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.",
+ "type": "string"
+ },
+ "macvtap": {
+ "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.",
+ "type": "object"
+ },
+ "masquerade": {
+ "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.",
+ "type": "object"
+ },
+ "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": {
+ "description": "InterfacePasst connects to a given network.",
+ "type": "object"
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory",
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "slirp": {
+ "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.",
+ "type": "object"
+ },
+ "sriov": {
+ "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.",
+ "type": "object"
+ },
+ "tag": {
+ "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "Rng represents the random device passed from host",
+ "type": "object"
+ },
+ "sound": {
+ "description": "Represents the user's configuration to emulate sound cards in the VMI.",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "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"
+ }
+ }
+ },
+ "tpm": {
+ "type": "object"
+ },
+ "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": {
+ "description": "Named watchdog device.",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "i6300esb": {
+ "description": "i6300esb watchdog device.",
+ "type": "object",
+ "properties": {
+ "action": {
+ "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the watchdog.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "features": {
+ "type": "object",
+ "properties": {
+ "acpi": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "apic": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "hyperv": {
+ "description": "Hyperv specific features.",
+ "type": "object",
+ "properties": {
+ "evmcs": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "frequencies": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "ipi": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "reenlightenment": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "relaxed": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "reset": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "runtime": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "spinlocks": {
+ "type": "object",
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "synic": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "synictimer": {
+ "type": "object",
+ "properties": {
+ "direct": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "enabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "tlbflush": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "vapic": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "vendorid": {
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "vpindex": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ },
+ "kvm": {
+ "type": "object",
+ "properties": {
+ "hidden": {
+ "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false",
+ "type": "boolean"
+ }
+ }
+ },
+ "pvspinlock": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ },
+ "smm": {
+ "description": "Represents if a feature is enabled or disabled.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.",
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ },
+ "firmware": {
+ "type": "object",
+ "properties": {
+ "bootloader": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "bios": {
+ "description": "If set (default), BIOS will be used.",
+ "type": "object",
+ "properties": {
+ "useSerial": {
+ "description": "If set, the BIOS output will be transmitted over serial",
+ "type": "boolean"
+ }
+ }
+ },
+ "efi": {
+ "description": "If set, EFI will be used instead of BIOS.",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "kernelBoot": {
+ "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments",
+ "type": "object",
+ "properties": {
+ "container": {
+ "description": "If set, the VM will be booted from the defined kernel / initrd.",
+ "type": "object",
+ "required": [
+ "image"
+ ],
+ "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"
+ }
+ }
+ },
+ "kernelArgs": {
+ "description": "Arguments to be passed to the kernel at boot time",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "ioThreadsPolicy": {
+ "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto",
+ "type": "string"
+ },
+ "launchSecurity": {
+ "type": "object",
+ "properties": {
+ "sev": {
+ "type": "object"
+ }
+ }
+ },
+ "machine": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.",
+ "type": "string"
+ }
+ }
+ },
+ "memory": {
+ "description": "Memory allows specifying the VirtualMachineInstance memory features.",
+ "type": "object",
+ "properties": {
+ "guest": {
+ "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"
+ },
+ "hugepages": {
+ "description": "Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.",
+ "type": "object",
+ "properties": {
+ "pageSize": {
+ "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "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": {
+ "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.",
+ "type": "object",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "failureThreshold": {
+ "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "guestAgentPing": {
+ "description": "GuestAgentPing configures the guest-agent based ping probe",
+ "type": "object"
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "type": "object",
+ "required": [
+ "name",
+ "value"
+ ],
+ "properties": {
+ "name": {
+ "description": "The header field name",
+ "type": "string"
+ },
+ "value": {
+ "description": "The header field value",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "periodSeconds": {
+ "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "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"
+ ]
+ }
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "networks": {
+ "description": "List of networks that can be attached to a vm's virtual interface.",
+ "type": "array",
+ "items": {
+ "description": "Network represents a network type and a resource that should be connected to the vm.",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "multus": {
+ "description": "Represents the multus cni network.",
+ "type": "object",
+ "required": [
+ "networkName"
+ ],
+ "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"
+ }
+ }
+ },
+ "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": {
+ "description": "Represents the stock pod network interface.",
+ "type": "object",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "nodeSelector": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "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": {
+ "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.",
+ "type": "object",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "type": "object",
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "failureThreshold": {
+ "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "guestAgentPing": {
+ "description": "GuestAgentPing configures the guest-agent based ping probe",
+ "type": "object"
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "type": "object",
+ "required": [
+ "name",
+ "value"
+ ],
+ "properties": {
+ "name": {
+ "description": "The header field name",
+ "type": "string"
+ },
+ "value": {
+ "description": "The header field value",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ },
+ "periodSeconds": {
+ "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "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"
+ ]
+ }
+ }
+ },
+ "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",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "tolerations": {
+ "description": "If toleration is specified, obey all the toleration rules.",
+ "type": "array",
+ "items": {
+ "description": "The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .",
+ "type": "object",
+ "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.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.",
+ "type": "object",
+ "required": [
+ "maxSkew",
+ "topologyKey",
+ "whenUnsatisfiable"
+ ],
+ "properties": {
+ "labelSelector": {
+ "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.",
+ "type": "object",
+ "properties": {
+ "matchExpressions": {
+ "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
+ "type": "array",
+ "items": {
+ "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
+ "type": "object",
+ "required": [
+ "key",
+ "operator"
+ ],
+ "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.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "matchLabels": {
+ "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",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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"
+ }
+ }
+ },
+ "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.",
+ "type": "array",
+ "items": {
+ "description": "Volume represents a named volume in a vmi.",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "cloudInitConfigDrive": {
+ "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html",
+ "type": "object",
+ "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": {
+ "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ }
+ }
+ },
+ "secretRef": {
+ "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "cloudInitNoCloud": {
+ "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html",
+ "type": "object",
+ "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": {
+ "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ }
+ }
+ },
+ "secretRef": {
+ "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "configMap": {
+ "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap",
+ "type": "object",
+ "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"
+ }
+ }
+ },
+ "containerDisk": {
+ "description": "Represents a docker image with an embedded disk.",
+ "type": "object",
+ "required": [
+ "image"
+ ],
+ "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"
+ }
+ }
+ },
+ "dataVolume": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "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"
+ }
+ }
+ },
+ "downwardAPI": {
+ "description": "DownwardAPIVolumeSource represents a volume containing downward API info.",
+ "type": "object",
+ "properties": {
+ "fields": {
+ "description": "Fields is a list of downward API volume file",
+ "type": "array",
+ "items": {
+ "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field",
+ "type": "object",
+ "required": [
+ "path"
+ ],
+ "properties": {
+ "fieldRef": {
+ "description": "ObjectFieldSelector selects an APIVersioned field of an object.",
+ "type": "object",
+ "required": [
+ "fieldPath"
+ ],
+ "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"
+ }
+ }
+ },
+ "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.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "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": {
+ "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format",
+ "type": "object",
+ "required": [
+ "resource"
+ ],
+ "properties": {
+ "containerName": {
+ "description": "Container name: required for volumes, optional for env vars",
+ "type": "string"
+ },
+ "divisor": {
+ "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"
+ },
+ "resource": {
+ "description": "Required: resource to select",
+ "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"
+ }
+ }
+ },
+ "downwardMetrics": {
+ "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"
+ },
+ "emptyDisk": {
+ "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.",
+ "type": "object",
+ "required": [
+ "capacity"
+ ],
+ "properties": {
+ "capacity": {
+ "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"
+ }
+ }
+ },
+ "ephemeral": {
+ "type": "object",
+ "properties": {
+ "persistentVolumeClaim": {
+ "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",
+ "type": "object",
+ "required": [
+ "claimName"
+ ],
+ "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"
+ }
+ }
+ }
+ }
+ },
+ "hostDisk": {
+ "description": "Represents a disk created on the cluster level",
+ "type": "object",
+ "required": [
+ "path",
+ "type"
+ ],
+ "properties": {
+ "capacity": {
+ "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