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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "status": { + "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", + "type": "object", + "properties": { + "conditions": { + "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", + "type": "array", + "items": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }, + "created": { + "description": "Created indicates if the virtual machine is created in the cluster", + "type": "boolean" + }, + "memoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "type": "object", + "required": [ + "claimName", + "phase" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer", + "format": "int32" + }, + "lastFailedVMIUID": { + "type": "string" + }, + "retryAfterTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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.", + "type": "array", + "items": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" + }, + "data": { + "description": "Provides additional data in order to perform the Action", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", + "type": "string" + } + } + } + }, + "volumeRequests": { + "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", + "type": "array", + "items": { + "type": "object", + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } + } + } + }, + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumeSnapshotStatuses": { + "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "enabled" + ], + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" + }, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", + "type": "string" + } + } + } + } + }, + "x-nullable": true + } + } + } + }, + "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": { + "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", + "type": "object", + "properties": { + "continue": { + "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", + "type": "string" + }, + "remainingItemCount": { + "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", + "type": "integer", + "format": "int64" + }, + "resourceVersion": { + "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", + "type": "string" + }, + "selfLink": { + "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "type": "string" + } + } + } + } + } + } } }, - "type": "object" - }, - "v1EksMachineCloudConfigEntity": { - "properties": { - "awsLaunchTemplate": { - "$ref": "#/definitions/v1AwsLaunchTemplate" - }, - "azs": { - "items": { - "type": "string" + "post": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "capacityType": { - "default": "on-demand", - "description": "EC2 instance capacity type", - "enum": [ - "on-demand", - "spot" - ], - "type": "string" - }, - "enableAwsLaunchTemplate": { - "description": "flag to know if aws launch template is enabled", - "type": "boolean" - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "format": "int64", - "maximum": 2000, - "minimum": 1, - "type": "integer" - }, - "spotMarketOptions": { - "$ref": "#/definitions/v1SpotMarketOptions", - "description": "SpotMarketOptions allows users to configure instances to be run using AWS Spot instances." - }, - "subnets": { - "items": { - "$ref": "#/definitions/v1EksSubnetEntity" + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Create virtual machine", + "operationId": "v1SpectroClustersVMCreate", + "parameters": [ + { + "type": "string", + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true + }, + { + "name": "body", + "in": "body", + "schema": { + "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "status": { + "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", + "type": "object", + "properties": { + "conditions": { + "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", + "type": "array", + "items": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }, + "created": { + "description": "Created indicates if the virtual machine is created in the cluster", + "type": "boolean" + }, + "memoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "type": "object", + "required": [ + "claimName", + "phase" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer", + "format": "int32" + }, + "lastFailedVMIUID": { + "type": "string" + }, + "retryAfterTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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.", + "type": "array", + "items": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" + }, + "data": { + "description": "Provides additional data in order to perform the Action", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", + "type": "string" + } + } + } + }, + "volumeRequests": { + "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", + "type": "array", + "items": { + "type": "object", + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } + } + } + }, + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumeSnapshotStatuses": { + "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "enabled" + ], + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" + }, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", + "type": "string" + } + } + } + } + }, + "x-nullable": true + } + } + } }, - "type": "array" + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "status": { + "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", + "type": "object", + "properties": { + "conditions": { + "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", + "type": "array", + "items": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }, + "created": { + "description": "Created indicates if the virtual machine is created in the cluster", + "type": "boolean" + }, + "memoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "type": "object", + "required": [ + "claimName", + "phase" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer", + "format": "int32" + }, + "lastFailedVMIUID": { + "type": "string" + }, + "retryAfterTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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.", + "type": "array", + "items": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" + }, + "data": { + "description": "Provides additional data in order to perform the Action", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", + "type": "string" + } + } + } + }, + "volumeRequests": { + "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", + "type": "array", + "items": { + "type": "object", + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } + } + } + }, + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumeSnapshotStatuses": { + "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "enabled" + ], + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" + }, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", + "type": "string" + } + } + } + } + }, + "x-nullable": true + } + } + } + } } - } + }, + "parameters": [ + { + "type": "string", + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1EksMachinePoolConfig": { - "properties": { - "additionalLabels": { - "additionalProperties": { - "type": "string" - }, - "description": "additionalLabels", - "type": "object" - }, - "additionalTags": { - "additionalProperties": { - "type": "string" + "/v1/spectroclusters/{uid}/vms/snapshot": { + "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" - }, - "awsLaunchTemplate": { - "$ref": "#/definitions/v1AwsLaunchTemplate" - }, - "azs": { - "description": "AZs is only used for dynamic placement", - "items": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Returns the list of snapshots of given namespaces", + "operationId": "v1ClusterVMSnapshotsList", + "parameters": [ + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv", + "description": "vmName is comma separated value (ex: name1,name2).", + "name": "vmName", + "in": "query" }, - "type": "array" - }, - "capacityType": { - "default": "on-demand", - "description": "EC2 instance capacity type", - "enum": [ - "on-demand", - "spot" - ], - "type": "string" - }, - "enableAwsLaunchTemplate": { - "description": "flag to know if aws launch template is enabled", - "type": "boolean" - }, - "instanceConfig": { - "$ref": "#/definitions/v1InstanceConfig" - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: master/worker, gpu, windows", - "items": { - "type": "string" + { + "type": "array", + "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" - }, - "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", + "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" }, - "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 + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "VirtualMachineSnapshotList is a list of VirtualMachineSnapshot resources", + "type": "object", + "required": [ + "metadata", + "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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "items": { + "type": "array", + "items": { + "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", + "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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "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": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", + "type": "object", + "required": [ + "source" + ], + "properties": { + "deletionPolicy": { + "type": "string" + }, + "failureDeadline": { + "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", + "type": "string" + }, + "source": { + "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" + } + } + } + } + }, + "status": { + "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "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" + }, + "error": { + "description": "Error is the last error encountered during the snapshot/restore", + "type": "object", + "properties": { + "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" + } + } + }, + "indications": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "phase": { + "type": "string" + }, + "readyToUse": { + "type": "boolean" + }, + "snapshotVolumes": { + "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "type": "object", + "properties": { + "excludedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "includedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + } + } + }, + "sourceUID": { + "type": "string" + }, + "virtualMachineSnapshotContentName": { + "type": "string" + } + }, + "x-nullable": true + } + } + } + }, + "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": { + "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", + "type": "object", + "properties": { + "continue": { + "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", + "type": "string" + }, + "remainingItemCount": { + "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", + "type": "integer", + "format": "int64" + }, + "resourceVersion": { + "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", + "type": "string" + }, + "selfLink": { + "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "type": "string" + } + } + } + } + } + } } }, - "required": [ - "isControlPlane" - ], - "type": "object" - }, - "v1EksMachinePoolConfigEntity": { - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1EksMachineCloudConfigEntity" - }, - "poolConfig": { - "$ref": "#/definitions/v1MachinePoolConfigEntity" + "parameters": [ + { + "type": "string", + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true } - } + ] }, - "v1EksSubnetEntity": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" + "/v1/spectroclusters/{uid}/vms/{vmName}": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Get virtual machine", + "operationId": "v1SpectroClustersVMGet", + "parameters": [ + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "status": { + "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", + "type": "object", + "properties": { + "conditions": { + "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", + "type": "array", + "items": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }, + "created": { + "description": "Created indicates if the virtual machine is created in the cluster", + "type": "boolean" + }, + "memoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "type": "object", + "required": [ + "claimName", + "phase" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer", + "format": "int32" + }, + "lastFailedVMIUID": { + "type": "string" + }, + "retryAfterTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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.", + "type": "array", + "items": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" + }, + "data": { + "description": "Provides additional data in order to perform the Action", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", + "type": "string" + } + } + } + }, + "volumeRequests": { + "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", + "type": "array", + "items": { + "type": "object", + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } + } + } + }, + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumeSnapshotStatuses": { + "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "enabled" + ], + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" + }, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", + "type": "string" + } + } + } + } + }, + "x-nullable": true + } + } + } + } } - } - }, - "v1EncryptionConfig": { - "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.", - "properties": { - "isEnabled": { - "description": "Is encryption configuration enabled for the cluster", - "type": "boolean" - }, - "provider": { - "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)", - "type": "string" - }, - "resources": { - "description": "Resources specifies the resources to be encrypted", - "items": { - "type": "string" + }, + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Updates the specified virtual machine of the cluster", + "operationId": "v1SpectroClustersVMUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "status": { + "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", + "type": "object", + "properties": { + "conditions": { + "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", + "type": "array", + "items": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }, + "created": { + "description": "Created indicates if the virtual machine is created in the cluster", + "type": "boolean" + }, + "memoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "type": "object", + "required": [ + "claimName", + "phase" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer", + "format": "int32" + }, + "lastFailedVMIUID": { + "type": "string" + }, + "retryAfterTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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.", + "type": "array", + "items": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" + }, + "data": { + "description": "Provides additional data in order to perform the Action", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", + "type": "string" + } + } + } + }, + "volumeRequests": { + "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", + "type": "array", + "items": { + "type": "object", + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } + } + } + }, + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumeSnapshotStatuses": { + "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "enabled" + ], + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" + }, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", + "type": "string" + } + } + } + } + }, + "x-nullable": true + } + } + } }, - "type": "array" + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "status": { + "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", + "type": "object", + "properties": { + "conditions": { + "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", + "type": "array", + "items": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }, + "created": { + "description": "Created indicates if the virtual machine is created in the cluster", + "type": "boolean" + }, + "memoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "type": "object", + "required": [ + "claimName", + "phase" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer", + "format": "int32" + }, + "lastFailedVMIUID": { + "type": "string" + }, + "retryAfterTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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.", + "type": "array", + "items": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" + }, + "data": { + "description": "Provides additional data in order to perform the Action", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", + "type": "string" + } + } + } + }, + "volumeRequests": { + "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", + "type": "array", + "items": { + "type": "object", + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } + } + } + }, + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumeSnapshotStatuses": { + "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "enabled" + ], + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" + }, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", + "type": "string" + } + } + } + } + }, + "x-nullable": true + } + } + } + } } }, - "type": "object" - }, - "v1Event": { - "description": "Describes the component event details", - "properties": { - "involvedObject": { - "$ref": "#/definitions/v1ObjectReference", - "description": "Describes object involved in event generation", - "type": "object" - }, - "message": { - "description": "Describes message associated with the event", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta", - "type": "object" - }, - "reason": { - "description": "Describes the reason for the event", - "type": "string" - }, - "relatedObject": { - "$ref": "#/definitions/v1EventRelatedObject", - "description": "Describes object related to the event", - "type": "object" - }, - "severity": { - "description": "Describes the gravitas for the event", - "type": "string" - }, - "source": { - "$ref": "#/definitions/v1EventSource", - "description": "Describes the origin for the event", - "type": "object" + "delete": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Deletes the virtual machine", + "operationId": "v1SpectroClustersVMDelete", + "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" - }, - "v1EventRelatedObject": { - "description": "Object for which the event is related", - "properties": { - "kind": { - "enum": [ - "spectrocluster", - "edgehost" - ], - "type": "string" + "parameters": [ + { + "type": "string", + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "name": { - "type": "string" + { + "type": "string", + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true }, - "uid": { - "type": "string" + { + "type": "string", + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true } - }, - "type": "object" + ] }, - "v1EventSource": { - "description": "Describes the origin for the event", - "properties": { - "component": { - "description": "Describes the component where event originated", - "type": "string" - }, - "host": { - "description": "Describes the host where event originated", - "type": "string" + "/v1/spectroclusters/{uid}/vms/{vmName}/addVolume": { + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Add volume to the virtual machine instance", + "operationId": "v1SpectroClustersVMAddVolume", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "required": [ + "addVolumeOptions" + ], + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } + } + } + }, + "dataVolumeTemplate": { + "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" + } + } + } + } + } + } + }, + "persist": { + "description": "If 'true' add the disk to the Virtual Machine & Virtual Machine Instance, else add the disk to the Virtual Machine Instance only", + "type": "boolean" + } + } + } + }, + { + "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" - }, - "v1Events": { - "description": "An array of component events items", - "properties": { - "items": { - "description": "Describes a list of returned component events", - "items": { - "$ref": "#/definitions/v1Event" - }, - "type": "array", - "uniqueItems": true + "parameters": [ + { + "type": "string", + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData", - "description": "Describes the meta information about the component event lists" + { + "type": "string", + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true } - }, - "required": [ - "items" - ], - "type": "object" + ] }, - "v1EventsRelatedObjectsEntity": { - "properties": { - "relatedObjectUids": { - "description": "List of uids of the related object", - "items": { - "type": "string" + "/v1/spectroclusters/{uid}/vms/{vmName}/clone": { + "post": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Clone virtual machine", + "operationId": "v1SpectroClustersVMClone", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "required": [ + "cloneName" + ], + "properties": { + "annotationFilters": { + "description": "Annotation filters", + "type": "array", + "items": { + "type": "string" + } + }, + "cloneName": { + "description": "Cloning Virtual machine's name", + "type": "string" + }, + "labelFilters": { + "description": "Label filters", + "type": "array", + "items": { + "type": "string" + } + }, + "newMacAddresses": { + "description": "NewMacAddresses manually sets that target interfaces' mac addresses. The key is the interface name and the value is the new mac address. If this field is not specified, a new MAC address will be generated automatically, as for any interface that is not included in this map", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "newSMBiosSerial": { + "description": "NewSMBiosSerial manually sets that target's SMbios serial. If this field is not specified, a new serial will be generated automatically.", + "type": "string" + } + } + } + }, + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "status": { + "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", + "type": "object", + "properties": { + "conditions": { + "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", + "type": "array", + "items": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }, + "created": { + "description": "Created indicates if the virtual machine is created in the cluster", + "type": "boolean" + }, + "memoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "type": "object", + "required": [ + "claimName", + "phase" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer", + "format": "int32" + }, + "lastFailedVMIUID": { + "type": "string" + }, + "retryAfterTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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.", + "type": "array", + "items": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" + }, + "data": { + "description": "Provides additional data in order to perform the Action", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", + "type": "string" + } + } + } + }, + "volumeRequests": { + "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", + "type": "array", + "items": { + "type": "object", + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } + } + } + }, + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumeSnapshotStatuses": { + "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "enabled" + ], + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" + }, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", + "type": "string" + } + } + } + } + }, + "x-nullable": true + } + } + } + } } }, - "required": [ - "relatedObjectUids" - ], - "type": "object" - }, - "v1FargateProfile": { - "description": "FargateProfile defines the desired state of FargateProfile", - "properties": { - "additionalTags": { - "additionalProperties": { - "type": "string" - }, - "description": "AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.", - "type": "object" - }, - "name": { - "description": "name specifies the profile name.", - "type": "string" + "parameters": [ + { + "type": "string", + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "selectors": { - "description": "Selectors specify fargate pod selectors.", - "items": { - "$ref": "#/definitions/v1FargateSelector" - }, - "type": "array" + { + "type": "string", + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true }, - "subnetIds": { - "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.", - "items": { - "type": "string" - }, - "type": "array" + { + "type": "string", + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true } - }, - "required": [ - "name" - ], - "type": "object" + ] }, - "v1FargateSelector": { - "description": "FargateSelector specifies a selector for pods that should run on this fargate pool", - "properties": { - "labels": { - "additionalProperties": { - "type": "string" + "/v1/spectroclusters/{uid}/vms/{vmName}/migrate": { + "put": { + "security": [ + { + "ApiKey": [] }, - "description": "Labels specifies which pod labels this selector should match.", - "type": "object" - }, - "namespace": { - "description": "Namespace specifies which namespace this selector should match.", - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Migrate the virtual machine", + "operationId": "v1SpectroClustersVMMigrate", + "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" + } + } + } } }, - "required": [ - "namespace" - ], - "type": "object" - }, - "v1FileUploadResponse": { - "description": "File upload response", - "properties": { - "name": { - "type": "string" + "parameters": [ + { + "type": "string", + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "uid": { - "type": "string" + { + "type": "string", + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true } - }, - "type": "object" + ] }, - "v1FilterArray": { - "properties": { - "beginsWith": { - "items": { - "type": "string" - }, - "type": "array", - "x-nullable": true - }, - "eq": { - "items": { - "type": "string" + "/v1/spectroclusters/{uid}/vms/{vmName}/pause": { + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "x-nullable": true + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Pause the virtual machine instance", + "operationId": "v1SpectroClustersVMPause", + "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": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "ignoreCase": { - "default": true, - "type": "boolean" + { + "type": "string", + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true }, - "ne": { - "items": { - "type": "string" + { + "type": "string", + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true + } + ] + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/removeVolume": { + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "x-nullable": true + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Remove volume from the virtual machine instance", + "operationId": "v1SpectroClustersVMRemoveVolume", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "required": [ + "removeVolumeOptions" + ], + "properties": { + "persist": { + "description": "If 'true' remove the disk from the Virtual Machine & Virtual Machine Instance, else remove the disk from the Virtual Machine Instance only", + "type": "boolean" + }, + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + } + } + } + } + }, + { + "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" - }, - "v1FilterIntRange": { - "properties": { - "eq": { - "format": "int32", - "type": "integer", - "x-nullable": true - }, - "gt": { - "format": "int32", - "type": "integer", - "x-nullable": true - }, - "gte": { - "format": "int32", - "type": "integer", - "x-nullable": true - }, - "lt": { - "format": "int32", - "type": "integer", - "x-nullable": true + "parameters": [ + { + "type": "string", + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "lte": { - "format": "int32", - "type": "integer", - "x-nullable": true + { + "type": "string", + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true }, - "ne": { - "format": "int32", - "type": "integer", - "x-nullable": true + { + "type": "string", + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true } - }, - "type": "object" + ] }, - "v1FilterMetadata": { - "description": "Filter metadata object", - "properties": { - "filterType": { - "type": "string" + "/v1/spectroclusters/{uid}/vms/{vmName}/restart": { + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Restart the virtual machine", + "operationId": "v1SpectroClustersVMRestart", + "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": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "name": { - "type": "string" + { + "type": "string", + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true }, - "uid": { - "type": "string" + { + "type": "string", + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true } - }, - "type": "object" + ] }, - "v1FilterNumberRange": { - "properties": { - "eq": { - "type": "number", - "x-nullable": true - }, - "gt": { - "type": "number", - "x-nullable": true - }, - "gte": { - "type": "number", - "x-nullable": true - }, - "lt": { - "type": "number", - "x-nullable": true - }, - "lte": { - "type": "number", - "x-nullable": true - }, - "ne": { - "type": "number", - "x-nullable": true + "/v1/spectroclusters/{uid}/vms/{vmName}/resume": { + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Resume the virtual machine instance", + "operationId": "v1SpectroClustersVMResume", + "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" - }, - "v1FilterString": { - "properties": { - "beginsWith": { + "parameters": [ + { "type": "string", - "x-nullable": true + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "contains": { + { "type": "string", - "x-nullable": true + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true }, - "eq": { + { "type": "string", - "x-nullable": true + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true + } + ] + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/snapshot": { + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Create snapshot of virtual machine", + "operationId": "v1VMSnapshotCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", + "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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "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": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", + "type": "object", + "required": [ + "source" + ], + "properties": { + "deletionPolicy": { + "type": "string" + }, + "failureDeadline": { + "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", + "type": "string" + }, + "source": { + "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" + } + } + } + } + }, + "status": { + "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "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" + }, + "error": { + "description": "Error is the last error encountered during the snapshot/restore", + "type": "object", + "properties": { + "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" + } + } + }, + "indications": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "phase": { + "type": "string" + }, + "readyToUse": { + "type": "boolean" + }, + "snapshotVolumes": { + "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "type": "object", + "properties": { + "excludedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "includedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + } + } + }, + "sourceUID": { + "type": "string" + }, + "virtualMachineSnapshotContentName": { + "type": "string" + } + }, + "x-nullable": true + } + } + } + }, + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", + "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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "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": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", + "type": "object", + "required": [ + "source" + ], + "properties": { + "deletionPolicy": { + "type": "string" + }, + "failureDeadline": { + "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", + "type": "string" + }, + "source": { + "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" + } + } + } + } + }, + "status": { + "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "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" + }, + "error": { + "description": "Error is the last error encountered during the snapshot/restore", + "type": "object", + "properties": { + "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" + } + } + }, + "indications": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "phase": { + "type": "string" + }, + "readyToUse": { + "type": "boolean" + }, + "snapshotVolumes": { + "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "type": "object", + "properties": { + "excludedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "includedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + } + } + }, + "sourceUID": { + "type": "string" + }, + "virtualMachineSnapshotContentName": { + "type": "string" + } + }, + "x-nullable": true + } + } + } + } + } + }, + "parameters": [ + { + "type": "string", + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "ignoreCase": { - "default": true, - "type": "boolean" + { + "type": "string", + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true }, - "ne": { + { "type": "string", - "x-nullable": true + "description": "Namespace name of virtual machine", + "name": "namespace", + "in": "query", + "required": true } - }, - "type": "object" + ] }, - "v1FilterSummary": { - "description": "Filter summary object", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1FilterSummarySpec" + "/v1/spectroclusters/{uid}/vms/{vmName}/snapshot/{snapshotName}": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Get virtual machine snapshot", + "operationId": "v1VMSnapshotGet", + "parameters": [ + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", + "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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "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": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", + "type": "object", + "required": [ + "source" + ], + "properties": { + "deletionPolicy": { + "type": "string" + }, + "failureDeadline": { + "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", + "type": "string" + }, + "source": { + "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" + } + } + } + } + }, + "status": { + "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "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" + }, + "error": { + "description": "Error is the last error encountered during the snapshot/restore", + "type": "object", + "properties": { + "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" + } + } + }, + "indications": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "phase": { + "type": "string" + }, + "readyToUse": { + "type": "boolean" + }, + "snapshotVolumes": { + "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "type": "object", + "properties": { + "excludedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "includedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + } + } + }, + "sourceUID": { + "type": "string" + }, + "virtualMachineSnapshotContentName": { + "type": "string" + } + }, + "x-nullable": true + } + } + } + } } }, - "type": "object" - }, - "v1FilterSummarySpec": { - "properties": { - "filterType": { - "type": "string" + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Updates the specified snapshot of a virtual machine", + "operationId": "v1VMSnapshotUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", + "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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "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": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", + "type": "object", + "required": [ + "source" + ], + "properties": { + "deletionPolicy": { + "type": "string" + }, + "failureDeadline": { + "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", + "type": "string" + }, + "source": { + "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" + } + } + } + } + }, + "status": { + "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "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" + }, + "error": { + "description": "Error is the last error encountered during the snapshot/restore", + "type": "object", + "properties": { + "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" + } + } + }, + "indications": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "phase": { + "type": "string" + }, + "readyToUse": { + "type": "boolean" + }, + "snapshotVolumes": { + "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "type": "object", + "properties": { + "excludedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "includedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + } + } + }, + "sourceUID": { + "type": "string" + }, + "virtualMachineSnapshotContentName": { + "type": "string" + } + }, + "x-nullable": true + } + } + } + }, + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", + "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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "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": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", + "type": "object", + "required": [ + "source" + ], + "properties": { + "deletionPolicy": { + "type": "string" + }, + "failureDeadline": { + "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", + "type": "string" + }, + "source": { + "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" + } + } + } + } + }, + "status": { + "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "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" + }, + "error": { + "description": "Error is the last error encountered during the snapshot/restore", + "type": "object", + "properties": { + "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" + } + } + }, + "indications": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "phase": { + "type": "string" + }, + "readyToUse": { + "type": "boolean" + }, + "snapshotVolumes": { + "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "type": "object", + "properties": { + "excludedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "includedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + } + } + }, + "sourceUID": { + "type": "string" + }, + "virtualMachineSnapshotContentName": { + "type": "string" + } + }, + "x-nullable": true + } + } + } + } } - } - }, - "v1FilterVersionString": { - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "eq": { + }, + "delete": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Delete the snapshot of virtual machine", + "operationId": "v1VMSnapshotDelete", + "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", - "x-nullable": true + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "gt": { + { "type": "string", - "x-nullable": true + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true }, - "lt": { + { "type": "string", - "x-nullable": true + "description": "Snapshot name", + "name": "snapshotName", + "in": "path", + "required": true }, - "ne": { + { "type": "string", - "x-nullable": true - } - }, - "type": "object" - }, - "v1FiltersMetadata": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1FilterMetadata" - }, - "type": "array", - "uniqueItems": true + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true } - }, - "required": [ - "items" - ], - "type": "object" + ] }, - "v1FiltersSummary": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1FilterSummary" + "/v1/spectroclusters/{uid}/vms/{vmName}/start": { + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Start the virtual machine", + "operationId": "v1SpectroClustersVMStart", + "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" + } + } + } } }, - "required": [ - "items" - ], - "type": "object" - }, - "v1FipsSettings": { - "description": "FIPS configuration", - "properties": { - "fipsClusterFeatureConfig": { - "$ref": "#/definitions/v1NonFipsConfig" + "parameters": [ + { + "type": "string", + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "fipsClusterImportConfig": { - "$ref": "#/definitions/v1NonFipsConfig" + { + "type": "string", + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true }, - "fipsPackConfig": { - "$ref": "#/definitions/v1NonFipsConfig" + { + "type": "string", + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true } - } + ] }, - "v1FreemiumUsage": { - "properties": { - "usage": { - "format": "float64", - "type": "number", - "x-omitempty": false + "/v1/spectroclusters/{uid}/vms/{vmName}/stop": { + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Stop the virtual machine", + "operationId": "v1SpectroClustersVMStop", + "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" - }, - "v1FreemiumUsageLimit": { - "properties": { - "activeClusters": { - "type": "integer", - "x-omitempty": false + "parameters": [ + { + "type": "string", + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "overageUsage": { - "type": "number", - "x-omitempty": false + { + "type": "string", + "description": "Virtual Machine name", + "name": "vmName", + "in": "path", + "required": true }, - "usage": { - "format": "float64", - "type": "number", - "x-omitempty": false + { + "type": "string", + "description": "Namespace name", + "name": "namespace", + "in": "query", + "required": true + } + ] + }, + "/v1/spectroclusters/{uid}/workloads/sync": { + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "Sync specified cluster workload", + "tags": [ + "spectroclusters" + ], + "summary": "Sync specified cluster workload", + "operationId": "v1SpectroClustersUidWorkloadsSync", + "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" - }, - "v1GPUConfig": { - "properties": { - "addresses": { - "additionalProperties": { - "type": "string" - }, - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- > 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object" - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "format": "int32", - "type": "integer" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1GPUDeviceSpec": { - "properties": { - "addresses": { - "additionalProperties": { - "type": "string" + "/v1/spectroclusters/{uid}/workloads/{workloadKind}/sync": { + "post": { + "security": [ + { + "ApiKey": [] }, - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- > 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object" - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ], + "summary": "Sync specified cluster workload", + "operationId": "v1SpectroClustersUidWorkloadsKindSync", + "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" - }, - "v1GcpAccount": { - "description": "GCP account information", - "properties": { - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1GcpAccountSpec" + "parameters": [ + { + "type": "string", + "description": "Cluster uid", + "name": "uid", + "in": "path", + "required": true }, - "status": { - "$ref": "#/definitions/v1CloudAccountStatus" + { + "enum": [ + "namespace", + "pod", + "deployment", + "statefulset", + "daemonset", + "job", + "cronjob", + "rolebinding", + "clusterrolebinding" + ], + "type": "string", + "description": "Workload kind", + "name": "workloadKind", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1GcpAccountEntity": { - "description": "GCP account information", - "properties": { - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1GcpAccountEntitySpec" - }, - "status": { - "$ref": "#/definitions/v1CloudAccountStatus" + "/v1/system/config/reverseproxy": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "system" + ], + "summary": "get the system config reverse proxy", + "operationId": "V1SystemConfigReverseProxyGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "system config reverse proxy", + "properties": { + "caCert": { + "type": "string" + }, + "clientCert": { + "type": "string" + }, + "clientKey": { + "type": "string" + }, + "port": { + "type": "integer" + }, + "protocol": { + "type": "string", + "enum": [ + "http", + "https" + ] + }, + "server": { + "type": "string" + }, + "vHostPort": { + "type": "integer" + } + } + } + } } }, - "type": "object" + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "system" + ], + "summary": "updates the system config reverse proxy", + "operationId": "V1SystemConfigReverseProxyUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "description": "system config reverse proxy", + "properties": { + "caCert": { + "type": "string" + }, + "clientCert": { + "type": "string" + }, + "clientKey": { + "type": "string" + }, + "port": { + "type": "integer" + }, + "protocol": { + "type": "string", + "enum": [ + "http", + "https" + ] + }, + "server": { + "type": "string" + }, + "vHostPort": { + "type": "integer" + } + } + } + } + ], + "responses": { + "204": { + "description": "(empty)", + "schema": { + "description": "The resource was updated successfully" + } + } + } + } }, - "v1GcpAccountEntitySpec": { - "properties": { - "jsonCredentials": { - "description": "Gcp cloud account json credentials", - "type": "string" - }, - "jsonCredentialsFileUid": { - "description": "Reference of the credentials stored in the file", - "type": "string" + "/v1/system/passwords/blocklist": { + "delete": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "system" + ], + "summary": "Delete a list of block listed passwords", + "operationId": "V1PasswordsBlockListDelete", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "description": "List of blocklisted passwords", + "type": "object", + "properties": { + "spec": { + "description": "List of block listed passwords", + "type": "object", + "properties": { + "passwords": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } }, - "type": "object" + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "system" + ], + "summary": "List of block listed passwords", + "operationId": "V1PasswordsBlockListUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "description": "List of blocklisted passwords", + "type": "object", + "properties": { + "spec": { + "description": "List of block listed passwords", + "type": "object", + "properties": { + "passwords": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "(empty)", + "schema": { + "description": "The resource was updated successfully" + } + } + } + } }, - "v1GcpAccountNameValidateSpec": { - "description": "Gcp cloud account name validate spec", - "properties": { - "bucketName": { - "description": "Bucket name in the GCP", - "type": "string" - }, - "credentials": { - "$ref": "#/definitions/v1GcpAccountValidateSpec" - }, - "projectId": { - "description": "ProjectId in the GCP", - "type": "string" + "/v1/teams": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Retrieves a list of teams", + "operationId": "v1TeamsList", + "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 teams", + "schema": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Team 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": "Team specifications", + "properties": { + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "sources": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "status": { + "description": "Team 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 + } + } + } + } + } + } } }, - "required": [ - "credentials", - "bucketName" - ], - "type": "object" + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Creates a team with the specified users and roles", + "operationId": "v1TeamsCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Team 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": "Team specifications", + "properties": { + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "sources": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "status": { + "description": "Team status", + "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" + } + } + } + } + } }, - "v1GcpAccountSpec": { - "properties": { - "jsonCredentials": { - "description": "Gcp cloud account json credentials", - "type": "string" - }, - "jsonCredentialsFileName": { - "description": "Reference of the credentials stored in the file", - "type": "string" + "/v1/teams/summary": { + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Retrieves a list of teams summary with provided filter spec", + "operationId": "v1TeamsSummaryGet", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Teams filter summary spec", + "properties": { + "filter": { + "description": "Teams 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" + ], + "x-nullable": true + }, + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "An array of teams summary items", + "schema": { + "description": "Returns Team summary", + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Team 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": { + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "roles": { + "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": "Team status", + "type": "object" + } + } + } + } + } + } + } } - }, - "type": "object" + } }, - "v1GcpAccountValidateSpec": { - "description": "Gcp cloud account entity which takes json credentials or reference to the file where credentials are stored", - "properties": { - "jsonCredentials": { - "description": "Gcp cloud account json credentials", - "type": "string" - }, - "jsonCredentialsFileUid": { - "description": "Reference of the credentials stored in the file", - "type": "string" + "/v1/teams/{uid}": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Returns the sepcified team", + "operationId": "v1TeamsUidGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "Team 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": "Team specifications", + "properties": { + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "sources": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "status": { + "description": "Team status", + "type": "object" + } + } + } + } } }, - "type": "object" - }, - "v1GcpAccounts": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1GcpAccount" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Updates the sepcified team", + "operationId": "v1TeamsUidUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Team 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": "Team specifications", + "properties": { + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "sources": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "status": { + "description": "Team status", + "type": "object" + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "required": [ - "items" - ], - "type": "object" - }, - "v1GcpCloudAccountValidateEntity": { - "description": "Gcp cloud account spec", - "properties": { - "spec": { - "$ref": "#/definitions/v1GcpAccountValidateSpec" + "delete": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Deletes the specified team", + "operationId": "v1TeamsUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } }, - "type": "object" - }, - "v1GcpCloudClusterConfigEntity": { - "description": "Gcp cloud cluster config entity", - "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1GcpClusterConfig" + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Patches the specified team", + "operationId": "v1TeamsUidPatch", + "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" + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1GcpCloudConfig": { - "description": "GcpCloudConfig is the Schema for the gcpcloudconfigs 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/v1GcpCloudConfigSpec" - }, - "status": { - "$ref": "#/definitions/v1GcpCloudConfigStatus" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1GcpCloudConfigSpec": { - "description": "GcpCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "properties": { - "cloudAccountRef": { - "$ref": "#/definitions/v1ObjectReference", - "description": "cloudAccountRef should point to the secret which contains GcpCloudAccount" - }, - "clusterConfig": { - "$ref": "#/definitions/v1GcpClusterConfig" - }, - "machinePoolConfig": { - "items": { - "$ref": "#/definitions/v1GcpMachinePoolConfig" + "/v1/teams/{uid}/projects": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Returns the specified team's project and roles data", + "operationId": "v1TeamsProjectRoles", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "inheritedRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "uid": { + "type": "string" + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1GcpCloudConfigStatus": { - "description": "GcpCloudConfigStatus defines the observed state of GcpCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "properties": { - "ansibleRoleDigest": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - }, - "conditions": { - "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", - "items": { - "$ref": "#/definitions/v1ClusterCondition" - }, - "type": "array" - }, - "images": { - "$ref": "#/definitions/v1GcpImage", - "description": "Images array items should be 1-to-1 mapping to Spec.MachinePoolConfig" - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "roleDigest": { - "additionalProperties": { - "type": "string" + "put": { + "security": [ + { + "ApiKey": [] }, - "description": "this map will be for ansible roles present in each pack", - "type": "object" - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Updates the projects and roles for the specified team", + "operationId": "v1TeamsProjectRolesPut", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "projectUid": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1GcpClusterConfig": { - "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools", - "properties": { - "managedClusterConfig": { - "$ref": "#/definitions/v1GcpManagedClusterConfig" - }, - "network": { - "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used", - "type": "string" - }, - "project": { - "description": "Name of the project in which cluster is to be deployed", - "type": "string" - }, - "region": { - "description": "GCP region for the cluster", - "type": "string" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true } - }, - "required": [ - "project", - "region" - ], - "type": "object" + ] }, - "v1GcpImage": { - "description": "Refers to GCP image", - "properties": { - "name": { - "type": "string" - }, - "os": { - "type": "string" - }, - "region": { - "type": "string" - }, - "state": { - "type": "string" + "/v1/teams/{uid}/resourceRoles": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "Returns resource roles for team", + "tags": [ + "teams" + ], + "summary": "Returns the specified individual and resource roles for a team", + "operationId": "v1TeamsUidResourceRoles", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "resourceRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "filterRefs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "projectUids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "uid": { + "type": "string" + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1GcpImageUrlEntity": { - "description": "Gcp image url entity", - "properties": { - "imageFamily": { - "description": "The name of the image family to which this image belongs", - "type": "string" - }, - "imageUrl": { - "description": "Server-defined URL for the resource", - "type": "string" - }, - "name": { - "description": "Name of the resource", - "type": "string" + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "Resource roles added to specific team", + "tags": [ + "teams" + ], + "summary": "Add resource roles for team", + "operationId": "v1TeamsUidResourceRolesCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "filterRefs": { + "type": "array", + "items": { + "type": "string" + } + }, + "projectUids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1GcpInstanceTypes": { - "description": "Retrieves a list of GCP instance types", - "properties": { - "instanceTypes": { - "description": "List of GCP instance types", - "items": { - "$ref": "#/definitions/v1InstanceType" + "/v1/teams/{uid}/resourceRoles/{resourceRoleUid}": { + "delete": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Deleted the resource roles from team", + "operationId": "v1TeamsUidResourceRolesUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } }, - "type": "object" - }, - "v1GcpMachine": { - "description": "GCP cloud VM definition", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1GcpMachineSpec" - }, - "status": { - "$ref": "#/definitions/v1CloudMachineStatus" + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "Specific resource roles fo team is updated", + "tags": [ + "teams" + ], + "summary": "Updates the resource roles for team", + "operationId": "v1TeamsResourceRolesUidUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "filterRefs": { + "type": "array", + "items": { + "type": "string" + } + }, + "projectUids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1GcpMachinePoolCloudConfigEntity": { - "properties": { - "azs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "instanceType": { - "type": "string" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "format": "int64", - "type": "integer" - }, - "subnet": { - "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used", - "type": "string" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true }, - "subnets": { - "items": { - "$ref": "#/definitions/v1GcpSubnetEntity" - }, - "type": "array" + { + "type": "string", + "name": "resourceRoleUid", + "in": "path", + "required": true } - }, - "required": [ - "instanceType" - ], - "type": "object" + ] }, - "v1GcpMachinePoolConfig": { - "properties": { - "additionalLabels": { - "additionalProperties": { - "type": "string" - }, - "description": "additionalLabels", - "type": "object" - }, - "additionalTags": { - "additionalProperties": { - "type": "string" - }, - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object" - }, - "azs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "instanceConfig": { - "$ref": "#/definitions/v1InstanceConfig" - }, - "instanceType": { - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: master/worker, gpu, windows", - "items": { - "type": "string" - }, - "type": "array" - }, - "machinePoolProperties": { - "$ref": "#/definitions/v1MachinePoolProperties" - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "format": "int32", - "type": "integer" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "format": "int32", - "type": "integer" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "format": "int32", - "type": "integer" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "format": "int64", - "type": "integer" - }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", - "type": "integer" - }, - "subnet": { - "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used", - "type": "string" - }, - "subnetIds": { - "additionalProperties": { - "type": "string" - }, - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", - "type": "object" - }, - "taints": { - "description": "master or worker taints", - "items": { - "$ref": "#/definitions/v1Taint" - }, - "type": "array", - "uniqueItems": true - }, - "updateStrategy": { - "$ref": "#/definitions/v1UpdateStrategy", - "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", - "type": "boolean" + "/v1/teams/{uid}/roles": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Returns the specified team's tenant roles", + "operationId": "V1TeamsUidTenantRolesGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + } + } + } + } } }, - "required": [ - "isControlPlane", - "instanceType" - ], - "type": "object" - }, - "v1GcpMachinePoolConfigEntity": { - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1GcpMachinePoolCloudConfigEntity" - }, - "poolConfig": { - "$ref": "#/definitions/v1MachinePoolConfigEntity" + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "teams" + ], + "summary": "Updates the tenant roles of the specified team", + "operationId": "V1TeamsUidTenantRolesUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "required": [ - "cloudConfig" - ], - "type": "object" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1GcpMachineSpec": { - "description": "GCP cloud VM definition spec", - "properties": { - "image": { - "type": "string" - }, - "instanceConfig": { - "$ref": "#/definitions/v1InstanceConfig" - }, - "instanceType": { - "type": "string" - }, - "nics": { - "items": { - "$ref": "#/definitions/v1GcpNic" + "/v1/tenants/{tenantUid}/address": { + "patch": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "project": { - "type": "string" - }, - "region": { - "type": "string" - }, - "rootDeviceSize": { - "format": "int64", - "type": "integer" - }, - "zone": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Update tenant address", + "operationId": "v1PatchTenantAddress", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Tenant Address", + "type": "object", + "properties": { + "address": { + "description": "Tenant Address", + "type": "object", + "properties": { + "addressLine1": { + "type": "string" + }, + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "required": [ - "instanceType" - ], - "type": "object" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true + } + ] }, - "v1GcpMachines": { - "description": "GCP machine list", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1GcpMachine" + "/v1/tenants/{tenantUid}/assets/certs": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "lists the certificates for the tenant", + "operationId": "V1TenantUIdAssetsCertsList", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tenant cert", + "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": { + "certificate": { + "type": "string", + "x-omitempty": false + }, + "isCA": { + "type": "boolean", + "x-omitempty": false + }, + "key": { + "type": "string", + "x-omitempty": false + } + } + } + } + } + } + } + } + } } }, - "required": [ - "items" - ], - "type": "object" - }, - "v1GcpManagedClusterConfig": { - "description": "GCP managed cluster config", - "properties": { - "enableAutoPilot": { - "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster", - "type": "boolean" - }, - "location": { - "description": "Can be Region or Zone", - "type": "string" + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "create the tenant certificate", + "operationId": "V1TenantUidAssetsCertsCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "tenant cert", + "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": { + "certificate": { + "type": "string", + "x-omitempty": false + }, + "isCA": { + "type": "boolean", + "x-omitempty": false + }, + "key": { + "type": "string", + "x-omitempty": false + } + } + } + } + } + } + ], + "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", + "name": "tenantUid", + "in": "path", + "required": true + } + ] }, - "v1GcpNetwork": { - "description": "GCP network enity is a virtual version of a physical network", - "properties": { - "name": { - "description": "GCP network name", - "type": "string" - }, - "subnets": { - "description": "List of GCP subnet", - "items": { - "$ref": "#/definitions/v1GcpSubnet" + "/v1/tenants/{tenantUid}/assets/certs/{certificateUid}": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Returns the ca certificate for the tenant", + "operationId": "V1TenantUidAssetsCertsUidGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "tenant cert", + "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": { + "certificate": { + "type": "string", + "x-omitempty": false + }, + "isCA": { + "type": "boolean", + "x-omitempty": false + }, + "key": { + "type": "string", + "x-omitempty": false + } + } + } + } + } + } } }, - "type": "object" - }, - "v1GcpNetworks": { - "description": "List of GCP networks", - "properties": { - "networks": { - "items": { - "$ref": "#/definitions/v1GcpNetwork" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "updates the tenant certificate", + "operationId": "V1TenantUidAssetsCertsUidUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "tenant cert", + "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": { + "certificate": { + "type": "string", + "x-omitempty": false + }, + "isCA": { + "type": "boolean", + "x-omitempty": false + }, + "key": { + "type": "string", + "x-omitempty": false + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1GcpNic": { - "description": "GCP network interface", - "properties": { - "index": { - "format": "int8", - "type": "integer" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "items": { - "type": "string" + "delete": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "publicIp": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "deletes the tenant certificate", + "operationId": "V1TenantUidAssetsCertsUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } }, - "type": "object" - }, - "v1GcpProject": { - "description": "GCP project organizes all Google Cloud resources", - "properties": { - "id": { - "description": "GCP project id", - "type": "string" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true }, - "name": { - "description": "GCP project name", - "type": "string" + { + "type": "string", + "name": "certificateUid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1GcpProjects": { - "description": "List of GCP Projects", - "properties": { - "projects": { - "description": "List of GCP Projects", - "items": { - "$ref": "#/definitions/v1GcpProject" + "/v1/tenants/{tenantUid}/assets/dataSinks": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Returns data sink config of tenant", + "operationId": "V1TenantUidAssetsDataSinksGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "Data sink", + "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": { + "auditDataSinks": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "cloudWatch": { + "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": { + "type": "string" + }, + "region": { + "type": "string" + }, + "stream": { + "type": "string" + } + } + }, + "type": { + "type": "string", + "enum": [ + "cloudwatch" + ] + } + } + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1GcpRegion": { - "description": "Geographical region made up of zones where you can host your GCP resources", - "properties": { - "name": { - "description": "GCP region name", - "type": "string" - }, - "status": { - "description": "GCP region status", - "type": "string" + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "updates the tenant data sink config", + "operationId": "V1TenantUidAssetsDataSinksUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Data sink", + "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": { + "auditDataSinks": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "cloudWatch": { + "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": { + "type": "string" + }, + "region": { + "type": "string" + }, + "stream": { + "type": "string" + } + } + }, + "type": { + "type": "string", + "enum": [ + "cloudwatch" + ] + } + } + } + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1GcpRegions": { - "description": "List of GCP Regions", - "properties": { - "regions": { - "items": { - "$ref": "#/definitions/v1GcpRegion" + "post": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "create data sink config", + "operationId": "V1TenantUidAssetsDataSinksCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Data sink", + "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": { + "auditDataSinks": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "cloudWatch": { + "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": { + "type": "string" + }, + "region": { + "type": "string" + }, + "stream": { + "type": "string" + } + } + }, + "type": { + "type": "string", + "enum": [ + "cloudwatch" + ] + } + } + } + } + } + } + } + } + } + ], + "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" - }, - "v1GcpStorageConfig": { - "description": "GCP storage config object", - "properties": { - "bucketName": { - "description": "GCP storage bucket name", - "type": "string" - }, - "credentials": { - "$ref": "#/definitions/v1.GcpAccountEntitySpec", - "description": "GCP cloud account credentials" + "delete": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "deletes the tenant data sink config", + "operationId": "V1TenantUidAssetsDataSinksDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } }, - "required": [ - "bucketName", - "credentials" - ], - "type": "object" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true + } + ] }, - "v1GcpStorageTypes": { - "description": "List of GCP storage types", - "properties": { - "storageTypes": { - "items": { - "$ref": "#/definitions/v1StorageType" + "/v1/tenants/{tenantUid}/authTokenSettings": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Get tenant auth token settings", + "operationId": "v1TenantUidAuthTokenSettingsGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "System auth token settings", + "properties": { + "expiryTimeMinutes": { + "description": "Auth token expiry time in minutes", + "type": "integer", + "format": "int32", + "maximum": 1440, + "minimum": 15, + "x-omitempty": false + } + } + } + } } }, - "type": "object" - }, - "v1GcpSubnet": { - "description": "Subnets are regional resources, and have IP address ranges associated with them", - "properties": { - "id": { - "description": "GCP subnet id", - "type": "string" - }, - "name": { - "description": "GCP subnet name", - "type": "string" + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Update tenant auth token settings", + "operationId": "v1TenantUidAuthTokenSettingsUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "System auth token settings", + "properties": { + "expiryTimeMinutes": { + "description": "Auth token expiry time in minutes", + "type": "integer", + "format": "int32", + "maximum": 1440, + "minimum": 15, + "x-omitempty": false + } + } + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "type": "string", + "description": "Audit uid for the request" + } + } + } } }, - "type": "object" - }, - "v1GcpSubnetEntity": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - } + ] }, - "v1GcpZone": { - "description": "A zone is a deployment area for Google Cloud resources within a region", - "properties": { - "name": { - "description": "GCP zone name", - "type": "string" + "/v1/tenants/{tenantUid}/contract/accept": { + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Tenant to accept the contract agreement", + "operationId": "v1TenantsUidContractAccept", + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "type": "string", + "description": "Audit uid for the request" + } + } + } } }, - "type": "object" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true + } + ] }, - "v1GcpZones": { - "description": "List of GCP zones", - "properties": { - "zones": { - "items": { - "$ref": "#/definitions/v1GcpZone" + "/v1/tenants/{tenantUid}/creditAccount/aws": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Get the credit accounts for the tenants with free tier access", + "operationId": "v1TenantsCreditAccountGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "creditLimitInDollars": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "creditUsedInDollars": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "loginCredentials": { + "type": "object", + "properties": { + "iamUser": { + "type": "string" + }, + "password": { + "type": "string", + "format": "password" + } + } + }, + "userCloudAccount": { + "properties": { + "accountId": { + "type": "string" + }, + "cloudAccount": { + "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": "object" - }, - "v1GenericCloudClusterConfigEntity": { - "description": "Generic cloud cluster config entity", - "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1GenericClusterConfig" + "delete": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Deletes the aws credit account for tenants", + "operationId": "v1TenantsCreditAccountDelete", + "parameters": [ + { + "type": "boolean", + "default": false, + "name": "forceDelete", + "in": "query" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } }, - "type": "object" - }, - "v1GenericCloudConfig": { - "description": "Generic CloudConfig for all cloud types", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1GenericCloudConfigSpec" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - } + ] }, - "v1GenericCloudConfigSpec": { - "description": "Generic CloudConfig spec for all cloud types", - "properties": { - "cloudAccountRef": { - "$ref": "#/definitions/v1ObjectReference", - "description": "Cloud account reference is optional and dynamically handled based on the kind" - }, - "clusterConfig": { - "$ref": "#/definitions/v1GenericClusterConfig" - }, - "edgeHostRefs": { - "description": "Appliances (Edge Host) uids", - "items": { - "$ref": "#/definitions/v1ObjectReference" - }, - "type": "array" - }, - "machinePoolConfig": { - "items": { - "$ref": "#/definitions/v1GenericMachinePoolConfig" + "/v1/tenants/{tenantUid}/domains": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "retrieves the domains for tenant", + "operationId": "V1TenantUidDomainsGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "Tenant domains", + "type": "object", + "properties": { + "domains": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + } + } } }, - "type": "object" - }, - "v1GenericClusterConfig": { - "description": "Generic cluster config", - "properties": { - "instanceType": { - "$ref": "#/definitions/v1GenericInstanceType" - }, - "region": { - "description": "cluster region information", - "type": "string" + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "creates or updates domains for tenant", + "operationId": "V1TenantUidDomainsUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Tenant domains", + "type": "object", + "properties": { + "domains": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true + } + ] }, - "v1GenericInstanceType": { - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "format": "int32", - "type": "integer" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "format": "int64", - "type": "integer" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "format": "int32", - "type": "integer" + "/v1/tenants/{tenantUid}/emailId": { + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Update tenant emailId", + "operationId": "v1PatchTenantEmailId", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Tenant EmailId", + "type": "object", + "properties": { + "emailId": { + "type": "string" + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1GenericMachine": { - "description": "Generic cloud VM definition", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1GenericMachineSpec" - }, - "status": { - "$ref": "#/definitions/v1CloudMachineStatus" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - } + ] }, - "v1GenericMachinePoolConfig": { - "properties": { - "instanceType": { - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: master/worker, gpu, windows", - "items": { - "type": "string" + "/v1/tenants/{tenantUid}/freemium": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "name": { - "type": "string" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "format": "int64", - "type": "integer" - }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", - "type": "integer" - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", - "type": "boolean" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Get tenant level freemium configuration", + "operationId": "v1TenantFreemiumGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "Tenant freemium configuration", + "properties": { + "activeClustersLimit": { + "type": "integer", + "x-omitempty": false + }, + "isFreemium": { + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "type": "boolean", + "x-omitempty": false + }, + "overageUsageLimit": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "totalUsageLimit": { + "type": "number", + "format": "float64", + "x-omitempty": false + } + } + } + } } }, - "required": [ - "isControlPlane" - ], - "type": "object" - }, - "v1GenericMachinePoolConfigEntity": { - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1GenericClusterConfig" - }, - "poolConfig": { - "$ref": "#/definitions/v1MachinePoolConfigEntity" - } - } - }, - "v1GenericMachineSpec": { - "description": "Generic cloud VM definition spec", - "properties": { - "hostName": { - "type": "string" - }, - "imageId": { - "type": "string" - }, - "instanceType": { - "$ref": "#/definitions/v1GenericInstanceType" - }, - "nics": { - "items": { - "$ref": "#/definitions/v1GenericNic" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "sshKeyName": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Update tenant freemium configuration", + "operationId": "v1TenantFreemiumUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Tenant freemium configuration", + "properties": { + "activeClustersLimit": { + "type": "integer", + "x-omitempty": false + }, + "isFreemium": { + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "type": "boolean", + "x-omitempty": false + }, + "overageUsageLimit": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "totalUsageLimit": { + "type": "number", + "format": "float64", + "x-omitempty": false + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } - } + }, + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true + } + ] }, - "v1GenericMachines": { - "description": "Generic machine list", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1GenericMachine" + "/v1/tenants/{tenantUid}/freemiumUsage": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Get tenant freemium usage", + "operationId": "v1TenantFreemiumUsageGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "isFreemium": { + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "type": "boolean", + "x-omitempty": false + }, + "limit": { + "type": "object", + "properties": { + "activeClusters": { + "type": "integer", + "x-omitempty": false + }, + "overageUsage": { + "type": "number", + "x-omitempty": false + }, + "usage": { + "type": "number", + "format": "float64", + "x-omitempty": false + } + } + }, + "usage": { + "type": "object", + "properties": { + "usage": { + "type": "number", + "format": "float64", + "x-omitempty": false + } + } + } + } + } + } } }, - "required": [ - "items" - ], - "type": "object" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true + } + ] }, - "v1GenericNic": { - "description": "Generic network interface", - "properties": { - "index": { - "format": "int8", - "type": "integer" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "items": { - "type": "string" + "/v1/tenants/{tenantUid}/invoices/{invoiceUid}": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "publicIp": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Returns a specified invoice", + "operationId": "v1InvoicesUidGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "Invoice 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": "Invoice specification", + "properties": { + "address": { + "description": "Tenant Address", + "type": "object", + "properties": { + "addressLine1": { + "type": "string" + }, + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "billingPeriod": { + "description": "Invoice billing period object", + "properties": { + "end": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "credits": { + "description": "Invoice credits object", + "properties": { + "alloyFreeCredits": { + "description": "Credits allocated for import clusters", + "type": "number", + "format": "int64" + }, + "pureFreeCredits": { + "description": "Credits allocated for managed clusters", + "type": "number", + "format": "int64" + } + } + }, + "envType": { + "description": "Environment type [Trial,MonthlyOnDemand,AnnualSubscription,OnPrem]", + "type": "string" + }, + "month": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "paymentUnit": { + "type": "string", + "enum": [ + "usd" + ] + }, + "plan": { + "description": "Invoice plan object", + "properties": { + "freeCredits": { + "description": "List of free credits", + "type": "array", + "items": { + "description": "Invoice plan credit object", + "properties": { + "planCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + }, + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "type": "number", + "format": "int64" + } + } + } + }, + "plantype": { + "type": "string", + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + }, + "slaCredits": { + "description": "List of SLA credits", + "type": "array", + "items": { + "description": "Invoice plan credit object", + "properties": { + "planCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + }, + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "type": "number", + "format": "int64" + } + } + } + } + } + } + } + }, + "status": { + "description": "Invoice Status", + "properties": { + "billableAmount": { + "description": "Total billable amount", + "type": "number", + "format": "float64" + }, + "productInvoice": { + "description": "Product invoice object", + "properties": { + "alloy": { + "description": "Product invoice data", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "amount": { + "description": "Total amount", + "type": "number", + "format": "float64" + }, + "billableCredits": { + "description": "Credits to be billed", + "type": "number", + "format": "float64" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "type": "number", + "format": "float64" + }, + "discount": { + "description": "Applied discount", + "type": "number", + "format": "int64" + }, + "freeCredits": { + "description": "Allocated free credits", + "type": "number", + "format": "int64" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "type": "number", + "format": "int8" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "type": "number", + "format": "float64" + }, + "totalUsedCredits": { + "description": "Total used credits", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + }, + "pure": { + "description": "Product invoice data", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "amount": { + "description": "Total amount", + "type": "number", + "format": "float64" + }, + "billableCredits": { + "description": "Credits to be billed", + "type": "number", + "format": "float64" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "type": "number", + "format": "float64" + }, + "discount": { + "description": "Applied discount", + "type": "number", + "format": "int64" + }, + "freeCredits": { + "description": "Allocated free credits", + "type": "number", + "format": "int64" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "type": "number", + "format": "int8" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "type": "number", + "format": "float64" + }, + "totalUsedCredits": { + "description": "Total used credits", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + } + } + }, + "projects": { + "description": "List of project invoices", + "type": "array", + "items": { + "description": "Invoice project object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "projectName": { + "description": "Name of the project", + "type": "string" + }, + "projectUid": { + "description": "Project identifier", + "type": "string" + }, + "usage": { + "description": "Project usage object", + "properties": { + "alloy": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" + } + } + }, + "pure": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" + } + } + } + } + } + } + } + }, + "states": { + "description": "List of invoice states", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Invoice state object", + "properties": { + "paymentMsg": { + "description": "Payment status message", + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "Paid", + "PaymentPending", + "PaymentInProgress", + "PaymentFailed" + ] + }, + "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" + } + } + } + }, + "stripeInvoiceId": { + "description": "Stripe invoice uid", + "type": "string" + } + } + } + } + } + } } }, - "type": "object" - }, - "v1GeolocationLatlong": { - "description": "Geolocation Latlong entity", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "format": "float64", - "type": "number", - "x-omitempty": false + "parameters": [ + { + "type": "string", + "description": "Specify the tenant uid", + "name": "tenantUid", + "in": "path", + "required": true }, - "longitude": { - "description": "Longitude of a resource", - "format": "float64", - "type": "number", - "x-omitempty": false + { + "type": "string", + "description": "Specify the invoice uid", + "name": "invoiceUid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1GitRepoFileContent": { - "properties": { - "content": { - "type": "string" - }, - "name": { - "type": "string" - }, - "path": { - "type": "string" - }, - "repoName": { - "type": "string" - }, - "sha": { - "type": "string" + "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/invoice/pdf": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "produces": [ + "application/octet-stream" + ], + "tags": [ + "tenants" + ], + "summary": "Downloads the specified invoice report", + "operationId": "V1InvoiceUidReportInvoicePdf", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "file" + }, + "headers": { + "Content-Disposition": { + "type": "string" + }, + "Content-Type": { + "type": "string" + } + } + } } }, - "type": "object" - }, - "v1GrpcClientMonitoringData": { - "properties": { - "clientUid": { - "type": "string" - }, - "receivedBroadcastCount": { - "type": "integer" - }, - "receivedPublishedCount": { - "type": "integer" - }, - "sentBroadcastCount": { - "type": "integer" - }, - "sentPublishedCount": { - "type": "integer" + "parameters": [ + { + "type": "string", + "description": "Specify the tenant uid", + "name": "tenantUid", + "in": "path", + "required": true }, - "subjects": { - "items": { - "type": "string" - }, - "type": "array" + { + "type": "string", + "description": "Specify the invoice uid", + "name": "invoiceUid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1GrpcConfiguration": { - "description": "Describes the response that contains the grpc configuration to establish connection", - "properties": { - "preferredServer": { - "$ref": "#/definitions/v1GrpcEndpoint" - }, - "servers": { - "items": { - "$ref": "#/definitions/v1GrpcEndpoint" + "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/pdf": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true + { + "Authorization": [] + } + ], + "produces": [ + "application/octet-stream" + ], + "tags": [ + "tenants" + ], + "summary": "Downloads the specified monthly invoice report", + "operationId": "V1InvoiceUidReportPdf", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "file" + }, + "headers": { + "Content-Disposition": { + "type": "string" + }, + "Content-Type": { + "type": "string" + } + } + } } }, - "type": "object" - }, - "v1GrpcEndpoint": { - "properties": { - "endpoint": { - "description": "Describes the URL where the client has to connect to the grpc server", - "type": "string" + "parameters": [ + { + "type": "string", + "description": "Specify the tenant uid", + "name": "tenantUid", + "in": "path", + "required": true }, - "tls": { - "description": "Describes the Grpc tls config which client will use to make a request to the grpc server", - "properties": { - "caCert": { - "type": "string" - }, - "enabled": { - "type": "boolean" + { + "type": "string", + "description": "Specify the invoice uid", + "name": "invoiceUid", + "in": "path", + "required": true + } + ] + }, + "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/usage/pdf": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "produces": [ + "application/octet-stream" + ], + "tags": [ + "tenants" + ], + "summary": "Downloads the specified tenant usage", + "operationId": "V1InvoiceUidReportUsagePdf", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "file" }, - "insecureSkipVerify": { - "type": "boolean" + "headers": { + "Content-Disposition": { + "type": "string" + }, + "Content-Type": { + "type": "string" + } } - }, - "type": "object" + } } }, - "type": "object" - }, - "v1GrpcServerMonitoringData": { - "properties": { - "clients": { - "additionalProperties": { - "$ref": "#/definitions/v1GrpcClientMonitoringData" - }, - "type": "object" - }, - "isError": { - "type": "boolean" - }, - "messageLogs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "subjects": { - "additionalProperties": { - "$ref": "#/definitions/v1GrpcSubjectMonitoringData" - }, - "type": "object" - }, - "totalClients": { - "type": "integer" + "parameters": [ + { + "type": "string", + "description": "Specify the tenant uid", + "name": "tenantUid", + "in": "path", + "required": true }, - "totalSubjects": { - "type": "integer" + { + "type": "string", + "description": "Specify the invoice uid", + "name": "invoiceUid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1GrpcServersMonitoringData": { - "properties": { - "servers": { - "additionalProperties": { - "$ref": "#/definitions/v1GrpcServerMonitoringData" + "/v1/tenants/{tenantUid}/loginBanner": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "object" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Get tenant login banner settings", + "operationId": "v1TenantUidLoginBannerGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "properties": { + "Message": { + "description": "Login banner message displayed to the user", + "type": "string", + "x-omitempty": false + }, + "isEnabled": { + "description": "Set to 'true' if login banner has to be displayed for user", + "type": "boolean", + "x-omitempty": false + }, + "title": { + "description": "Banner title displayed to the user", + "type": "string", + "x-omitempty": false + } + } + } + } } }, - "type": "object" - }, - "v1GrpcSubjectMonitoringData": { - "properties": { - "broadcastCount": { - "type": "integer" - }, - "clients": { - "items": { - "type": "string" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "publishedCount": { - "type": "integer" - }, - "subject": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Update tenant login banner settings", + "operationId": "v1TenantUidLoginBannerUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "properties": { + "Message": { + "description": "Login banner message displayed to the user", + "type": "string", + "x-omitempty": false + }, + "isEnabled": { + "description": "Set to 'true' if login banner has to be displayed for user", + "type": "boolean", + "x-omitempty": false + }, + "title": { + "description": "Banner title displayed to the user", + "type": "string", + "x-omitempty": false + } + } + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "type": "string", + "description": "Audit uid for the request" + } + } + } } }, - "type": "object" - }, - "v1HealthCheck": { - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1HealthLocks": { - "properties": { - "expiredLocks": { - "items": { - "$ref": "#/definitions/v1Lock" + "/v1/tenants/{tenantUid}/macros": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "List the macros of the specified tenant", + "operationId": "v1TenantsUidMacrosList", + "responses": { + "200": { + "description": "OK", + "schema": { + "properties": { + "macros": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1HealthPing": { - "properties": { - "msg": { - "type": "string" + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Update the macros of the specified tenant", + "operationId": "v1TenantsUidMacrosUpdate", + "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" + } } }, - "type": "object" - }, - "v1HelmChartOption": { - "description": "If chart options are provided then the specified chart is validated first and synced immediately. If the specified chart is not found in the specified registry then creation is cancelled.", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Create or add new macros for the specified tenant", + "operationId": "v1TenantsUidMacrosCreate", + "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" + } } }, - "type": "object" - }, - "v1HelmRegistries": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1HelmRegistry" + "delete": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Delete the macros for the specified tenant by given macro name", + "operationId": "v1TenantsUidMacrosDeleteByMacroName", + "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" + } } }, - "required": [ - "items" - ], - "type": "object" - }, - "v1HelmRegistriesSummary": { - "description": "Helm Registries Summary", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1HelmRegistrySummary" + "patch": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Update the macros for the specified tenant by given macro name", + "operationId": "v1TenantsUidMacrosUpdateByMacroName", + "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" + } } }, - "required": [ - "items" - ], - "type": "object" - }, - "v1HelmRegistry": { - "description": "Helm registry information", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1HelmRegistrySpec" - }, - "status": { - "$ref": "#/definitions/v1HelmRegistryStatus" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1HelmRegistryCreateOption": { - "description": "Helm registry create options", - "properties": { - "charts": { - "items": { - "$ref": "#/definitions/v1HelmChartOption" + "/v1/tenants/{tenantUid}/oidc/config": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "skipSync": { - "type": "boolean" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Returns the oidc Spec for tenant", + "operationId": "V1TenantUidOidcConfigGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "Tenant", + "type": "object", + "properties": { + "callbackUrl": { + "type": "string", + "x-omitempty": false + }, + "clientId": { + "type": "string", + "x-omitempty": false + }, + "clientSecret": { + "type": "string", + "x-omitempty": false + }, + "defaultTeams": { + "type": "array", + "items": { + "type": "string" + }, + "x-omitempty": false + }, + "isSsoEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "issuerUrl": { + "description": "the issuer is the URL identifier for the service", + "type": "string", + "x-omitempty": false + }, + "logoutUrl": { + "type": "string", + "x-omitempty": false + }, + "requiredClaims": { + "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 + }, + "scopesDelimiter": { + "type": "string", + "x-omitempty": false + }, + "syncSsoTeams": { + "type": "boolean", + "x-omitempty": false + } + } + } + } } }, - "type": "object" - }, - "v1HelmRegistryEntity": { - "description": "Helm registry information", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1HelmRegistrySpecEntity" + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Associates the oidc Spec for the tenant", + "operationId": "V1TenantUidOidcConfigUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Tenant", + "type": "object", + "properties": { + "callbackUrl": { + "type": "string", + "x-omitempty": false + }, + "clientId": { + "type": "string", + "x-omitempty": false + }, + "clientSecret": { + "type": "string", + "x-omitempty": false + }, + "defaultTeams": { + "type": "array", + "items": { + "type": "string" + }, + "x-omitempty": false + }, + "isSsoEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "issuerUrl": { + "description": "the issuer is the URL identifier for the service", + "type": "string", + "x-omitempty": false + }, + "logoutUrl": { + "type": "string", + "x-omitempty": false + }, + "requiredClaims": { + "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 + }, + "scopesDelimiter": { + "type": "string", + "x-omitempty": false + }, + "syncSsoTeams": { + "type": "boolean", + "x-omitempty": false + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1HelmRegistrySpec": { - "description": "Helm registry credentials spec", - "properties": { - "auth": { - "$ref": "#/definitions/v1RegistryAuth" - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "registryUid": { - "description": "Helm registry uid", - "type": "string" - }, - "scope": { - "type": "string" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - }, - "required": [ - "endpoint", - "auth" - ], - "type": "object" + ] }, - "v1HelmRegistrySpecEntity": { - "description": "Helm registry credentials spec", - "properties": { - "auth": { - "$ref": "#/definitions/v1RegistryAuth" - }, - "createOption": { - "$ref": "#/definitions/v1HelmRegistryCreateOption" - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "scope": { - "type": "string" + "/v1/tenants/{tenantUid}/password/policy": { + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "creates or updates a password policy for tenant", + "operationId": "V1TenantUidPasswordPolicyUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Tenant Password Policy Entity", + "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" + }, + "expiryDurationInDays": { + "type": "integer" + }, + "firstReminderInDays": { + "type": "integer" + }, + "isRegex": { + "type": "boolean" + }, + "minLength": { + "type": "integer" + }, + "minNumOfBlockLetters": { + "type": "integer" + }, + "minNumOfDigits": { + "type": "integer" + }, + "minNumOfSmallLetters": { + "type": "integer" + }, + "minNumOfSpecialCharacters": { + "type": "integer" + }, + "regex": { + "type": "string" + }, + "updateTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ - "endpoint", - "auth" - ], - "type": "object" - }, - "v1HelmRegistrySpecSummary": { - "description": "Helm Registry spec summary", - "properties": { - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "scope": { - "type": "string" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1HelmRegistryStatus": { - "description": "Status of the helm registry", - "properties": { - "helmSyncStatus": { - "$ref": "#/definitions/v1RegistrySyncStatus" + "/v1/tenants/{tenantUid}/preferences/clusterGroup": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Get is cluster group enabled for a specific tenant", + "operationId": "V1TenantPrefClusterGroupGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "Enable or Disable cluster group for a tenant", + "properties": { + "hideSystemClusterGroups": { + "type": "boolean", + "x-omitempty": false + }, + "isClusterGroupEnabled": { + "description": "Deprecated. Use hideSystemClusterGroups field", + "type": "boolean", + "x-omitempty": false + } + } + } + } } }, - "type": "object" - }, - "v1HelmRegistryStatusSummary": { - "description": "Helm registry status summary", - "properties": { - "sync": { - "$ref": "#/definitions/v1RegistrySyncStatus" - } - } - }, - "v1HelmRegistrySummary": { - "description": "Helm Registry summary", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1HelmRegistrySpecSummary" - }, - "status": { - "$ref": "#/definitions/v1HelmRegistryStatusSummary" + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Enable or Disable cluster group for a specific tenant", + "operationId": "V1TenantPrefClusterGroupUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Enable or Disable cluster group for a tenant", + "properties": { + "hideSystemClusterGroups": { + "type": "boolean", + "x-omitempty": false + }, + "isClusterGroupEnabled": { + "description": "Deprecated. Use hideSystemClusterGroups field", + "type": "boolean", + "x-omitempty": false + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1HostClusterConfig": { - "properties": { - "clusterEndpoint": { - "$ref": "#/definitions/v1HostClusterEndpoint", - "description": "host cluster configuration" - }, - "clusterGroup": { - "$ref": "#/definitions/v1ObjectReference", - "description": "cluster group reference" - }, - "hostCluster": { - "$ref": "#/definitions/v1ObjectReference", - "description": "host cluster reference" - }, - "isHostCluster": { - "default": false, - "description": "is enabled as host cluster", - "type": "boolean", - "x-omitempty": false + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - } + ] }, - "v1HostClusterConfigEntity": { - "properties": { - "hostClusterConfig": { - "$ref": "#/definitions/v1HostClusterConfig" + "/v1/tenants/{tenantUid}/preferences/clusterSettings": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Get tenant cluster settings", + "operationId": "v1TenantClusterSettingsGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "properties": { + "nodesAutoRemediationSetting": { + "properties": { + "disableNodesAutoRemediation": { + "type": "boolean", + "x-omitempty": false + }, + "isEnabled": { + "type": "boolean", + "x-omitempty": false + } + } + } + } + } + } } }, - "type": "object" - }, - "v1HostClusterConfigResponse": { - "properties": { - "clusterGroup": { - "$ref": "#/definitions/v1ObjectReference", - "description": "cluster group reference" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - } + ] }, - "v1HostClusterEndpoint": { - "properties": { - "config": { - "$ref": "#/definitions/v1HostClusterEndpointConfig" - }, - "type": { - "description": "is enabled as host cluster", - "enum": [ - "Ingress", - "LoadBalancer" - ], - "type": "string" + "/v1/tenants/{tenantUid}/preferences/clusterSettings/nodesAutoRemediationSetting": { + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Update tenant clusters nodes auto remediation setting", + "operationId": "v1TenantClustersNodesAutoRemediationSettingUpdate", + "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" + } + } + } } - } - }, - "v1HostClusterEndpointConfig": { - "properties": { - "ingressConfig": { - "$ref": "#/definitions/v1IngressConfig" - }, - "loadBalancerConfig": { - "$ref": "#/definitions/v1LoadBalancerConfig" + }, + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - } + ] }, - "v1HttpPatch": { - "properties": { - "from": { - "description": "A path to the pointer from which reference will be taken", - "type": "string" - }, - "op": { - "description": "The operation to be performed", - "enum": [ - "add", - "remove", - "replace", - "move", - "copy" - ], - "type": "string" - }, - "path": { - "description": "A path to the pointer on which operation will be done", - "type": "string" - }, - "value": { - "description": "The value to be used within the operations.", - "type": "object" + "/v1/tenants/{tenantUid}/preferences/developerCredit": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Get developer credit enabled for a specific tenant", + "operationId": "V1TenantDeveloperCreditGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "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 + } + } + } + } } }, - "required": [ - "op", - "path" - ], - "type": "object" - }, - "v1HubbleInfo": { - "properties": { - "apiEndpoint": { - "type": "string" - }, - "apiPort": { - "type": "string" - }, - "natsEndpoint": { - "type": "string" - }, - "uiEndpoint": { - "type": "string" - }, - "uiPort": { - "type": "string" + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "update developer credit for a specific tenant", + "operationId": "V1TenantDeveloperCreditUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "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 + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true + } + ] }, - "v1IPPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "$ref": "#/definitions/v1Nameserver", - "description": "Nameserver provide information for dns resolvation" - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "items": { - "$ref": "#/definitions/v1Pool" + "/v1/tenants/{tenantUid}/preferences/fips": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "format": "int32", - "type": "integer" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Get tenant fips settings", + "operationId": "v1TenantFipsSettingsGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "FIPS configuration", + "properties": { + "fipsClusterFeatureConfig": { + "description": "Non-FIPS configuration", + "properties": { + "mode": { + "description": "enable or disable the non FIPS complaint", + "type": "string", + "default": "nonFipsDisabled", + "enum": [ + "nonFipsEnabled", + "nonFipsDisabled" + ] + } + } + }, + "fipsClusterImportConfig": { + "description": "Non-FIPS configuration", + "properties": { + "mode": { + "description": "enable or disable the non FIPS complaint", + "type": "string", + "default": "nonFipsDisabled", + "enum": [ + "nonFipsEnabled", + "nonFipsDisabled" + ] + } + } + }, + "fipsPackConfig": { + "description": "Non-FIPS configuration", + "properties": { + "mode": { + "description": "enable or disable the non FIPS complaint", + "type": "string", + "default": "nonFipsDisabled", + "enum": [ + "nonFipsEnabled", + "nonFipsDisabled" + ] + } + } + } + } + } + } } }, - "type": "object" - }, - "v1IdentityProvider": { - "description": "Describes a predefined Identity Provider (IDP)", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Update tenant fips setting", + "operationId": "v1TenantFipsSettingsUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "FIPS configuration", + "properties": { + "fipsClusterFeatureConfig": { + "description": "Non-FIPS configuration", + "properties": { + "mode": { + "description": "enable or disable the non FIPS complaint", + "type": "string", + "default": "nonFipsDisabled", + "enum": [ + "nonFipsEnabled", + "nonFipsDisabled" + ] + } + } + }, + "fipsClusterImportConfig": { + "description": "Non-FIPS configuration", + "properties": { + "mode": { + "description": "enable or disable the non FIPS complaint", + "type": "string", + "default": "nonFipsDisabled", + "enum": [ + "nonFipsEnabled", + "nonFipsDisabled" + ] + } + } + }, + "fipsPackConfig": { + "description": "Non-FIPS configuration", + "properties": { + "mode": { + "description": "enable or disable the non FIPS complaint", + "type": "string", + "default": "nonFipsDisabled", + "enum": [ + "nonFipsEnabled", + "nonFipsDisabled" + ] + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "type": "string", + "description": "Audit uid for the request" + } + } + } } }, - "type": "object" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true + } + ] }, - "v1IdentityProviders": { - "description": "Describes a list of predefined Identity Provider (IDP)", - "items": { - "$ref": "#/definitions/v1IdentityProvider" + "/v1/tenants/{tenantUid}/rateConfig": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Get all rate config for public and private cloud", + "operationId": "v1RateConfigGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "Rate config", + "properties": { + "aws": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + } + } + }, + "azure": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + } + } + }, + "coxedge": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + } + } + }, + "custom": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Private cloud rate config", + "properties": { + "cloudType": { + "type": "string" + }, + "rateConfig": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + } + } + } + }, + "edge": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "edgeNative": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "gcp": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + } + } + }, + "generic": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "libvirt": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "maas": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "openstack": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "vsphere": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + } + } + } + } + } }, - "type": "array", - "uniqueItems": true - }, - "v1ImportClusterConfig": { - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "enum": [ - "read-only" - ], - "type": "string" - }, - "proxy": { - "$ref": "#/definitions/v1ClusterProxySpec", - "description": "Cluster proxy settings" + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "updates the rate config for public and private cloud", + "operationId": "v1RateConfigUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Rate config", + "properties": { + "aws": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + } + } + }, + "azure": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + } + } + }, + "coxedge": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + } + } + }, + "custom": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Private cloud rate config", + "properties": { + "cloudType": { + "type": "string" + }, + "rateConfig": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + } + } + } + }, + "edge": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "edgeNative": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "gcp": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + } + } + }, + "generic": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "libvirt": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "maas": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "openstack": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "vsphere": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true + } + ] }, - "v1ImportEdgeHostConfig": { - "properties": { - "edgeHostUid": { - "description": "Deprecated. Use 'edgeHostUids' field", - "type": "string" - }, - "edgeHostUids": { - "items": { - "type": "string" + "/v1/tenants/{tenantUid}/resourceLimits": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Get tenant level resource limits configuration", + "operationId": "v1TenantResourceLimitsGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "Tenant resource limits", + "properties": { + "resources": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "kind": { + "type": "string", + "enum": [ + "user", + "project", + "apiKey", + "team", + "role", + "cloudaccount", + "clusterprofile", + "workspace", + "registry", + "privategateway", + "location", + "certificate", + "macro", + "sshkey", + "alert", + "spectrocluster", + "edgehost", + "appprofile", + "appdeployment", + "edgetoken", + "clustergroup", + "filter", + "systemadmin" + ] + }, + "label": { + "type": "string" + }, + "limit": { + "type": "number", + "format": "int64", + "x-omitempty": false + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1InfraLBConfig": { - "properties": { - "apiServerLB": { - "$ref": "#/definitions/v1LoadBalancerSpec", - "description": "APIServerLB is the configuration for the control-plane load balancer." + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Update tenant resource limits configuration", + "operationId": "v1TenantResourceLimitsUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Tenant resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.", + "properties": { + "resources": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "kind": { + "type": "string", + "enum": [ + "user", + "project", + "apiKey", + "team", + "role", + "cloudaccount", + "clusterprofile", + "workspace", + "registry", + "privategateway", + "location", + "certificate", + "macro", + "sshkey", + "alert", + "spectrocluster", + "edgehost", + "appprofile", + "appdeployment", + "edgetoken", + "clustergroup", + "filter", + "systemadmin" + ] + }, + "limit": { + "type": "number", + "format": "int64", + "x-omitempty": false + } + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1IngressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "format": "int64", - "type": "integer" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - } + ] }, - "v1InstallerStatus": { - "description": "Spectro cluster installer status", - "properties": { - "clusterMigration": { - "$ref": "#/definitions/v1SpectroClusterMigration" - }, - "clusterState": { - "type": "string" - }, - "endpoint": { - "type": "string", - "x-omitempty": false + "/v1/tenants/{tenantUid}/saml/config": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Returns the specified service provider metadata and Saml Spec for tenant", + "operationId": "V1TenantUidSamlConfigSpecGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "Tenant", + "type": "object", + "properties": { + "acsUrl": { + "type": "string" + }, + "attributes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "attributeValue": { + "type": "string" + }, + "mappedAttribute": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nameFormat": { + "type": "string" + } + } + } + }, + "audienceUrl": { + "description": "same as entity id", + "type": "string" + }, + "certificate": { + "description": "certificate for slo", + "type": "string" + }, + "defaultTeams": { + "type": "array", + "items": { + "type": "string" + } + }, + "entityId": { + "type": "string" + }, + "federationMetadata": { + "type": "string" + }, + "identityProvider": { + "type": "string" + }, + "isSingleLogoutEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "isSsoEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "issuer": { + "description": "same as entity id", + "type": "string" + }, + "nameIdFormat": { + "type": "string" + }, + "serviceProviderMetadata": { + "type": "string" + }, + "singleLogoutUrl": { + "description": "slo url", + "type": "string", + "x-omitempty": false + }, + "syncSsoTeams": { + "type": "boolean", + "x-omitempty": false + } + } + } + } + } + }, + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "Associates the specified federation metadata for the tenant", + "operationId": "V1TenantUidSamlConfigUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Tenant", + "type": "object", + "properties": { + "attributes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "attributeValue": { + "type": "string" + }, + "mappedAttribute": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nameFormat": { + "type": "string" + } + } + } + }, + "defaultTeams": { + "type": "array", + "items": { + "type": "string" + } + }, + "federationMetadata": { + "type": "string" + }, + "identityProvider": { + "type": "string" + }, + "isSingleLogoutEnabled": { + "type": "boolean" + }, + "isSsoEnabled": { + "type": "boolean" + }, + "nameIdFormat": { + "type": "string" + }, + "syncSsoTeams": { + "type": "boolean" + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1InstanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "format": "int64", - "type": "integer" - }, - "diskGiB": { - "format": "int64", - "type": "integer" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "format": "int64", - "type": "integer" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "format": "int32", - "type": "integer" + "parameters": [ + { + "type": "string", + "name": "tenantUid", + "in": "path", + "required": true } - } + ] }, - "v1InstanceCost": { - "description": "Instance cost entity", - "properties": { - "price": { - "description": "Array of cloud instance price", - "items": { - "$ref": "#/definitions/v1InstancePrice" + "/v1/tenants/{tenantUid}/sso/auth/providers": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "get sso logins for the tenants", + "operationId": "V1TenantUidSsoAuthProvidersGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "ssoLogins": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + } + } } }, - "type": "object" - }, - "v1InstancePrice": { - "description": "Cloud instance price", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "format": "double", - "type": "number" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "enum": [ - "linux", - "windows" - ], - "type": "string" - }, - "spot": { - "description": "Spot price of instance", - "format": "double", - "type": "number" + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "tenants" + ], + "summary": "enable sso logins for the tenants", + "operationId": "V1TenantUidSsoAuthProvidersUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "ssoLogins": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1InstanceType": { - "description": "Cloud Instance type details", - "properties": { - "category": { - "description": "Category of instance type", + "parameters": [ + { "type": "string", - "x-go-name": "Category" - }, - "cost": { - "$ref": "#/definitions/v1InstanceCost" - }, - "cpu": { - "description": "Cpu of instance type", - "format": "double", - "type": "number", - "x-go-name": "Cpu" - }, - "gpu": { - "description": "Gpu of instance type", - "format": "double", - "type": "number", - "x-go-name": "Gpu" - }, - "memory": { - "description": "Memory of instance type", - "format": "double", - "type": "number", - "x-go-name": "Memory" - }, - "nonSupportedZones": { - "description": "Non supported zones of the instance in a particular region", - "items": { - "type": "string" + "name": "tenantUid", + "in": "path", + "required": true + } + ] + }, + "/v1/users": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "price": { - "description": "Price of instance type", - "format": "double", - "type": "number", - "x-go-name": "Price" - }, - "supportedArchitectures": { - "description": "Supported architecture of the instance", - "items": { - "type": "string" + { + "Authorization": [] + } + ], + "description": "Lists users the given user context", + "tags": [ + "users" + ], + "summary": "Lists users", + "operationId": "v1UsersList", + "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" - }, - "type": { - "description": "Type of instance type", - "type": "string", - "x-go-name": "Type" + { + "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": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "User", + "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": "User specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "status": { + "description": "User status", + "properties": { + "activationLink": { + "description": "provides the link to activate or reset the user password", + "type": "string", + "x-omitempty": false + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean", + "x-omitempty": false + }, + "isPasswordResetting": { + "description": "Specifies if user in multi org requested password reset", + "type": "boolean", + "x-omitempty": false + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } + } + } + }, + "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" - }, - "v1Invoice": { - "description": "Invoice object", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1InvoiceSpec" - }, - "status": { - "$ref": "#/definitions/v1InvoiceStatus" - } - } - }, - "v1InvoiceBillingPeriod": { - "description": "Invoice billing period object", - "properties": { - "end": { - "$ref": "#/definitions/v1Time" - }, - "start": { - "$ref": "#/definitions/v1Time" - } - } - }, - "v1InvoiceCredits": { - "description": "Invoice credits object", - "properties": { - "alloyFreeCredits": { - "description": "Credits allocated for import clusters", - "format": "int64", - "type": "number" - }, - "pureFreeCredits": { - "description": "Credits allocated for managed clusters", - "format": "int64", - "type": "number" - } - } - }, - "v1InvoicePlan": { - "description": "Invoice plan object", - "properties": { - "freeCredits": { - "description": "List of free credits", - "items": { - "$ref": "#/definitions/v1InvoicePlanCredit" + "post": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "plantype": { - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ], - "type": "string" - }, - "slaCredits": { - "description": "List of SLA credits", - "items": { - "$ref": "#/definitions/v1InvoicePlanCredit" + { + "Authorization": [] + } + ], + "description": "A user is created for the given user context", + "tags": [ + "users" + ], + "summary": "Create User", + "operationId": "v1UsersCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "User", + "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": "User Entity input", + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "loginMode": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "teams": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + } + } + } }, - "type": "array" - } - } - }, - "v1InvoicePlanCredit": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "$ref": "#/definitions/v1PlanCredit" - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "format": "int64", - "type": "number" - } - } - }, - "v1InvoiceProduct": { - "description": "Product invoice object", - "properties": { - "alloy": { - "$ref": "#/definitions/v1InvoiceProductData" - }, - "pure": { - "$ref": "#/definitions/v1InvoiceProductData" + { + "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" + } + } + } } } }, - "v1InvoiceProductData": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "format": "int64", - "type": "number" - }, - "amount": { - "description": "Total amount", - "format": "float64", - "type": "number" - }, - "billableCredits": { - "description": "Credits to be billed", - "format": "float64", - "type": "number" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "format": "float64", - "type": "number" - }, - "discount": { - "description": "Applied discount", - "format": "int64", - "type": "number" - }, - "freeCredits": { - "description": "Allocated free credits", - "format": "int64", - "type": "number" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "format": "int8", - "type": "number" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "format": "float64", - "type": "number" - }, - "totalUsedCredits": { - "description": "Total used credits", - "format": "float64", - "type": "number" - }, - "usedCredits": { - "description": "Used credits", - "format": "float64", - "type": "number" + "/v1/users/assets/locations": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the specified users location", + "operationId": "v1UsersAssetsLocationGet", + "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" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "description": "List of locations", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Location 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": "Location specification", + "type": "object", + "properties": { + "isDefault": { + "type": "boolean" + }, + "storage": { + "description": "Location type", + "type": "string", + "default": "s3", + "enum": [ + "s3", + "gcp", + "minio" + ] + }, + "type": { + "type": "string" + } + } + } + } + } + } + } + } + } } } }, - "v1InvoiceProject": { - "description": "Invoice project object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "format": "float64", - "type": "number" - }, - "projectName": { - "description": "Name of the project", - "type": "string" - }, - "projectUid": { - "description": "Project identifier", - "type": "string" - }, - "usage": { - "$ref": "#/definitions/v1ProjectUsage", - "description": "Usage by the project" + "/v1/users/assets/locations/azure": { + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Create a Azure location", + "operationId": "v1UsersAssetsLocationAzureCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Azure location object", + "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": "Azure location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "Azure storage config object", + "type": "object", + "required": [ + "resourceGroup", + "containerName", + "storageName", + "credentials" + ], + "properties": { + "containerName": { + "description": "Azure container name", + "type": "string" + }, + "credentials": { + "type": "object", + "properties": { + "clientCloud": { + "description": "Contains configuration for Azure cloud", + "type": "string", + "default": "public", + "enum": [ + "azure-china", + "azure-government", + "public" + ] + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "subscriptionId": { + "type": "string" + }, + "tenantId": { + "type": "string" + } + } + }, + "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" + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "Azure location type [azure]", + "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" + } + } + } } } }, - "v1InvoiceRetryRequest": { - "description": "Retry invoice request object", - "properties": { - "customerId": { - "description": "Customer invoice uid", - "type": "string" - }, - "invoiceUid": { - "description": "Invoice uid", - "type": "string" - }, - "paymentMethodId": { - "description": "Payment method uid", - "type": "string" + "/v1/users/assets/locations/azure/{uid}": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the specified Azure location", + "operationId": "v1UsersAssetsLocationAzureGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "Azure location object", + "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": "Azure location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "Azure storage config object", + "type": "object", + "required": [ + "resourceGroup", + "containerName", + "storageName", + "credentials" + ], + "properties": { + "containerName": { + "description": "Azure container name", + "type": "string" + }, + "credentials": { + "type": "object", + "properties": { + "clientCloud": { + "description": "Contains configuration for Azure cloud", + "type": "string", + "default": "public", + "enum": [ + "azure-china", + "azure-government", + "public" + ] + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "subscriptionId": { + "type": "string" + }, + "tenantId": { + "type": "string" + } + } + }, + "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" + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "Azure location type [azure]", + "type": "string" + } + } + } + } + } + } } - } - }, - "v1InvoiceSpec": { - "description": "Invoice specification", - "properties": { - "address": { - "$ref": "#/definitions/v1Address" - }, - "billingPeriod": { - "$ref": "#/definitions/v1InvoiceBillingPeriod" - }, - "credits": { - "$ref": "#/definitions/v1InvoiceCredits" - }, - "envType": { - "description": "Environment type [Trial,MonthlyOnDemand,AnnualSubscription,OnPrem]", - "type": "string" - }, - "month": { - "$ref": "#/definitions/v1Time", - "description": "Month for which invoice is generated" - }, - "paymentUnit": { - "enum": [ - "usd" - ], - "type": "string" - }, - "plan": { - "$ref": "#/definitions/v1InvoicePlan" + }, + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Updates the specified Azure location", + "operationId": "v1UsersAssetsLocationAzureUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Azure location object", + "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": "Azure location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "Azure storage config object", + "type": "object", + "required": [ + "resourceGroup", + "containerName", + "storageName", + "credentials" + ], + "properties": { + "containerName": { + "description": "Azure container name", + "type": "string" + }, + "credentials": { + "type": "object", + "properties": { + "clientCloud": { + "description": "Contains configuration for Azure cloud", + "type": "string", + "default": "public", + "enum": [ + "azure-china", + "azure-government", + "public" + ] + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "subscriptionId": { + "type": "string" + }, + "tenantId": { + "type": "string" + } + } + }, + "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" + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "Azure location type [azure]", + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } - } - }, - "v1InvoiceState": { - "description": "Invoice state object", - "properties": { - "paymentMsg": { - "description": "Payment status message", - "type": "string" - }, - "state": { - "enum": [ - "Paid", - "PaymentPending", - "PaymentInProgress", - "PaymentFailed" - ], - "type": "string" - }, - "timestamp": { - "$ref": "#/definitions/v1Time", - "description": "Time on which the state has been updated" + }, + "parameters": [ + { + "type": "string", + "description": "Specify the Azure location uid", + "name": "uid", + "in": "path", + "required": true } - } + ] }, - "v1InvoiceStatus": { - "description": "Invoice Status", - "properties": { - "billableAmount": { - "description": "Total billable amount", - "format": "float64", - "type": "number" - }, - "productInvoice": { - "$ref": "#/definitions/v1InvoiceProduct" - }, - "projects": { - "description": "List of project invoices", - "items": { - "$ref": "#/definitions/v1InvoiceProject" - }, - "type": "array" - }, - "states": { - "description": "List of invoice states", - "items": { - "$ref": "#/definitions/v1InvoiceState" + "/v1/users/assets/locations/gcp": { + "post": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "stripeInvoiceId": { - "description": "Stripe invoice uid", - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Create a GCP location", + "operationId": "v1UsersAssetsLocationGcpCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "GCP location object", + "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": "GCP location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "GCP storage config object", + "type": "object", + "required": [ + "bucketName", + "credentials" + ], + "properties": { + "bucketName": { + "description": "GCP storage bucket name", + "type": "string" + }, + "credentials": { + "type": "object", + "properties": { + "jsonCredentials": { + "type": "string" + }, + "jsonCredentialsFileUid": { + "type": "string" + } + } + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "GCP location type [gcp]", + "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" + } + } + } } } }, - "v1Invoices": { - "description": "List of invoices", - "properties": { - "invoices": { - "items": { - "$ref": "#/definitions/v1Invoice" + "/v1/users/assets/locations/gcp/{uid}": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the specified GCP location", + "operationId": "v1UsersAssetsLocationGcpGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "GCP location object", + "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": "GCP location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "GCP storage config object", + "type": "object", + "required": [ + "bucketName", + "credentials" + ], + "properties": { + "bucketName": { + "description": "GCP storage bucket name", + "type": "string" + }, + "credentials": { + "type": "object", + "properties": { + "jsonCredentials": { + "type": "string" + }, + "jsonCredentialsFileUid": { + "type": "string" + } + } + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "GCP location type [gcp]", + "type": "string" + } + } + } + } + } + } } }, - "required": [ - "invoices" - ], - "type": "object" - }, - "v1IpPoolEntity": { - "description": "IP Pool entity definition", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "properties": { - "pool": { - "$ref": "#/definitions/v1Pool" - }, - "priavetGatewayUid": { - "type": "string" - }, - "restrictToSingleCluster": { - "description": "if true, restricts this IP pool to be used by single cluster at any time", - "type": "boolean", - "x-omitempty": false - } + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "object" - }, - "status": { - "$ref": "#/definitions/v1IpPoolStatus" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Updates the specified GCP location", + "operationId": "v1UsersAssetsLocationGcpUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "GCP location object", + "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": "GCP location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "GCP storage config object", + "type": "object", + "required": [ + "bucketName", + "credentials" + ], + "properties": { + "bucketName": { + "description": "GCP storage bucket name", + "type": "string" + }, + "credentials": { + "type": "object", + "properties": { + "jsonCredentials": { + "type": "string" + }, + "jsonCredentialsFileUid": { + "type": "string" + } + } + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "GCP location type [gcp]", + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" + "parameters": [ + { + "type": "string", + "description": "Specify the GCP location uid", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1IpPoolInputEntity": { - "description": "IP Pool input entity definition", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "properties": { - "pool": { - "$ref": "#/definitions/v1Pool" + "/v1/users/assets/locations/minio": { + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Create a MinIO location", + "operationId": "v1UsersAssetsLocationMinioCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "S3 location object", + "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": "S3 location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "S3 storage config object", + "type": "object", + "required": [ + "bucketName", + "region", + "credentials" + ], + "properties": { + "bucketName": { + "description": "S3 storage bucket name", + "type": "string" + }, + "caCert": { + "description": "CA Certificate", + "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" + } + } + } + } + }, + "region": { + "description": "AWS region name", + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean", + "default": true + }, + "s3Url": { + "description": "Custom hosted S3 URL", + "type": "string" + }, + "useRestic": { + "description": "Set to 'true', to use Restic plugin for the backup", + "type": "boolean", + "default": true + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "S3 location type [s3/minio]", + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "schema": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "uid": { + "type": "string" + } + } }, - "restrictToSingleCluster": { - "description": "if true, restricts this IP pool to be used by single cluster at any time", - "type": "boolean" + "headers": { + "AuditUid": { + "type": "string", + "description": "Audit uid for the request" + } } - }, - "required": [ - "pool" - ], - "type": "object" + } } - }, - "type": "object" + } }, - "v1IpPoolStatus": { - "description": "IP Pool status", - "properties": { - "allottedIps": { - "items": { - "type": "string" + "/v1/users/assets/locations/minio/{uid}": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "associatedClusters": { - "items": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the specified MinIO location", + "operationId": "v1UsersAssetsLocationMinioGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "S3 location object", + "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": "S3 location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "S3 storage config object", + "type": "object", + "required": [ + "bucketName", + "region", + "credentials" + ], + "properties": { + "bucketName": { + "description": "S3 storage bucket name", + "type": "string" + }, + "caCert": { + "description": "CA Certificate", + "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" + } + } + } + } + }, + "region": { + "description": "AWS region name", + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean", + "default": true + }, + "s3Url": { + "description": "Custom hosted S3 URL", + "type": "string" + }, + "useRestic": { + "description": "Set to 'true', to use Restic plugin for the backup", + "type": "boolean", + "default": true + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "S3 location type [s3/minio]", + "type": "string" + } + } + } + } + } + } + } + }, + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "inUse": { - "type": "boolean", - "x-omitempty": false + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Updates the specified MinIO location", + "operationId": "v1UsersAssetsLocationMinioUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "S3 location object", + "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": "S3 location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "S3 storage config object", + "type": "object", + "required": [ + "bucketName", + "region", + "credentials" + ], + "properties": { + "bucketName": { + "description": "S3 storage bucket name", + "type": "string" + }, + "caCert": { + "description": "CA Certificate", + "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" + } + } + } + } + }, + "region": { + "description": "AWS region name", + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean", + "default": true + }, + "s3Url": { + "description": "Custom hosted S3 URL", + "type": "string" + }, + "useRestic": { + "description": "Set to 'true', to use Restic plugin for the backup", + "type": "boolean", + "default": true + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "S3 location type [s3/minio]", + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" + "parameters": [ + { + "type": "string", + "description": "Specify the MinIO location uid", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1IpPools": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1IpPoolEntity" + "/v1/users/assets/locations/s3": { + "post": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Create a S3 location", + "operationId": "v1UsersAssetsLocationS3Create", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "S3 location object", + "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": "S3 location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "S3 storage config object", + "type": "object", + "required": [ + "bucketName", + "region", + "credentials" + ], + "properties": { + "bucketName": { + "description": "S3 storage bucket name", + "type": "string" + }, + "caCert": { + "description": "CA Certificate", + "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" + } + } + } + } + }, + "region": { + "description": "AWS region name", + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean", + "default": true + }, + "s3Url": { + "description": "Custom hosted S3 URL", + "type": "string" + }, + "useRestic": { + "description": "Set to 'true', to use Restic plugin for the backup", + "type": "boolean", + "default": true + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "S3 location type [s3/minio]", + "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" + } + } + } } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1JWKResponse": { - "properties": { - "alg": { - "description": "The \"alg\" (algorithm) parameter identifies the algorithm intended for use with the key", - "type": "string" - }, - "e": { - "type": "string" - }, - "key_ops": { - "description": "The \"key_ops\" (key operations) parameter identifies the operation(s) for which the key is intended to be used", - "type": "string" - }, - "kid": { - "description": "The \"kid\" (key ID) parameter is used to match a specific key", - "type": "string" - }, - "kty": { - "description": "The \"kty\" (key type) parameter identifies the cryptographic algorithm family used with the key, such as \"RSA\" or \"EC\"", - "type": "string" - }, - "n": { - "type": "string" - }, - "use": { - "description": "The \"use\" (public key use) parameter identifies the intended use of the public key", - "type": "string" + "/v1/users/assets/locations/s3/{uid}": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the specified S3 location", + "operationId": "v1UsersAssetsLocationS3Get", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "S3 location object", + "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": "S3 location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "S3 storage config object", + "type": "object", + "required": [ + "bucketName", + "region", + "credentials" + ], + "properties": { + "bucketName": { + "description": "S3 storage bucket name", + "type": "string" + }, + "caCert": { + "description": "CA Certificate", + "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" + } + } + } + } + }, + "region": { + "description": "AWS region name", + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean", + "default": true + }, + "s3Url": { + "description": "Custom hosted S3 URL", + "type": "string" + }, + "useRestic": { + "description": "Set to 'true', to use Restic plugin for the backup", + "type": "boolean", + "default": true + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "S3 location type [s3/minio]", + "type": "string" + } + } + } + } + } + } } }, - "type": "object" - }, - "v1JWKSetResponse": { - "properties": { - "keys": { - "description": "The value of the \"keys\" parameter is an array of JWK values", - "items": { - "$ref": "#/definitions/v1JWKResponse" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Updates the specified S3 location", + "operationId": "v1UsersAssetsLocationS3Update", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "S3 location object", + "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": "S3 location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "S3 storage config object", + "type": "object", + "required": [ + "bucketName", + "region", + "credentials" + ], + "properties": { + "bucketName": { + "description": "S3 storage bucket name", + "type": "string" + }, + "caCert": { + "description": "CA Certificate", + "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" + } + } + } + } + }, + "region": { + "description": "AWS region name", + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean", + "default": true + }, + "s3Url": { + "description": "Custom hosted S3 URL", + "type": "string" + }, + "useRestic": { + "description": "Set to 'true', to use Restic plugin for the backup", + "type": "boolean", + "default": true + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "S3 location type [s3/minio]", + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1JetAuthKey": { - "properties": { - "authKey": { - "type": "string" + "delete": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the specified S3 location", + "operationId": "v1UsersAssetsLocationS3Delete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } }, - "type": "object" - }, - "v1JetAuthKeyResponse": { - "properties": { - "authKey": { - "type": "string" + "parameters": [ + { + "type": "string", + "description": "Specify the S3 location uid", + "name": "uid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1JetServiceLogin": { - "description": "jet service login input", - "properties": { - "authKey": { - "description": "authToken helps in two step verification for the authorization.", - "type": "string" - }, - "edgeHostUid": { - "type": "string" - }, - "hostClusterUid": { - "type": "string" - }, - "isSystem": { - "type": "boolean" - }, - "jetUid": { - "type": "string" - }, - "overlordUid": { - "type": "string" - }, - "serviceVersion": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" + "/v1/users/assets/locations/{type}/{uid}/default": { + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Update the default backup location", + "operationId": "v1UsersAssetsLocationDefaultUpdate", + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1KubeBenchEntity": { - "description": "KubeBench response", - "properties": { - "reports": { - "additionalProperties": { - "$ref": "#/definitions/v1KubeBenchReportEntity" - }, - "type": "object" - }, - "requestUid": { - "type": "string" + "parameters": [ + { + "type": "string", + "description": "Specify the location uid", + "name": "uid", + "in": "path", + "required": true }, - "status": { - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ], - "type": "string" + { + "type": "string", + "description": "Specify the location type [aws/azure/gcp/minio/s3]", + "name": "type", + "in": "path", + "required": true } - }, - "required": [ - "requestUid", - "status", - "reports" ] }, - "v1KubeBenchLog": { - "description": "Compliance Scan KubeBench Log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" + "/v1/users/assets/locations/{uid}": { + "delete": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Deletes the specified location", + "operationId": "v1UsersAssetsLocationDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } - } - }, - "v1KubeBenchLogEntity": { - "description": "KubeBench log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" + }, + "parameters": [ + { + "type": "string", + "description": "Specify the location uid", + "name": "uid", + "in": "path", + "required": true } - } + ] }, - "v1KubeBenchReport": { - "description": "Compliance Scan KubeBench Report", - "properties": { - "fail": { - "format": "int32", - "type": "integer" - }, - "info": { - "format": "int32", - "type": "integer" - }, - "logs": { - "items": { - "$ref": "#/definitions/v1KubeBenchLog" + "/v1/users/assets/sshkeys": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "name": { - "type": "string" - }, - "pass": { - "format": "int32", - "type": "integer" - }, - "time": { - "$ref": "#/definitions/v1Time" - }, - "type": { - "type": "string" - }, - "warn": { - "format": "int32", - "type": "integer" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the SSH keys", + "operationId": "v1UsersAssetsSshGet", + "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" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "description": "List of SSH keys", + "type": "array", + "uniqueItems": true, + "items": { + "description": "SSH 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": "SSH key specification", + "type": "object", + "properties": { + "publicKey": { + "type": "string" + } + } + } + } + } + } + } + } + } } - } - }, - "v1KubeBenchReportEntity": { - "description": "KubeBench report", - "properties": { - "fail": { - "format": "int32", - "type": "integer" - }, - "info": { - "format": "int32", - "type": "integer" - }, - "logs": { - "items": { - "$ref": "#/definitions/v1KubeBenchLogEntity" + }, + "post": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "name": { - "type": "string" - }, - "pass": { - "format": "int32", - "type": "integer" - }, - "time": { - "$ref": "#/definitions/v1Time" - }, - "type": { - "type": "string" - }, - "warn": { - "format": "int32", - "type": "integer" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Creates a SSH key", + "operationId": "v1UserAssetsSshCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "SSH Key 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": "SSH key specification", + "type": "object", + "properties": { + "publicKey": { + "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" + } + } + } } } }, - "v1KubeHunterEntity": { - "description": "KubeHunter response", - "properties": { - "reports": { - "additionalProperties": { - "$ref": "#/definitions/v1KubeHunterReportEntity" + "/v1/users/assets/sshkeys/{uid}": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "object" - }, - "requestUid": { - "type": "string" - }, - "status": { - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ], - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the specified user ssh key", + "operationId": "v1UsersAssetSshGetUid", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "SSH 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": "SSH key specification", + "type": "object", + "properties": { + "publicKey": { + "type": "string" + } + } + } + } + } + } } }, - "required": [ - "requestUid", - "status", - "reports" - ] - }, - "v1KubeHunterLog": { - "description": "Compliance Scan KubeHunter Log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - }, - "v1KubeHunterLogEntity": { - "description": "KubeHunter log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - }, - "v1KubeHunterReport": { - "description": "Compliance Scan KubeHunter Report", - "properties": { - "logs": { - "items": { - "$ref": "#/definitions/v1KubeHunterLog" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "time": { - "$ref": "#/definitions/v1Time" - }, - "vulnerabilites": { - "$ref": "#/definitions/v1KubeHunterVulnerabilities" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Updates the specified user ssh key", + "operationId": "v1UsersAssetSshUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "SSH 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": "SSH key specification", + "type": "object", + "properties": { + "publicKey": { + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } - } - }, - "v1KubeHunterReportEntity": { - "description": "KubeHunter report", - "properties": { - "logs": { - "items": { - "$ref": "#/definitions/v1KubeHunterLogEntity" + }, + "delete": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "time": { - "$ref": "#/definitions/v1Time" - }, - "vulnerabilities": { - "$ref": "#/definitions/v1KubeHunterVulnerabilityDataEntity" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the specified user ssh key", + "operationId": "v1UsersAssetSshDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } - } - }, - "v1KubeHunterVulnerabilities": { - "description": "Compliance Scan KubeHunter Vulnerabilities", - "properties": { - "high": { - "format": "int32", - "type": "integer" - }, - "low": { - "format": "int32", - "type": "integer" - }, - "medium": { - "format": "int32", - "type": "integer" + }, + "parameters": [ + { + "type": "string", + "description": "Specify the SSH key uid", + "name": "uid", + "in": "path", + "required": true } - } + ] }, - "v1KubeHunterVulnerabilityDataEntity": { - "description": "KubeHunter vulnerability data", - "properties": { - "high": { - "format": "int32", - "type": "integer" - }, - "low": { - "format": "int32", - "type": "integer" - }, - "medium": { - "format": "int32", - "type": "integer" + "/v1/users/assets/vsphere/dnsMapping": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the specified vSphere DNS mapping", + "operationId": "v1VsphereMappingGet", + "parameters": [ + { + "type": "string", + "description": "Specify the vSphere gateway uid", + "name": "gatewayUid", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "Specify the vSphere datacenter name", + "name": "datacenter", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "Specify the vSphere network name", + "name": "network", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "VSphere DNS Mapping", + "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": "VSphere DNS Mapping Spec", + "type": "object", + "required": [ + "privateGatewayUid", + "datacenter", + "network", + "dnsName" + ], + "properties": { + "datacenter": { + "description": "VSphere datacenter name", + "type": "string" + }, + "dnsName": { + "description": "VSphere DNS name", + "type": "string" + }, + "network": { + "description": "VSphere network name", + "type": "string" + }, + "networkUrl": { + "description": "VSphere network URL", + "type": "string", + "readOnly": true + }, + "privateGatewayUid": { + "description": "VSphere private gateway uid", + "type": "string" + } + } + } + } + } + } } } }, - "v1KubeMeta": { - "description": "Spectro cluster kube meta", - "properties": { - "hasKubeConfig": { - "type": "boolean", - "x-omitempty": false - }, - "hasKubeConfigClient": { - "type": "boolean", - "x-omitempty": false - }, - "hasManifest": { - "type": "boolean", - "x-omitempty": false - }, - "kubernetesVersion": { - "type": "string" - } - }, - "type": "object" - }, - "v1LibvirtCloudClusterConfigEntity": { - "description": "Libvirt cloud cluster config entity", - "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1LibvirtClusterConfig" + "/v1/users/assets/vsphere/dnsMappings": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the specified vSphere DNS mappings", + "operationId": "v1VsphereDnsMappingsGet", + "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" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "description": "List of vSphere DNS mapping", + "type": "array", + "uniqueItems": true, + "items": { + "description": "VSphere DNS Mapping", + "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": "VSphere DNS Mapping Spec", + "type": "object", + "required": [ + "privateGatewayUid", + "datacenter", + "network", + "dnsName" + ], + "properties": { + "datacenter": { + "description": "VSphere datacenter name", + "type": "string" + }, + "dnsName": { + "description": "VSphere DNS name", + "type": "string" + }, + "network": { + "description": "VSphere network name", + "type": "string" + }, + "networkUrl": { + "description": "VSphere network URL", + "type": "string", + "readOnly": true + }, + "privateGatewayUid": { + "description": "VSphere private gateway uid", + "type": "string" + } + } + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1LibvirtCloudConfig": { - "description": "LibvirtCloudConfig is the Schema for the libvirtcloudconfigs 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/v1LibvirtCloudConfigSpec" - }, - "status": { - "$ref": "#/definitions/v1LibvirtCloudConfigStatus" + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Create a vSphere DNS mapping", + "operationId": "v1VsphereDnsMappingCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "VSphere DNS Mapping", + "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": "VSphere DNS Mapping Spec", + "type": "object", + "required": [ + "privateGatewayUid", + "datacenter", + "network", + "dnsName" + ], + "properties": { + "datacenter": { + "description": "VSphere datacenter name", + "type": "string" + }, + "dnsName": { + "description": "VSphere DNS name", + "type": "string" + }, + "network": { + "description": "VSphere network name", + "type": "string" + }, + "networkUrl": { + "description": "VSphere network URL", + "type": "string", + "readOnly": true + }, + "privateGatewayUid": { + "description": "VSphere private gateway 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" + } + } + } } - }, - "type": "object" + } }, - "v1LibvirtCloudConfigSpec": { - "description": "LibvirtCloudConfigSpec defines the desired state of LibvirtCloudConfig", - "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1LibvirtClusterConfig" - }, - "machinePoolConfig": { - "items": { - "$ref": "#/definitions/v1LibvirtMachinePoolConfig" + "/v1/users/assets/vsphere/dnsMappings/{uid}": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Returns the specified vSphere DNS mapping", + "operationId": "v1VsphereDnsMappingGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "VSphere DNS Mapping", + "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": "VSphere DNS Mapping Spec", + "type": "object", + "required": [ + "privateGatewayUid", + "datacenter", + "network", + "dnsName" + ], + "properties": { + "datacenter": { + "description": "VSphere datacenter name", + "type": "string" + }, + "dnsName": { + "description": "VSphere DNS name", + "type": "string" + }, + "network": { + "description": "VSphere network name", + "type": "string" + }, + "networkUrl": { + "description": "VSphere network URL", + "type": "string", + "readOnly": true + }, + "privateGatewayUid": { + "description": "VSphere private gateway uid", + "type": "string" + } + } + } + } + } + } } }, - "required": [ - "clusterConfig", - "machinePoolConfig" - ], - "type": "object" - }, - "v1LibvirtCloudConfigStatus": { - "properties": { - "conditions": { - "items": { - "$ref": "#/definitions/v1ClusterCondition" - }, - "type": "array" - }, - "nodeImages": { - "description": "NodeImages are the list of images generated on all the LibvirtHosts", - "items": { - "$ref": "#/definitions/v1LibvirtImage" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "sourceImageId": { - "description": "SourceImageId can be from packref's annotations or from pack.json", - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Updates the specified vSphere DNS mapping", + "operationId": "v1VsphereDnsMappingUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "VSphere DNS Mapping", + "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": "VSphere DNS Mapping Spec", + "type": "object", + "required": [ + "privateGatewayUid", + "datacenter", + "network", + "dnsName" + ], + "properties": { + "datacenter": { + "description": "VSphere datacenter name", + "type": "string" + }, + "dnsName": { + "description": "VSphere DNS name", + "type": "string" + }, + "network": { + "description": "VSphere network name", + "type": "string" + }, + "networkUrl": { + "description": "VSphere network URL", + "type": "string", + "readOnly": true + }, + "privateGatewayUid": { + "description": "VSphere private gateway uid", + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1LibvirtClusterConfig": { - "properties": { - "controlPlaneEndpoint": { - "$ref": "#/definitions/v1LibvirtControlPlaneEndPoint", - "description": "ControlPlaneEndpoint is the control plane endpoint, which can be an IP or FQDN" - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "items": { - "type": "string" - }, - "type": "array" - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "items": { - "type": "string" + "delete": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Deletes the specified vSphere DNS mapping", + "operationId": "v1VsphereDnsMappingDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } }, - "type": "object" + "parameters": [ + { + "type": "string", + "description": "Specify the vSphere DNS mapping uid", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1LibvirtControlPlaneEndPoint": { - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" + "/v1/users/auth/tokens/revoke": { + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Revoke access of specific token(s)", + "operationId": "v1UsersAuthTokensRevoke", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "properties": { + "tokens": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } - }, - "type": "object" + } }, - "v1LibvirtDiskSpec": { - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "format": "int32", - "type": "integer" + "/v1/users/config/scar": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Get the system Spectro repository. Restricted to edge services", + "operationId": "V1UsersConfigScarGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "description": "system scar config spec", + "type": "object", + "properties": { + "baseContentPath": { + "type": "string" + }, + "caCert": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "insecureVerify": { + "type": "boolean" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + } + } + } } - }, - "required": [ - "sizeInGB" - ], - "type": "object" + } }, - "v1LibvirtHostIdentity": { - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "$ref": "#/definitions/v1EdgeHostSSHSecret", - "description": "SSHSecrets to the secret containing ssh-username" + "/v1/users/kubectl/session/{sessionUid}": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "gets users kubectl session", + "tags": [ + "users" + ], + "summary": "gets users kubectl session", + "operationId": "V1UsersKubectlSessionUid", + "parameters": [ + { + "type": "string", + "name": "sessionUid", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "clusterUid": { + "type": "string" + }, + "creationTime": { + "type": "string" + }, + "isActive": { + "type": "boolean" + }, + "podIp": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "port": { + "type": "string" + }, + "projectUid": { + "type": "string" + }, + "sessionUid": { + "type": "string" + }, + "shellyCluster": { + "type": "string" + }, + "tenantClusterEndpoint": { + "type": "string" + }, + "userName": { + "type": "string" + }, + "userUid": { + "type": "string" + } + } + } + } } - }, - "type": "object" + } }, - "v1LibvirtImage": { - "description": "LibvirtImage is the Image generated on the LibvirtHost", - "properties": { - "hostID": { - "description": "HostID is the ID of the LibvirtHost", - "type": "string" - }, - "imageName": { - "description": "ImageName is the name of the Libvirt image", - "type": "string" - }, - "storagePool": { - "description": "StoragePool is the name of the storagePool where is image is located", - "type": "string" + "/v1/users/me": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "Returns a User with permissions with scopes", + "tags": [ + "users" + ], + "summary": "Returns the specified User ACL information", + "operationId": "v1UsersMeGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "User information wrt permissions", + "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": "User specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "status": { + "description": "User status with permissions", + "properties": { + "activationLink": { + "description": "Contains activation link for the user", + "type": "string" + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean" + }, + "isContractAccepted": { + "description": "Specifies if user account has accepted the contract", + "type": "boolean", + "x-omitempty": false + }, + "loginMode": { + "description": "User's login Mode", + "type": "string" + }, + "projectPermissions": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "tenant": { + "type": "object", + "properties": { + "orgName": { + "type": "string" + }, + "tenantUid": { + "type": "string" + } + } + }, + "tenantPermissions": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } } - }, - "type": "object" + } }, - "v1LibvirtInstanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "properties": { - "cpuPassthroughSpec": { - "$ref": "#/definitions/v1CPUPassthroughSpec", - "description": "Defines CPU Passthrough Spec. A not null value enables CPU Passthrough for the libvirt domain. Further cache passthrough can be enabled with the CPU passthrough spec." - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "$ref": "#/definitions/v1GPUConfig", - "description": "GPU configuration" - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "format": "int32", - "type": "integer" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "format": "int32", - "type": "integer" + "/v1/users/meta": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Retrieves a list of users metadata", + "operationId": "v1UsersMetadata", + "responses": { + "200": { + "description": "An array of users metadata items", + "schema": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "User meta entity", + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + } + } + } + } } - }, - "required": [ - "numCPUs", - "memoryInMB" - ], - "type": "object" + } }, - "v1LibvirtMachine": { - "description": "Libvirt cloud VM definition", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1LibvirtMachineSpec" - }, - "status": { - "$ref": "#/definitions/v1CloudMachineStatus" + "/v1/users/password/change": { + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "User password change request via current password and emailId", + "tags": [ + "users" + ], + "summary": "User password change request using the user emailId", + "operationId": "V1UsersPasswordChange", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "required": [ + "newPassword", + "emailId", + "currentPassword" + ], + "properties": { + "currentPassword": { + "type": "string" + }, + "emailId": { + "type": "string" + }, + "newPassword": { + "type": "string" + } + } + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "type": "string", + "description": "Audit uid for the request" + } + } + } } } }, - "v1LibvirtMachinePoolCloudConfigEntity": { - "properties": { - "instanceType": { - "$ref": "#/definitions/v1LibvirtInstanceType" - }, - "nonRootDisksInGB": { - "description": "NonRootDisksInGB is the list of additional disks, if required, in GB", - "items": { - "$ref": "#/definitions/v1LibvirtDiskSpec" - }, - "type": "array" - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "items": { - "$ref": "#/definitions/v1LibvirtPlacementEntity" + "/v1/users/password/reset": { + "patch": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "rootDiskInGB": { - "description": "RootDiskInGB is the size of a vm's root disk, in GiB", - "format": "int32", - "type": "integer" - }, - "xslTemplate": { - "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition", - "type": "string" + { + "Authorization": [] + } + ], + "description": "User password request will be sent to the supplied emailId", + "tags": [ + "users" + ], + "summary": "User password reset request using the email id", + "operationId": "v1UsersEmailPasswordReset", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "required": [ + "emailId" + ], + "properties": { + "emailId": { + "type": "string" + } + } + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "type": "string", + "description": "Audit uid for the request" + } + } + } } - }, - "required": [ - "instanceType", - "placements", - "rootDiskInGB" - ] + } }, - "v1LibvirtMachinePoolConfig": { - "properties": { - "additionalLabels": { - "additionalProperties": { - "type": "string" - }, - "description": "additionalLabels", - "type": "object" - }, - "additionalTags": { - "additionalProperties": { - "type": "string" - }, - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object" - }, - "instanceType": { - "$ref": "#/definitions/v1LibvirtInstanceType", - "description": "InstanceType defines the instance configuration of the vms in the machine pool" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: master/worker, gpu, windows", - "items": { - "type": "string" - }, - "type": "array" - }, - "machinePoolProperties": { - "$ref": "#/definitions/v1MachinePoolProperties" - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "format": "int32", - "type": "integer" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "format": "int32", - "type": "integer" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "format": "int32", - "type": "integer" - }, - "nonRootDisksInGB": { - "description": "NonRootDisksInGB is the list of additional disks, if required, in GB", - "items": { - "$ref": "#/definitions/v1LibvirtDiskSpec" - }, - "type": "array" - }, - "placements": { - "description": "Placements defines the configurations of the failureDomains(hosts) for the machine pool", - "items": { - "$ref": "#/definitions/v1LibvirtPlacementConfig" - }, - "type": "array" - }, - "rootDiskInGB": { - "description": "RootDiskInGB is the size of a vm's root disk, in GB", - "format": "int32", - "type": "integer" - }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", - "type": "integer" - }, - "taints": { - "description": "master or worker taints", - "items": { - "$ref": "#/definitions/v1Taint" + "/v1/users/summary": { + "post": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "updateStrategy": { - "$ref": "#/definitions/v1UpdateStrategy", - "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", - "type": "boolean" - }, - "xslTemplate": { - "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition", - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Retrieves a list of users summary with provided filter spec", + "operationId": "v1UsersSummaryGet", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Users filter summary spec", + "properties": { + "filter": { + "description": "Users filter spec", + "properties": { + "emailId": { + "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 + } + } + }, + "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" + ], + "x-nullable": true + }, + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "An array of users summary items", + "schema": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "User 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": { + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "projects": { + "description": "Deprecated.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "projectsCount": { + "type": "integer", + "format": "int32", + "x-omitempty": false + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "teams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + } + } + }, + "status": { + "description": "User status", + "properties": { + "activationLink": { + "description": "provides the link to activate or reset the user password", + "type": "string", + "x-omitempty": false + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean", + "x-omitempty": false + }, + "isPasswordResetting": { + "description": "Specifies if user in multi org requested password reset", + "type": "boolean", + "x-omitempty": false + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } + } + } + } + } + } + } } - }, - "required": [ - "instanceType", - "placements", - "rootDiskInGB" - ], - "type": "object" + } }, - "v1LibvirtMachinePoolConfigEntity": { - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1LibvirtMachinePoolCloudConfigEntity" - }, - "poolConfig": { - "$ref": "#/definitions/v1MachinePoolConfigEntity" + "/v1/users/system/macros": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "List the macros of the system", + "operationId": "v1UsersSystemMacrosList", + "responses": { + "200": { + "description": "OK", + "schema": { + "properties": { + "macros": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1LibvirtMachineSpec": { - "description": "libvirt cloud VM definition spec", - "properties": { - "disks": { - "items": { - "$ref": "#/definitions/v1LibvirtDiskSpec" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "edgeHostUid": { - "type": "string" - }, - "failureDomain": { - "type": "string" - }, - "imageName": { - "type": "string" - }, - "instanceType": { - "$ref": "#/definitions/v1LibvirtInstanceType" - }, - "nics": { - "items": { - "$ref": "#/definitions/v1LibvirtNicSpec" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Update the macros of the system", + "operationId": "v1UsersSystemMacrosUpdate", + "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": [] }, - "type": "array" - }, - "targetStoragePool": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Create or add new macros for the system user", + "operationId": "v1UsersSystemMacrosCreate", + "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" + } } }, - "type": "object" - }, - "v1LibvirtMachines": { - "description": "Libvirt machine list", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1LibvirtMachine" + "delete": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Delete the macros for the system user by macro name", + "operationId": "v1UsersSystemMacrosDeleteByMacroName", + "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" + } } }, - "required": [ - "items" - ], - "type": "object" - }, - "v1LibvirtNetworkSpec": { - "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", - "properties": { - "networkName": { - "description": "NetworkName of the libvirt network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "enum": [ - "default", - "bridge" - ], - "type": "string" + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Update the macros for the system user by macro name", + "operationId": "v1UsersSystemMacrosUpdateByMacroName", + "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" + } } - }, - "required": [ - "networkName", - "networkType" - ], - "type": "object" + } }, - "v1LibvirtNicSpec": { - "description": "Libvirt network interface", - "properties": { - "index": { - "format": "int8", - "type": "integer" - }, - "macAddress": { - "type": "string" - }, - "privateIPs": { - "items": { - "type": "string" + "/v1/users/{uid}": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "description": "Returns a User for the specified uid.", + "tags": [ + "users" + ], + "summary": "Returns the specified User", + "operationId": "v1UsersUidGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "User", + "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": "User specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "status": { + "description": "User status", + "properties": { + "activationLink": { + "description": "provides the link to activate or reset the user password", + "type": "string", + "x-omitempty": false + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean", + "x-omitempty": false + }, + "isPasswordResetting": { + "description": "Specifies if user in multi org requested password reset", + "type": "boolean", + "x-omitempty": false + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } + } + } + } } }, - "required": [ - "macAddress" - ], - "type": "object" - }, - "v1LibvirtPlacementConfig": { - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "gpuDevices": { - "description": "GPU Devices is the list of LibvirtHost GPU devices, to be used for this placement", - "items": { - "$ref": "#/definitions/v1GPUDeviceSpec" - }, - "type": "array" - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the LibvirtHost", - "type": "string" - }, - "hostIdentity": { - "$ref": "#/definitions/v1LibvirtHostIdentity", - "description": "HostIdentity is the identity to access the LibvirtHost" - }, - "hostUid": { - "description": "HostUid is the ID of the LibvirtHost", - "type": "string" - }, - "networks": { - "description": "Networks defines the network specifications of the vms in the machine pool", - "items": { - "$ref": "#/definitions/v1LibvirtNetworkSpec" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "sourceStoragePool": { - "description": "SourceStoragePool is the storage pool for the vm image", - "type": "string" - }, - "targetStoragePool": { - "description": "TargetStoragePool is the optional storage pool from which additional disks are assigned. If not specified, the sourceStoragePool is also used as the targetStoragePool", - "type": "string" + { + "Authorization": [] + } + ], + "description": "A user is created for the given user context", + "tags": [ + "users" + ], + "summary": "Update User", + "operationId": "v1UsersUidUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "User", + "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": "User Entity input", + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "description": "Deprecated. Use 'v1/users/{uid}/roles' API to assign roles.", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "required": [ - "hostUid", - "hostAddress", - "networks", - "sourceStoragePool" - ], - "type": "object" - }, - "v1LibvirtPlacementEntity": { - "description": "Libvirt placement config", - "properties": { - "dataStoragePool": { - "type": "string" - }, - "gpuDevices": { - "description": "GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.", - "items": { - "$ref": "#/definitions/v1GPUDeviceSpec" - }, - "type": "array" - }, - "hostUid": { - "type": "string" - }, - "networks": { - "items": { - "$ref": "#/definitions/v1LibvirtNetworkSpec" + "delete": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "sourceStoragePool": { - "type": "string" - }, - "targetStoragePool": { - "type": "string" + { + "Authorization": [] + } + ], + "description": "Deletes the specified User for given uid", + "tags": [ + "users" + ], + "summary": "Deletes the specified User", + "operationId": "v1UsersUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } }, - "required": [ - "hostUid" - ], - "type": "object" - }, - "v1LifecycleConfig": { - "properties": { - "pause": { - "default": false, - "description": "enable pause life cycle config", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1LifecycleConfigEntity": { - "properties": { - "lifecycleConfig": { - "$ref": "#/definitions/v1LifecycleConfig" + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "User is patched for the specified information", + "tags": [ + "users" + ], + "summary": "Patches the specified User", + "operationId": "v1UsersUidPatch", + "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" + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1LifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ], - "type": "string" - } - } - }, - "v1ListMetaData": { - "description": "ListMeta describes metadata for the resource listing", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", + "parameters": [ + { "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 + "name": "uid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1LoadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "items": { - "type": "string" + "/v1/users/{uid}/password/change": { + "patch": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "description": "User password change request via current password", + "tags": [ + "users" + ], + "summary": "User password change request using the user uid", + "operationId": "v1UsersUidPasswordChange", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "required": [ + "newPassword" + ], + "properties": { + "currentPassword": { + "type": "string" + }, + "newPassword": { + "type": "string" + } + } + } + } + ], + "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 + } + ] }, - "v1LoadBalancerService": { - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "items": { - "$ref": "#/definitions/v1ServicePort" + "/v1/users/{uid}/password/reset": { + "patch": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "description": "User password reset request, will send the password reset option through the emailId", + "tags": [ + "users" + ], + "summary": "User password reset request using the user uid", + "operationId": "v1UsersUidPasswordReset", + "responses": { + "204": { + "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 + } + ] }, - "v1LoadBalancerSpec": { - "description": "LoadBalancerSpec defines an Azure load balancer.", - "properties": { - "apiServerLBStaticIP": { - "type": "string" - }, - "ipAllocationMethod": { - "default": "Dynamic", - "enum": [ - "Static", - "Dynamic" - ], - "type": "string" - }, - "privateDNSName": { - "type": "string" - }, - "type": { - "default": "Public", - "description": "Load Balancer type", - "enum": [ - "Internal", - "Public" - ], - "type": "string" + "/v1/users/{uid}/projects": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "Returns a User with projects and roles", + "tags": [ + "users" + ], + "summary": "Returns the specified User Projects and Roles information", + "operationId": "v1UsersProjectRoles", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "inheritedRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "uid": { + "type": "string" + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1LocationType": { - "default": "s3", - "description": "Location type", - "enum": [ - "s3", - "gcp", - "minio" - ], - "type": "string" - }, - "v1Lock": { - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta", - "type": "object", - "x-omitempty": false - }, - "spec": { - "properties": { - "expireAt": { - "$ref": "#/definitions/v1Time", - "x-omitempty": false - }, - "key": { - "type": "string", - "x-omitempty": false + "put": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "User is updated with projects and roles", + "tags": [ + "users" + ], + "summary": "Updates the projects and roles for user", + "operationId": "v1UsersProjectRolesPut", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "projectUid": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } } - }, - "type": "object" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1Locks": { - "items": { - "$ref": "#/definitions/v1Lock" + "/v1/users/{uid}/resourceRoles": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "Returns resource roles for user", + "tags": [ + "users" + ], + "summary": "Returns the specified individual and resource roles for a user", + "operationId": "v1UsersUidResourceRoles", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "resourceRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "filterRefs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "projectUids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "uid": { + "type": "string" + } + } + } + } + } + } + } + } }, - "type": "array", - "uniqueItems": true - }, - "v1Login": { - "description": "Login input", - "properties": { - "emailId": { - "type": "string" + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "Resource roles added to specific user", + "tags": [ + "users" + ], + "summary": "Add resource roles for user", + "operationId": "v1UsersUidResourceRolesCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "filterRefs": { + "type": "array", + "items": { + "type": "string" + } + }, + "projectUids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1LoginBannerSettings": { - "properties": { - "Message": { - "description": "Login banner message displayed to the user", - "type": "string", - "x-omitempty": false - }, - "isEnabled": { - "description": "Set to 'true' if login banner has to be displayed for user", - "type": "boolean", - "x-omitempty": false - }, - "title": { - "description": "Banner title displayed to the user", + "parameters": [ + { "type": "string", - "x-omitempty": false + "name": "uid", + "in": "path", + "required": true } - } + ] }, - "v1LoginResponse": { - "description": "Returns the allowed login method and information with the organization details", - "properties": { - "appEnv": { - "description": "Describes the env type. Possible values [ saas, self-hosted, quick-start, enterprise, airgap]", - "type": "string" - }, - "authType": { - "description": "Describes the default mode of authentication. Possible values [password, sso]", - "enum": [ - "password", - "sso" - ], - "type": "string" - }, - "orgName": { - "description": "Organization name.", - "type": "string" - }, - "redirectUrl": { - "description": "Describes the default redirect Url for authentication. If authType is sso, it will have tenant configured saml/oidc idp url else it will be users organization url", - "type": "string", - "x-omitempty": false - }, - "rootDomain": { - "description": "Describes the domain url on which the saas is available", - "type": "string" - }, - "securityMode": { - "description": "Describes which security mode is enabled", - "type": "string" - }, - "ssoLogins": { - "$ref": "#/definitions/v1SsoLogins", - "description": "Just Inside. Describes the allowed social logins" - }, - "totalTenants": { - "description": "Describes the total number of tenant present in the system", - "format": "int64", - "type": "number" + "/v1/users/{uid}/resourceRoles/{resourceRoleUid}": { + "delete": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Deleted the resource roles from user", + "operationId": "v1UsersUidResourceRolesUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } } }, - "type": "object" - }, - "v1LogoutResponse": { - "description": "Logout response specifying the redirect url", - "properties": { - "redirectUrl": { - "type": "string", - "x-omitempty": false + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "Specific resource roles fo user is updated", + "tags": [ + "users" + ], + "summary": "Updates the resource roles for user", + "operationId": "v1UsersResourceRolesUidUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "filterRefs": { + "type": "array", + "items": { + "type": "string" + } + }, + "projectUids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1MaasAccount": { - "description": "Maas cloud account information", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1MaasCloudAccount" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true }, - "status": { - "$ref": "#/definitions/v1CloudAccountStatus" + { + "type": "string", + "name": "resourceRoleUid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1MaasAccounts": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1MaasAccount" + "/v1/users/{uid}/roles": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + { + "Authorization": [] + } + ], + "description": "Returns roles clubbed from team", + "tags": [ + "users" + ], + "summary": "Returns the specified individual and team roles for a user", + "operationId": "v1UsersUidRoles", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "inheritedRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + } + } + } + } } }, - "required": [ - "items" - ], - "type": "object" - }, - "v1MaasCloudAccount": { - "properties": { - "apiEndpoint": { - "type": "string" - }, - "apiKey": { - "type": "string" - }, - "preferredSubnets": { - "description": "list of preferred subnets order in the list reflects order in which subnets will be selected for ip address selection in apiserver dns endpoint this way user can specify external or preferable subnet \"10.11.130.0/24,10.10.10.0/24\"", - "items": { - "default": "", - "type": "string" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "description": "User is updated with roles", + "tags": [ + "users" + ], + "summary": "Updates the roles for user", + "operationId": "v1UsersUidRolesUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "required": [ - "apiKey", - "apiEndpoint" - ], - "type": "object" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1MaasCloudClusterConfigEntity": { - "description": "Maas cloud cluster config entity", - "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1MaasClusterConfig" + "/v1/users/{uid}/status/loginMode": { + "patch": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "users" + ], + "summary": "Users status login mode", + "operationId": "v1UsersStatusLoginMode", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "properties": { + "loginMode": { + "type": "string", + "enum": [ + "dev", + "devops" + ] + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1MaasCloudConfig": { - "description": "MaasCloudConfig is the Schema for the maascloudconfigs 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/v1MaasCloudConfigSpec" - }, - "status": { - "$ref": "#/definitions/v1MaasCloudConfigStatus" + "/v1/workspaces": { + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Create workspace", + "operationId": "v1WorkspacesCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Workspace 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": "Workspace specifications", + "properties": { + "clusterNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster namespace", + "properties": { + "image": { + "description": "Workspace namespace image information", + "properties": { + "blackListedImages": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "isRegex": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "namespaceResourceAllocation": { + "description": "Workspace namespace resource allocation", + "properties": { + "clusterResourceAllocations": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace resource allocation", + "properties": { + "clusterUid": { + "type": "string" + }, + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + }, + "defaultResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + } + } + }, + "clusterRbacs": { + "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" + } + } + } + } + } + } + } + } + }, + "clusterRefs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } + }, + "policies": { + "description": "Workspace policies", + "properties": { + "backupPolicy": { + "description": "Cluster backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "type": "boolean" + } + } + } + } + }, + "quota": { + "description": "Workspace resource quota", + "properties": { + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "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" + } }, - "v1MaasCloudConfigSpec": { - "description": "MaasCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "properties": { - "cloudAccountRef": { - "$ref": "#/definitions/v1ObjectReference", - "description": "cloudAccountRef should point to the secret which contains MaasCloudAccount" - }, - "clusterConfig": { - "$ref": "#/definitions/v1MaasClusterConfig" - }, - "machinePoolConfig": { - "items": { - "$ref": "#/definitions/v1MaasMachinePoolConfig" + "/v1/workspaces/teams/{teamUid}/roles": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Returns the specified team's workspaces and roles data", + "operationId": "v1TeamsWorkspaceGetRoles", + "parameters": [ + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "List all workspaces with the roles assigned to the users", + "properties": { + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "List projects and its workspaces", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "workspaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace users and their roles", + "properties": { + "inheritedRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "uid": { + "type": "string" + } + } + } + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1MaasCloudConfigStatus": { - "description": "MaasCloudConfigStatus defines the observed state of MaasCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "properties": { - "ansibleRoleDigest": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - }, - "conditions": { - "items": { - "$ref": "#/definitions/v1ClusterCondition" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "nodeImage": { - "$ref": "#/definitions/v1MaasImage" - }, - "roleDigest": { - "additionalProperties": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Updates the workspace roles for the specified team", + "operationId": "v1TeamsWorkspaceRolesPut", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "workspaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "uid": { + "type": "string" + } + } + } + } + } + } }, - "description": "this map will be for ansible roles present in eack pack", - "type": "object" - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "type": "object" - }, - "v1MaasClusterConfig": { - "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools", - "properties": { - "domain": { - "description": "Domain name of the cluster to be provisioned", - "type": "string" - }, - "sshKeys": { - "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user", - "items": { - "type": "string" - }, - "type": "array" + "parameters": [ + { + "type": "string", + "name": "teamUid", + "in": "path", + "required": true } - }, - "required": [ - "domain" - ], - "type": "object" + ] }, - "v1MaasDomain": { - "description": "Maas domain", - "properties": { - "name": { - "description": "Name of Maas domain", - "type": "string" + "/v1/workspaces/users/{userUid}/roles": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "description": "Returns a User with workspaces and roles", + "tags": [ + "workspaces" + ], + "summary": "Returns the specified User workspaces and Roles information", + "operationId": "v1UsersWorkspaceGetRoles", + "parameters": [ + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "List all workspaces with the roles assigned to the users", + "properties": { + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "List projects and its workspaces", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "workspaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace users and their roles", + "properties": { + "inheritedRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "uid": { + "type": "string" + } + } + } + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1MaasDomains": { - "description": "List of Maas domains", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1MaasDomain" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true + { + "Authorization": [] + } + ], + "description": "User is updated with workspace roles", + "tags": [ + "workspaces" + ], + "summary": "Updates the workspace roles for user", + "operationId": "v1UsersWorkspaceRolesPut", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "workspaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "items": { + "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" + } } }, - "required": [ - "items" - ], - "type": "object" - }, - "v1MaasImage": { - "description": "Name of the image", - "properties": { - "name": { - "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", - "type": "string" - }, - "state": { - "type": "string" + "parameters": [ + { + "type": "string", + "name": "userUid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1MaasInstanceType": { - "properties": { - "minCPU": { - "description": "Minimum CPU cores", - "format": "int32", - "type": "integer" - }, - "minMemInMB": { - "description": "Minimum memory in MiB", - "format": "int32", - "type": "integer" + "/v1/workspaces/validate/name": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Validates the workspace name", + "operationId": "v1WorkspacesValidateName", + "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" + } + } + } } - }, - "type": "object" + } }, - "v1MaasMachine": { - "description": "Maas cloud VM definition", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1MaasMachineSpec" - }, - "status": { - "$ref": "#/definitions/v1CloudMachineStatus" + "/v1/workspaces/{uid}": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Returns the specified workspace", + "operationId": "v1WorkspacesUidGet", + "parameters": [ + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "description": "Workspace 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": "Workspace specifications", + "properties": { + "clusterNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster namespace", + "properties": { + "image": { + "description": "Workspace namespace image information", + "properties": { + "blackListedImages": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "isRegex": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "namespaceResourceAllocation": { + "description": "Workspace namespace resource allocation", + "properties": { + "clusterResourceAllocations": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace resource allocation", + "properties": { + "clusterUid": { + "type": "string" + }, + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + }, + "defaultResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + } + } + }, + "clusterRbacs": { + "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" + } + } + } + } + } + } + } + } + }, + "clusterRefs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } + }, + "policies": { + "description": "Workspace policies", + "properties": { + "backupPolicy": { + "description": "Cluster backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "type": "boolean" + } + } + } + } + }, + "quota": { + "description": "Workspace resource quota", + "properties": { + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + } + }, + "status": { + "description": "Workspace status", + "properties": { + "errors": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace error", + "properties": { + "clusterUid": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "name": { + "type": "string" + }, + "resourceType": { + "type": "string" + } + } + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1MaasMachineConfigEntity": { - "properties": { - "azs": { - "description": "for master pool, this will be the failure domains for kcp", - "items": { - "type": "string" + "delete": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "instanceType": { - "$ref": "#/definitions/v1MaasInstanceType" - }, - "resourcePool": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Deletes the specified workspace", + "operationId": "v1WorkspacesUidDelete", + "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", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1MaasMachinePoolCloudConfigEntity": { - "properties": { - "azs": { - "items": { - "type": "string" + "/v1/workspaces/{uid}/backup": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "instanceType": { - "$ref": "#/definitions/v1MaasInstanceType" - }, - "resourcePool": { - "description": "the resource pool", - "type": "string" - }, - "tags": { - "description": "Tags in maas environment", - "items": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Returns the workspace backup result", + "operationId": "v1WorkspaceOpsBackupGet", + "parameters": [ + { + "type": "string", + "name": "backupRequestUid", + "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": "Workspace 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": "Workspace backup spec", + "properties": { + "config": { + "description": "Workspace backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "type": "boolean" + } + } + }, + "workspaceUid": { + "type": "string" + } + } + }, + "status": { + "description": "Workspace backup status", + "properties": { + "workspaceBackupStatuses": { + "type": "array", + "items": { + "description": "Workspace backup status meta", + "properties": { + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "requestUid": { + "type": "string" + }, + "workspaceBackupConfig": { + "description": "Workspace cluster backup config", + "properties": { + "backupName": { + "type": "string" + }, + "backupState": { + "description": "Workspace backup state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "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" + }, + "clusterBackupRefs": { + "type": "array", + "items": { + "description": "Workspace cluster backup response", + "properties": { + "backupStatusMeta": { + "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" + } + } + }, + "backupUid": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } + }, + "config": { + "description": "Workspace backup status config", + "properties": { + "backupName": { + "type": "string" + }, + "durationInHours": { + "type": "number", + "format": "int64" + }, + "includeAllDisks": { + "type": "boolean" + }, + "includeClusterResources": { + "type": "boolean" + }, + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "requestTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } + } + } + } + } + } + } + } + } } }, - "required": [ - "instanceType", - "resourcePool" - ], - "type": "object" - }, - "v1MaasMachinePoolConfig": { - "properties": { - "additionalLabels": { - "additionalProperties": { - "type": "string" - }, - "description": "additionalLabels", - "type": "object" - }, - "additionalTags": { - "additionalProperties": { - "type": "string" - }, - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object" - }, - "azs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "instanceType": { - "$ref": "#/definitions/v1MaasInstanceType", - "description": "InstanceType defines the required CPU, Memory" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: master/worker, gpu, windows", - "items": { - "type": "string" - }, - "type": "array" - }, - "machinePoolProperties": { - "$ref": "#/definitions/v1MachinePoolProperties" - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "format": "int32", - "type": "integer" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "format": "int32", - "type": "integer" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "format": "int32", - "type": "integer" - }, - "resourcePool": { - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", - "type": "integer" - }, - "tags": { - "description": "Tags in maas environment", - "items": { - "type": "string" + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "taints": { - "description": "master or worker taints", - "items": { - "$ref": "#/definitions/v1Taint" + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Update workspace backup settings", + "operationId": "v1WorkspaceOpsBackupUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Cluster backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "type": "boolean" + } + } + } }, - "type": "array", - "uniqueItems": true - }, - "updateStrategy": { - "$ref": "#/definitions/v1UpdateStrategy", - "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", - "type": "boolean" - } - }, - "required": [ - "instanceType" - ], - "type": "object" - }, - "v1MaasMachinePoolConfigEntity": { - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1MaasMachinePoolCloudConfigEntity" - }, - "poolConfig": { - "$ref": "#/definitions/v1MachinePoolConfigEntity" + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } } }, - "required": [ - "cloudConfig" - ], - "type": "object" - }, - "v1MaasMachineSpec": { - "description": "Maas cloud VM definition spec", - "properties": { - "az": { - "type": "string" - }, - "hostname": { - "type": "string" - }, - "nics": { - "items": { - "$ref": "#/definitions/v1MaasNic" + "post": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Create workspace backup settings", + "operationId": "v1WorkspaceOpsBackupCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Cluster backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "type": "boolean" + } + } + } }, - "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" - }, - "v1MaasMachines": { - "description": "List of MAAS machines", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1MaasMachine" + "delete": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Delete workspace backup", + "operationId": "v1WorkspaceOpsBackupDelete", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Cluster backup delete config", + "properties": { + "clusterConfigs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace backup cluster ref", + "properties": { + "backupName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } + }, + "requestUid": { + "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" + } } }, - "required": [ - "items" - ], - "type": "object" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1MaasNic": { - "description": "Maas network interface", - "properties": { - "index": { - "format": "int8", - "type": "integer" - }, - "privateIPs": { - "items": { - "type": "string" + "/v1/workspaces/{uid}/backup/onDemand": { + "post": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "publicIp": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Create On demand Workspace Backup", + "operationId": "v1WorkspaceOpsBackupOnDemandCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Cluster backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "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" - }, - "v1MaasPool": { - "description": "Maas pool", - "properties": { - "description": { - "description": "Description of Maas domain", - "type": "string" - }, - "name": { - "description": "Name of Maas pool", - "type": "string" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1MaasPools": { - "description": "List of Maas pools", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1MaasPool" + "/v1/workspaces/{uid}/clusterNamespaces": { + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Updates the specified workspace namespaces", + "operationId": "v1WorkspacesUidClusterNamespacesUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Workspace cluster namespaces update entity", + "properties": { + "clusterNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster namespace", + "properties": { + "image": { + "description": "Workspace namespace image information", + "properties": { + "blackListedImages": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "isRegex": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "namespaceResourceAllocation": { + "description": "Workspace namespace resource allocation", + "properties": { + "clusterResourceAllocations": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace resource allocation", + "properties": { + "clusterUid": { + "type": "string" + }, + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + }, + "defaultResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + } + } + }, + "clusterRefs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } + }, + "quota": { + "description": "Workspace resource quota", + "properties": { + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "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" - }, - "v1MaasSubnet": { - "description": "Maas subnet", - "properties": { - "id": { - "description": "Id of Maas subnet", - "type": "integer" - }, - "name": { - "description": "Name of Maas subnet", - "type": "string" - }, - "space": { - "description": "Space associated with Maas subnet", - "type": "string" - }, - "vlans": { - "$ref": "#/definitions/v1MaasVlan" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1MaasSubnets": { - "description": "List of Maas subnets", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1MaasSubnet" + "/v1/workspaces/{uid}/clusterRbacs": { + "post": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Create cluster rbac in workspace", + "operationId": "v1WorkspacesClusterRbacCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "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": "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" - }, - "v1MaasTag": { - "description": "Maas tag", - "properties": { - "comment": { - "description": "Comment on Maas tag", - "type": "string" - }, - "definition": { - "description": "Definition of Maas tag", - "type": "string" - }, - "kernelOpts": { - "description": "Kernel Opts on Maas tag", - "type": "string" - }, - "name": { - "description": "Name of Maas tag", - "type": "string" - }, - "resourceUri": { - "description": "Description of Maas tag", - "type": "string" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1MaasTags": { - "description": "List of Maas tags", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1MaasTag" + "/v1/workspaces/{uid}/clusterRbacs/{clusterRbacUid}": { + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Updates the specified workspace cluster rbac", + "operationId": "v1WorkspacesUidClusterRbacUpdate", + "parameters": [ + { + "name": "body", + "in": "body", + "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": "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" - }, - "v1MaasVlan": { - "description": "Maas vlan entity", - "properties": { - "fabric": { - "description": "Fabric associated with Maas Vlan", - "type": "string" - }, - "id": { - "description": "Id of Maas Vlan", - "type": "integer" - }, - "name": { - "description": "Name of Maas Vlan", - "type": "string" + "delete": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Deletes the specified workspace cluster rbac", + "operationId": "v1WorkspacesUidClusterRbacDelete", + "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" - }, - "v1MaasZone": { - "description": "Maas zone", - "properties": { - "description": { - "description": "Description of Maas domain", - "type": "string" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true }, - "name": { - "description": "Name of Maas zone", - "type": "string" + { + "type": "string", + "name": "clusterRbacUid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1MaasZones": { - "description": "List of Maas zones", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1MaasZone" + "/v1/workspaces/{uid}/meta": { + "put": { + "security": [ + { + "ApiKey": [] }, - "type": "array", - "uniqueItems": true + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Updates the specified workspace meta", + "operationId": "v1WorkspacesUidMetaUpdate", + "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" + } } }, - "required": [ - "items" - ], - "type": "object" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true + } + ] }, - "v1MachineCertificate": { - "description": "K8 Certificates for master nodes", - "properties": { - "certificateAuthorities": { - "description": "Applicable certificate authorities", - "items": { - "$ref": "#/definitions/v1CertificateAuthority" + "/v1/workspaces/{uid}/restore": { + "get": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "name": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Returns the workspace restore result", + "operationId": "v1WorkspaceOpsRestoreGet", + "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": "Workspace 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": "Workspace restore spec", + "properties": { + "workspaceUid": { + "type": "string" + } + } + }, + "status": { + "description": "Workspace restore status", + "properties": { + "workspaceRestoreStatuses": { + "type": "array", + "items": { + "description": "Workspace restore status meta", + "properties": { + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "requestUid": { + "type": "string" + }, + "workspaceRestoreConfig": { + "description": "Workspace cluster restore config", + "properties": { + "backupName": { + "type": "string" + }, + "clusterRestoreRefs": { + "type": "array", + "items": { + "description": "Workspace cluster restore response", + "properties": { + "backupName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + }, + "restoreStatusMeta": { + "description": "Workspace cluster restore state", + "properties": { + "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" + }, + "state": { + "type": "string" + } + } + }, + "restoreUid": { + "type": "string" + } + } + } + }, + "restoreState": { + "description": "Workspace restore state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "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" + } + } + } + } + } + } + } + } + } + } + } } }, - "type": "object" - }, - "v1MachineCertificates": { - "description": "K8 Certificates for all the cluster's master nodes", - "properties": { - "machineCertificates": { - "items": { - "$ref": "#/definitions/v1MachineCertificate" - }, - "type": "array" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true } - }, - "type": "object" + ] }, - "v1MachineHealth": { - "description": "Machine health state", - "properties": { - "conditions": { - "items": { - "$ref": "#/definitions/v1MachineHealthCondition" + "/v1/workspaces/{uid}/restore/onDemand": { + "post": { + "security": [ + { + "ApiKey": [] }, - "type": "array" - }, - "lastHeartBeatTimestamp": { - "$ref": "#/definitions/v1Time" - }, - "state": { - "type": "string" + { + "Authorization": [] + } + ], + "tags": [ + "workspaces" + ], + "summary": "Create On demand Workspace Restore", + "operationId": "v1WorkspaceOpsRestoreOnDemandCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "description": "Cluster restore config", + "required": [ + "backupRequestUid" + ], + "properties": { + "backupRequestUid": { + "type": "string" + }, + "restoreConfigs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster restore config", + "required": [ + "backupName", + "sourceClusterUid" + ], + "properties": { + "backupName": { + "type": "string" + }, + "includeClusterResources": { + "type": "boolean" + }, + "includeNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "preserveNodePorts": { + "type": "boolean" + }, + "restorePVs": { + "type": "boolean" + }, + "sourceClusterUid": { + "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" - }, - "v1MachineHealthCheckConfig": { - "properties": { - "healthCheckMaxUnhealthy": { - "description": "HealthCheckMaxUnhealthy is the value above which, if current nodes are unhealthy remediation will not be triggered Can be an absolute int64 number or a percentage string Default value is 100%, i.e by default it is disabled", - "type": "string" - }, - "networkReadyHealthCheckDuration": { - "description": "NetworkReadyHealthCheckDuration is the timeout to check for the network availability. If the network is not available in the given available time, beyond the timeout check a node will be killed and a new node will be created. Default time is 10m", - "type": "string" - }, - "nodeReadyHealthCheckDuration": { - "description": "NodeReadyHealthCheckDuration is the timeout to check for the node ready state. If the node is not ready within the time out set, the node will be deleted and a new node will be launched. Default time is 10m", - "type": "string" + "parameters": [ + { + "type": "string", + "name": "uid", + "in": "path", + "required": true } - }, - "type": "object" + ] + } + }, + "definitions": { + "URLEncodedBase64": { + "type": "string", + "format": "url-encoded-base64" }, - "v1MachineHealthCondition": { - "description": "Machine health condition", + "V1AwsAccountSts": { + "description": "AWS cloud account sts", + "type": "object", "properties": { - "message": { - "type": "string" - }, - "reason": { + "accountId": { + "description": "A 12-digit number, such as 123456789012, that uniquely identifies an AWS account", "type": "string" }, - "status": { + "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" }, - "type": { - "type": "string" - } - }, - "type": "object" - }, - "v1MachineMaintenance": { - "properties": { - "action": { - "description": "Machine maintenance mode action", + "partition": { + "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", + "type": "string", + "default": "aws", "enum": [ - "cordon", - "uncordon" - ], - "type": "string" + "aws", + "aws-us-gov" + ] } - }, - "type": "object" + } }, - "v1MachineMaintenanceStatus": { - "description": "Machine maintenance status", + "V1AwsPropertiesValidateSpec": { + "description": "AWS properties validate spec", + "type": "object", "properties": { - "action": { + "cloudAccountUid": { "type": "string" }, - "message": { + "region": { "type": "string" }, - "state": { + "sshKeyName": { "type": "string" } - }, - "type": "object" - }, - "v1MachineManagementConfig": { - "properties": { - "osPatchConfig": { - "$ref": "#/definitions/v1OsPatchConfig", - "description": "Os patch config contains properties to patch node os with latest security packages. If OsPatchConfig is not provided then node os will not be patched with latest security updates." - } - }, - "type": "object" + } }, - "v1MachinePoolConfigEntity": { - "description": "Machine pool configuration for the cluster", + "V1EksPropertiesValidateSpec": { + "description": "Eks properties validate spec", + "type": "object", "properties": { - "additionalLabels": { - "additionalProperties": { - "type": "string" - }, - "description": "Additional labels to be part of the machine pool", - "type": "object" - }, - "additionalTags": { - "additionalProperties": { - "type": "string" - }, - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object" - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: master/worker, gpu, windows", - "items": { - "type": "string" - }, - "type": "array" - }, - "machinePoolProperties": { - "$ref": "#/definitions/v1MachinePoolProperties" - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "format": "int32", - "type": "integer" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "format": "int32", - "type": "integer" + "cloudAccountUid": { + "type": "string" }, "name": { "type": "string" }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "format": "int32", - "type": "integer" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "format": "int32", - "type": "integer" - }, - "taints": { - "description": "Master or worker taints", - "items": { - "$ref": "#/definitions/v1Taint" - }, - "type": "array", - "uniqueItems": true - }, - "updateStrategy": { - "$ref": "#/definitions/v1UpdateStrategy", - "description": "Rolling update strategy for this machine pool if not specified, will use ScaleOut" - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - }, - "required": [ - "name", - "size", - "labels" - ], - "type": "object" - }, - "v1MachinePoolMeta": { - "properties": { - "cloudType": { + "region": { "type": "string" }, - "healthy": { - "description": "number of healthy machines", - "format": "int32", - "type": "integer", - "x-omitempty": false - }, - "infraProfileTemplate": { - "$ref": "#/definitions/v1ClusterProfileTemplateMeta", - "description": "InfraClusterProfile contains OS/Kernel for this NodePool" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false + "sshKeyName": { + "type": "string" }, - "labels": { - "description": "labels for this pool, example: master/worker, gpu, windows", + "subnets": { + "type": "array", "items": { "type": "string" - }, - "type": "array" - }, - "maintenanceMode": { - "description": "number of machines under maintenance", - "format": "int32", - "type": "integer", - "x-omitempty": false + } }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", - "type": "integer", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1MachinePoolProperties": { - "description": "Machine pool specific properties", - "properties": { - "archType": { - "$ref": "#/definitions/v1ArchType", - "description": "Architecture type of the pool. Default value is 'amd64'", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1MachinePoolRate": { - "description": "Machine pool estimated rate information", - "properties": { - "name": { + "vpcId": { "type": "string" - }, - "nodesCount": { - "format": "int32", - "type": "integer" - }, - "rate": { - "$ref": "#/definitions/v1CloudRate" - } - }, - "type": "object" - }, - "v1MachinePoolsMachineUids": { - "properties": { - "machinePools": { - "additionalProperties": { - "$ref": "#/definitions/v1MachineUids" - }, - "type": "object" } } }, - "v1MachineUids": { + "V1GcpPropertiesValidateSpec": { + "description": "Gcp properties validate spec", + "type": "object", "properties": { - "machineUids": { + "azs": { + "type": "array", "items": { "type": "string" - }, - "type": "array" - } - } - }, - "v1Macro": { - "properties": { - "name": { + } + }, + "cloudAccountUid": { "type": "string" }, - "value": { + "projectId": { + "type": "string" + }, + "region": { "type": "string" } } }, - "v1Macros": { + "V1PasswordsBlockList": { + "description": "List of blocklisted passwords", + "type": "object", "properties": { - "macros": { - "items": { - "$ref": "#/definitions/v1Macro" - }, - "type": "array", - "uniqueItems": true + "spec": { + "description": "List of block listed passwords", + "type": "object", + "properties": { + "passwords": { + "type": "array", + "items": { + "type": "string" + } + } + } } } }, - "v1ManagedDisk": { - "properties": { - "storageAccountType": { - "type": "string" - } - }, - "type": "object" + "urlEncodedBase64": { + "type": "string", + "format": "url-encoded-base64" }, - "v1Manifest": { - "description": "Manifest object", + "v1.AzureAccountEntitySpec": { + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "clientCloud": { + "description": "Contains configuration for Azure cloud", + "type": "string", + "default": "public", + "enum": [ + "azure-china", + "azure-government", + "public" + ] }, - "spec": { - "$ref": "#/definitions/v1ManifestPublishedSpec" - } - } - }, - "v1ManifestData": { - "description": "Published manifest object", - "properties": { - "content": { - "description": "Manifest content in yaml", + "clientId": { "type": "string" }, - "digest": { - "description": "Manifest digest", + "clientSecret": { "type": "string" - } - }, - "type": "object" - }, - "v1ManifestEntities": { - "properties": { - "items": { - "description": "Manifests array", - "items": { - "$ref": "#/definitions/v1ManifestEntity" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1ManifestEntity": { - "description": "Manifest object", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" }, - "spec": { - "$ref": "#/definitions/v1ManifestSpec" - } - } - }, - "v1ManifestInputEntity": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content", + "subscriptionId": { "type": "string" }, - "name": { - "description": "Manifest name", + "tenantId": { "type": "string" } } }, - "v1ManifestPublishedSpec": { - "description": "Manifest spec", + "v1.CloudWatchConfig": { + "description": "Cloud watch config entity", + "type": "object", "properties": { - "published": { - "$ref": "#/definitions/v1ManifestData" + "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" } } }, - "v1ManifestRefInputEntities": { - "description": "Pack manifests input params", + "v1.DataSinkCloudWatchConfig": { + "description": "Data sink cloud watch config", + "type": "object", "properties": { - "manifests": { - "description": "Pack manifests array", - "items": { - "$ref": "#/definitions/v1ManifestRefInputEntity" - }, + "payload": { + "description": "List of data sink payload entities", "type": "array", - "uniqueItems": true - } - } - }, - "v1ManifestRefInputEntity": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" + "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" + } + } }, - "uid": { - "description": "Manifest uid", - "type": "string" + "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" + } + } } } }, - "v1ManifestRefUpdateEntity": { - "description": "Manifest update request payload", + "v1.DataSinkPayload": { + "description": "Data sink payload entity", + "type": "object", "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", + "refUid": { + "description": "RefUid of the data sink payload", "type": "string" }, - "uid": { - "description": "Manifest uid", - "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" } }, - "required": [ - "name" - ] + "additionalProperties": { + "type": "object" + } }, - "v1ManifestSpec": { - "description": "Manifest spec", - "properties": { - "draft": { - "$ref": "#/definitions/v1ManifestData" + "v1.DataSinkPayloads": { + "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" + } }, - "published": { - "$ref": "#/definitions/v1ManifestData" + "additionalProperties": { + "type": "object" } - }, - "type": "object" + } }, - "v1ManifestSummary": { - "description": "Manifest object", + "v1.GcpAccountEntitySpec": { + "type": "object", "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", + "jsonCredentials": { "type": "string" }, - "uid": { - "description": "Manifest uid", + "jsonCredentialsFileUid": { "type": "string" } } }, - "v1Memory": { - "properties": { - "sizeInMB": { - "description": "memory size in bytes", - "format": "int64", - "type": "integer" - } - }, - "type": "object" - }, - "v1MetricAggregation": { - "description": "Aggregation values", + "v1AADProfile": { + "description": "AADProfile - AAD integration is managed by AKS.", + "type": "object", + "required": [ + "managed", + "adminGroupObjectIDs" + ], "properties": { - "avg": { - "type": "number", - "x-omitempty": false - }, - "count": { - "format": "int64", - "type": "number", - "x-omitempty": false - }, - "max": { - "type": "number", - "x-omitempty": false - }, - "min": { - "type": "number", - "x-omitempty": false + "adminGroupObjectIDs": { + "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.", + "type": "array", + "items": { + "type": "string" + } }, - "sum": { - "type": "number", + "managed": { + "description": "Managed - Whether to enable managed AAD.", + "type": "boolean", "x-omitempty": false } - }, - "type": "object" + } }, - "v1MetricMetadata": { + "v1APIEndpoint": { + "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", + "type": "object", + "required": [ + "host", + "port" + ], "properties": { - "name": { + "host": { + "description": "The hostname on which the API server is serving.", "type": "string" }, - "uid": { - "type": "string" + "port": { + "description": "The port on which the API server is serving.", + "type": "integer", + "format": "int32" } - }, - "type": "object" + } }, - "v1MetricPoint": { - "description": "Metric Info", + "v1APIServerAccessProfile": { + "description": "APIServerAccessProfile - access profile for AKS API server.", + "type": "object", "properties": { - "avg": { - "type": "number" - }, - "count": { - "format": "int64", - "type": "number" - }, - "max": { - "type": "number" - }, - "min": { - "type": "number" + "authorizedIPRanges": { + "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.", + "type": "array", + "items": { + "type": "string", + "default": "" + } }, - "sum": { - "type": "number" + "enablePrivateCluster": { + "description": "EnablePrivateCluster - Whether to create the cluster as a private cluster or not.", + "type": "boolean" }, - "timestamp": { - "format": "int64", - "type": "number" + "enablePrivateClusterPublicFQDN": { + "description": "EnablePrivateClusterPublicFQDN - Whether to create additional public FQDN for private cluster or not.", + "type": "boolean" }, - "value": { - "type": "number", - "x-omitempty": false + "privateDNSZone": { + "description": "PrivateDNSZone - Private dns zone mode for private cluster.", + "type": "string" } - }, - "type": "object" + } }, - "v1MetricTimeSeries": { + "v1AWSVolumeTypes": { + "description": "AWS Volume Types", + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1Metrics" - }, + "volumeTypes": { "type": "array", - "uniqueItems": true - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1MetricTimeSeriesList": { - "properties": { - "items": { "items": { - "$ref": "#/definitions/v1MetricsList" - }, - "type": "array", - "uniqueItems": true + "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" + } + } + } } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1Metrics": { + "v1AclMeta": { + "description": "Resource access control information (Read-only response data)", + "type": "object", "properties": { - "aggregation": { - "$ref": "#/definitions/v1MetricAggregation" - }, - "kind": { + "ownerUid": { + "description": "User or service uid which created the resource", "type": "string" }, - "points": { - "items": { - "$ref": "#/definitions/v1MetricPoint" - }, - "type": "array", - "uniqueItems": true + "projectUid": { + "description": "Project's uid if the resource is under a project", + "type": "string" }, - "unit": { + "tenantUid": { + "description": "Tenant's uid", "type": "string" } - }, - "type": "object" + } }, - "v1MetricsList": { + "v1ActiveTenantResources": { + "description": "Active resources of tenant", + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1MetricMetadata" - }, - "metrics": { - "items": { - "$ref": "#/definitions/v1Metrics" - }, - "type": "array", - "uniqueItems": true + "activeResources": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } } - }, - "type": "object" - }, - "v1MfaAuthenticationExtensions": { - "additionalProperties": { - "type": "object" - }, - "type": "object" + } }, - "v1MfaAuthenticatorSelection": { + "v1Address": { + "description": "Tenant Address", + "type": "object", "properties": { - "authenticatorAttachment": { + "addressLine1": { "type": "string" }, - "requireResidentKey": { - "type": "boolean" - }, - "residentKey": { + "addressLine2": { "type": "string" }, - "userVerification": { - "type": "string" - } - }, - "type": "object" - }, - "v1MfaConveyancePreference": { - "enum": [ - "none", - "indirect", - "direct", - "enterprise" - ], - "type": "string" - }, - "v1MfaCredentialCreationRequest": { - "properties": { - "_type": { + "city": { "type": "string" }, - "authenticatorAttachment": { + "country": { "type": "string" }, - "clientExtensionResults": { - "additionalProperties": { - "type": "object" - }, - "type": "object" - }, - "deviceName": { + "pincode": { "type": "string" }, - "id": { + "state": { "type": "string" - }, - "rawId": { - "$ref": "#/definitions/URLEncodedBase64" - }, - "response": { - "properties": { - "attestationObject": { - "$ref": "#/definitions/URLEncodedBase64" - }, - "clientDataJSON": { - "$ref": "#/definitions/URLEncodedBase64" - }, - "transports": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "transports": { - "items": { - "type": "string" - }, - "type": "array" } - }, - "type": "object" + } }, - "v1MfaCredentialDescriptor": { + "v1Alert": { + "type": "object", "properties": { - "attestationType": { - "type": "string" - }, - "id": { - "$ref": "#/definitions/urlEncodedBase64" - }, - "transports": { + "channels": { + "type": "array", "items": { - "type": "string" - }, - "type": "array" + "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" + } + } + } }, - "type": { + "component": { "type": "string" } - }, - "type": "object" + } }, - "v1MfaCredentialParameter": { + "v1AlertEntity": { + "type": "object", "properties": { - "alg": { - "type": "integer" - }, - "type": { - "type": "string" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1MfaDeviceMeta": { + "v1AlertNotificationStatus": { + "type": "object", "properties": { - "creationTimestamp": { - "$ref": "#/definitions/v1Time" + "isSucceeded": { + "type": "boolean", + "x-omitempty": false }, - "deviceName": { - "type": "string" - } - }, - "type": "object" - }, - "v1MfaDeviceName": { - "properties": { - "deviceName": { + "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": "object" + } }, - "v1MfaDevices": { + "v1Alerts": { + "type": "array", "items": { - "$ref": "#/definitions/v1MfaDeviceMeta" - }, - "type": "array" + "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" + } + } + } }, - "v1MfaLoginStart": { + "v1ApiEndpoint": { + "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", + "type": "object", + "required": [ + "host", + "port" + ], "properties": { - "publicKey": { - "$ref": "#/definitions/v1MfaPublicKeyCredentialRequestOptions" + "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": "object" + } }, - "v1MfaPublicKeyCredentialCreationOptions": { + "v1ApiKey": { + "description": "API key information", + "type": "object", "properties": { - "attestation": { - "$ref": "#/definitions/v1MfaConveyancePreference" - }, - "authenticatorSelection": { - "$ref": "#/definitions/v1MfaAuthenticatorSelection" - }, - "challenge": { - "$ref": "#/definitions/URLEncodedBase64" - }, - "excludeCredentials": { - "items": { - "$ref": "#/definitions/v1MfaCredentialDescriptor" - }, - "type": "array" - }, - "extensions": { - "$ref": "#/definitions/v1MfaAuthenticationExtensions" - }, - "pubKeyCredParams": { - "items": { - "$ref": "#/definitions/v1MfaCredentialParameter" - }, - "type": "array" - }, - "rp": { - "$ref": "#/definitions/v1MfaRelyingPartyEntity" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "timeout": { - "type": "integer" + "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" + } + } + } + } }, - "user": { - "$ref": "#/definitions/v1MfaUserEntity" + "status": { + "description": "API key status", + "type": "object", + "properties": { + "isActive": { + "description": "API key active state", + "type": "boolean" + } + } } - }, - "type": "object" + } }, - "v1MfaPublicKeyCredentialRequestOptions": { + "v1ApiKeyActiveState": { "properties": { - "allowCredentials": { - "items": { - "$ref": "#/definitions/v1MfaCredentialDescriptor" - }, - "type": "array" - }, - "challenge": { - "$ref": "#/definitions/urlEncodedBase64" - }, - "extensions": { - "$ref": "#/definitions/v1MfaAuthenticationExtensions" - }, - "rpId": { + "isActive": { + "description": "API key active state", + "type": "boolean" + } + } + }, + "v1ApiKeyCreateResponse": { + "description": "Response of create API key", + "type": "object", + "properties": { + "apiKey": { + "description": "Api key is used for authentication", "type": "string" }, - "timeout": { - "type": "integer" - }, - "userVerification": { + "uid": { + "description": "User uid", "type": "string" } - }, - "type": "object" + } }, - "v1MfaRegistrationStart": { + "v1ApiKeyEntity": { + "description": "API key request payload", + "type": "object", "properties": { - "publicKey": { - "$ref": "#/definitions/v1MfaPublicKeyCredentialCreationOptions" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "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" + } + } } - }, - "type": "object" + } }, - "v1MfaRelyingPartyEntity": { + "v1ApiKeySpec": { + "description": "API key specification", + "type": "object", "properties": { - "id": { - "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": { + "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" + } + } } - }, - "type": "object" + } }, - "v1MfaUserEntity": { + "v1ApiKeySpecEntity": { + "description": "API key specification", + "type": "object", "properties": { - "displayName": { - "type": "string" - }, - "id": { - "type": "object" + "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": { + "userUid": { + "description": "User to whom the API key has to be created", "type": "string" } - }, - "type": "object" + } }, - "v1MgmtApp": { - "description": "Spectro application management data", + "v1ApiKeySpecUpdate": { + "description": "API key update request specification", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1MgmtAppSpec" - }, - "status": { - "$ref": "#/definitions/v1MgmtAppStatus" + "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": "object" + } }, - "v1MgmtAppContainersState": { + "v1ApiKeyStatus": { + "description": "API key status", + "type": "object", "properties": { - "running": { - "properties": { - "startedAt": { - "$ref": "#/definitions/v1Time" - } - }, - "type": "object" - }, - "terminated": { + "isActive": { + "description": "API key active state", + "type": "boolean" + } + } + }, + "v1ApiKeyUpdate": { + "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": { - "exitCode": { - "type": "integer" + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "finishedAt": { - "$ref": "#/definitions/v1Time" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct 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" + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "signal": { - "type": "integer" + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "startedAt": { - "$ref": "#/definitions/v1Time" + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } - }, - "type": "object" + } }, - "waiting": { + "spec": { + "description": "API key update request specification", "properties": { - "reason": { - "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": "object" + } } - }, - "type": "object" + } }, - "v1MgmtAppContainersStatus": { + "v1ApiKeyUser": { + "description": "API key user information", + "type": "object", "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { + "firstName": { + "description": "First name of user", "type": "string" }, - "name": { + "lastName": { + "description": "Last name of user", "type": "string" }, - "numberOfRestarts": { - "type": "integer" - }, - "state": { - "$ref": "#/definitions/v1MgmtAppContainersState" + "uid": { + "description": "User uid", + "type": "string" } - }, - "type": "object" + } }, - "v1MgmtAppCronJobStatus": { + "v1ApiKeys": { + "type": "object", + "required": [ + "items" + ], "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "lastScheduleTime": { - "$ref": "#/definitions/v1Time" - }, - "lastSuccessfulRunTime": { - "$ref": "#/definitions/v1Time" - }, - "messages": { + "items": { + "description": "List of API keys", + "type": "array", + "uniqueItems": true, "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "type": "string" - }, - "pods": { - "additionalProperties": { - "$ref": "#/definitions/v1MgmtAppPodsStatus" - }, - "type": "object" + "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" + } }, - "v1MgmtAppEnvHealthStatus": { + "v1ApiProfiler": { + "type": "object", "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false + "api": { + "type": "string" }, - "messages": { + "endTime": { + "type": "string", + "format": "date-time" + }, + "ops": { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, - "namespaces": { - "additionalProperties": { - "$ref": "#/definitions/v1MgmtAppNameSpaceStatus" - }, - "type": "object" + "requestUid": { + "type": "string" + }, + "startTime": { + "type": "string", + "format": "date-time" + }, + "timeTaken": { + "type": "integer", + "format": "int64" } - }, - "type": "object" + } }, - "v1MgmtAppHealth": { + "v1AppDeployment": { + "description": "Application deployment response", + "type": "object", "properties": { - "isHealthy": { - "type": "boolean" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "podHealth": { - "items": { - "$ref": "#/definitions/v1MgmtPodHealth" - }, - "type": "array" + "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" + } }, - "v1MgmtAppNameSpaceStatus": { + "v1AppDeploymentClusterGroupConfigEntity": { + "description": "Application deployment cluster group config", + "type": "object", "properties": { - "cronJobs": { - "additionalProperties": { - "$ref": "#/definitions/v1MgmtAppCronJobStatus" - }, - "type": "object" - }, - "deployments": { - "additionalProperties": { - "$ref": "#/definitions/v1MgmtAppObjectStatus" - }, - "type": "object" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "statefulSets": { - "additionalProperties": { - "$ref": "#/definitions/v1MgmtAppObjectStatus" - }, - "type": "object" + "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" + } + } } - }, - "type": "object" + } }, - "v1MgmtAppObjectStatus": { + "v1AppDeploymentClusterGroupEntity": { + "description": "Application deployment cluster group request payload", + "type": "object", "properties": { - "availableReplicas": { - "type": "integer" - }, - "creationTime": { - "$ref": "#/definitions/v1Time" - }, - "desiredReplicaCount": { - "type": "integer" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "type": "string" + "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" + } + } }, - "pods": { - "additionalProperties": { - "$ref": "#/definitions/v1MgmtAppPodsStatus" - }, - "type": "object" + "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": "object" + } }, - "v1MgmtAppPodsStatus": { + "v1AppDeploymentClusterGroupSpec": { + "description": "Application deployment cluster group spec", + "type": "object", "properties": { - "containers": { - "additionalProperties": { - "$ref": "#/definitions/v1MgmtAppContainersStatus" - }, - "type": "object" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "type": "string" - }, - "phase": { - "type": "string" - }, - "pvcs": { - "additionalProperties": { - "$ref": "#/definitions/v1MgmtAppPvcStatus" - }, - "type": "object" - }, - "reason": { - "type": "string" + "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" + } + } + } + } }, - "startTime": { - "$ref": "#/definitions/v1Time" + "profile": { + "description": "Application deployment profile request payload", + "type": "object", + "required": [ + "appProfileUid" + ], + "properties": { + "appProfileUid": { + "description": "Application deployment profile uid", + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1MgmtAppPvcStatus": { + "v1AppDeploymentClusterGroupTargetSpec": { + "description": "Application deployment cluster group target spec", + "type": "object", + "required": [ + "clusterName", + "clusterGroupUid" + ], "properties": { - "claimName": { + "clusterGroupUid": { + "description": "Application deployment cluster group uid", "type": "string" }, - "creationTime": { - "$ref": "#/definitions/v1Time" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "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" + } + } }, - "name": { + "clusterName": { + "description": "Application deployment virtual cluster name", "type": "string" - }, + } + } + }, + "v1AppDeploymentClusterHealth": { + "description": "Application deployment cluster health status", + "properties": { "state": { "type": "string" } - }, - "type": "object" + } }, - "v1MgmtAppSpec": { - "description": "spectro application management specifications", + "v1AppDeploymentClusterRef": { + "description": "Application deployment cluster reference", + "type": "object", "properties": { - "appEnv": { - "type": "string" + "deploymentClusterType": { + "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", + "type": "string", + "enum": [ + "virtual", + "host" + ] }, - "cloudType": { + "name": { + "description": "Application deployment cluster name", "type": "string" }, - "installedVersion": { + "uid": { + "description": "Application deployment cluster uid", "type": "string" + } + } + }, + "v1AppDeploymentClusterRefSummary": { + "description": "Application deployment cluster reference", + "properties": { + "deploymentClusterType": { + "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", + "type": "string", + "enum": [ + "virtual", + "host" + ] }, - "latestVersion": { + "name": { + "description": "Application deployment source cluster name", "type": "string" }, - "spectroClusterUid": { + "uid": { + "description": "Application deployment source cluster uid", "type": "string" } } }, - "v1MgmtAppStatus": { - "description": "spectro application management status", + "v1AppDeploymentClusterStatus": { + "description": "Application deployment cluster status", "properties": { - "appVersions": { - "items": { - "$ref": "#/definitions/v1AppVersion" - }, - "type": "array", - "uniqueItems": true - }, - "isFailed": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "messageLogs": { - "items": { - "type": "string" - }, - "type": "array" + "health": { + "description": "Application deployment cluster health status", + "properties": { + "state": { + "type": "string" + } + } }, "state": { "type": "string" - }, - "upgradeHistory": { - "items": { - "$ref": "#/definitions/v1SpectroMgmtUpgrade" - }, - "type": "array", - "uniqueItems": true } } }, - "v1MgmtAppUpgrade": { + "v1AppDeploymentConfig": { + "description": "Application deployment config response", + "type": "object", "properties": { - "spec": { + "target": { + "description": "Application deployment target config response", + "type": "object", "properties": { - "currentVersion": { + "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" + } + } + } + } + } + } + }, + "v1AppDeploymentConfigSummary": { + "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" + } + } + } + } + } + } + }, + "v1AppDeploymentFilterSpec": { + "description": "Application deployment filter spec", + "properties": { + "appDeploymentName": { + "type": "object", + "properties": { + "beginsWith": { "type": "string", - "x-omitempty": false + "x-nullable": true }, - "previousVersion": { + "contains": { "type": "string", - "x-omitempty": false + "x-nullable": true }, - "toBeUpgradedVersion": { + "eq": { "type": "string", - "x-omitempty": false + "x-nullable": true + }, + "ignoreCase": { + "type": "boolean", + "default": true + }, + "ne": { + "type": "string", + "x-nullable": true } - }, - "type": "object" + } }, - "status": { + "clusterUids": { + "type": "object", "properties": { - "action": { - "type": "string", - "x-omitempty": false + "beginsWith": { + "type": "array", + "items": { + "type": "string" + }, + "x-nullable": true }, - "states": { - "properties": { - "imageUpdate": { - "$ref": "#/definitions/v1MgmtUpgradeState", - "x-omitempty": false, - "x-order": 1 - }, - "spectroClusterUpdate": { - "$ref": "#/definitions/v1MgmtUpgradeState", - "x-omitempty": false, - "x-order": 0 - }, - "spectroServiceResume": { - "$ref": "#/definitions/v1MgmtUpgradeState", - "x-omitempty": false, - "x-order": 4 - }, - "spectroVersionConfigMapUpdate": { - "$ref": "#/definitions/v1MgmtUpgradeState", - "x-omitempty": false, - "x-order": 3 - }, - "spectroVersionServiceSuspend": { - "$ref": "#/definitions/v1MgmtUpgradeState", - "x-omitempty": false, - "x-order": 2 - } + "eq": { + "type": "array", + "items": { + "type": "string" }, - "type": "object" + "x-nullable": true }, - "upgradeStatus": { - "type": "string", - "x-omitempty": false + "ignoreCase": { + "type": "boolean", + "default": true }, - "versionHistory": { + "ne": { + "type": "array", "items": { "type": "string" }, + "x-nullable": true + } + } + }, + "tags": { + "type": "object", + "properties": { + "beginsWith": { "type": "array", - "x-omitempty": false + "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 } - }, - "type": "object" + } } - }, - "type": "object" + } }, - "v1MgmtAppVersion": { - "description": "spectro application management version", + "v1AppDeploymentNotifications": { + "description": "Application deployment notifications", "properties": { - "version": { + "isAvailable": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1AppDeploymentProfile": { + "description": "Application deployment profile", + "type": "object", + "properties": { + "metadata": { + "description": "Application deployment profile metadata", + "type": "object", "properties": { - "appEnv": { + "name": { + "description": "Application deployment profile name", "type": "string" }, - "cloudType": { + "uid": { + "description": "Application deployment profile uid", "type": "string" }, - "installedVersion": { + "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" + } + } + } }, - "latestVersion": { - "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" + } + } + } } - }, - "type": "object" + } } } }, - "v1MgmtBackupSpec": { - "description": "backup spec", + "v1AppDeploymentProfileEntity": { + "description": "Application deployment profile request payload", + "type": "object", + "required": [ + "appProfileUid" + ], "properties": { - "backupUid": { - "type": "string" - }, - "mode": { + "appProfileUid": { + "description": "Application deployment profile uid", "type": "string" - }, - "modeUid": { + } + } + }, + "v1AppDeploymentProfileMeta": { + "description": "Application deployment profile metadata", + "type": "object", + "properties": { + "name": { + "description": "Application deployment profile name", "type": "string" }, - "proxy": { - "description": "proxy information if applicable", + "uid": { + "description": "Application deployment profile uid", "type": "string" }, - "scheduleTime": { - "$ref": "#/definitions/v1Time" - }, - "scheduleType": { - "default": "Automated", - "enum": [ - "OnDemand", - "Automated" - ], + "version": { + "description": "Application deployment profile version", "type": "string" } - }, - "type": "object" + } }, - "v1MgmtDbCollectionIndexInfo": { - "description": "Database info", + "v1AppDeploymentProfileMetadataSummary": { + "description": "Application deployment profile metadata summary", "properties": { - "key": { - "additionalProperties": { - "type": "integer" - } - }, "name": { "type": "string" }, - "size": { - "type": "integer" + "uid": { + "type": "string" }, "version": { "type": "string" } - }, - "type": "object" + } }, - "v1MgmtDbCollectionInfo": { - "description": "Database info", + "v1AppDeploymentProfileSpec": { + "description": "Application deployment profile spec", + "type": "object", "properties": { - "count": { - "type": "integer" - }, - "indexes": { - "items": { - "$ref": "#/definitions/v1MgmtDbCollectionIndexInfo" - }, - "type": "array" + "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" + } + } }, - "isCapped": { - "type": "boolean" + "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" + } + } + } + } + } + } + } + }, + "v1AppDeploymentProfileSummary": { + "description": "Application deployment profile summary", + "properties": { + "metadata": { + "description": "Application deployment profile metadata summary", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "version": { + "type": "string" + } + } }, - "isReadOnly": { - "type": "boolean" + "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" + } + } + } + } + } + } + } + }, + "v1AppDeploymentProfileVersion": { + "description": "Application deployment profile version", + "type": "object", + "properties": { + "uid": { + "description": "Application deployment profile uid", + "type": "string" }, - "name": { + "version": { + "description": "Application deployment profile version", "type": "string" + } + } + }, + "v1AppDeploymentProfileVersions": { + "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" + } + } + } }, - "size": { - "type": "integer" + "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" + } + } + } }, - "storageSize": { - "type": "integer" + "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" + } + } + } + } + }, + "v1AppDeploymentSortFields": { + "type": "string", + "enum": [ + "appDeploymentName", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true + }, + "v1AppDeploymentSortSpec": { + "properties": { + "field": { + "type": "string", + "enum": [ + "appDeploymentName", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true }, - "totalIndexSize": { - "type": "integer" + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] } - }, - "type": "object" + } }, - "v1MgmtDbHealth": { + "v1AppDeploymentSpec": { + "description": "Application deployment spec", + "type": "object", "properties": { - "databases": { - "items": { - "$ref": "#/definitions/v1MgmtDbInfo" - }, - "type": "array" - }, - "totalIndexSize": { - "type": "integer" + "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" + } + } + } + } + } + } }, - "totalSize": { - "type": "integer" + "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" + } + } + } + } + } + } + } } - }, - "type": "object" + } }, - "v1MgmtDbInfo": { - "description": "Database info", + "v1AppDeploymentStatus": { + "description": "Application deployment status", + "type": "object", "properties": { - "collections": { + "appTiers": { + "description": "Application deployment tiers", + "type": "array", "items": { - "$ref": "#/definitions/v1MgmtDbCollectionInfo" - }, - "type": "array" + "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" + } + } + } }, - "isEmpty": { - "type": "boolean" + "lifecycleStatus": { + "properties": { + "msg": { + "description": "error or success msg of lifecycle", + "type": "string" + }, + "status": { + "description": "lifecycle status", + "type": "string", + "enum": [ + "Pausing", + "Paused", + "Resuming", + "Running", + "Error" + ] + } + } }, - "name": { + "state": { + "description": "Application deployment state [ \"Pending\", \"Deploying\", \"Deployed\", \"Updating\" ]", "type": "string" - }, - "size": { - "type": "integer" - }, - "totalIndexSize": { - "type": "integer" } - }, - "type": "object" + } }, - "v1MgmtDeleteBackupFtpEntity": { - "description": "delete backups based on retention period", + "v1AppDeploymentStatusSummary": { + "description": "Application deployment status summary", + "type": "object", "properties": { - "fileTransferConfig": { - "$ref": "#/definitions/v1MgmtFileTransferFtpEntity" + "cluster": { + "description": "Application deployment cluster status", + "properties": { + "health": { + "description": "Application deployment cluster health status", + "properties": { + "state": { + "type": "string" + } + } + }, + "state": { + "type": "string" + } + } }, - "retentionPeriod": { - "type": "integer" - } - }, - "type": "object" - }, - "v1MgmtDeleteBackupS3Entity": { - "description": "delete backups based on retention period", - "properties": { - "fileTransferConfig": { - "$ref": "#/definitions/v1MgmtFileTransferS3Entity" + "notifications": { + "description": "Application deployment notifications", + "properties": { + "isAvailable": { + "type": "boolean", + "x-omitempty": false + } + } }, - "retentionPeriod": { - "type": "integer" - } - }, - "type": "object" - }, - "v1MgmtErrLog": { - "properties": { - "ref": { + "state": { "type": "string" - }, - "spec": { - "$ref": "#/definitions/v1MgmtErrSpec" } - }, - "type": "object" - }, - "v1MgmtErrLogs": { - "items": { - "$ref": "#/definitions/v1MgmtErrLog" - }, - "type": "array", - "uniqueItems": true + } }, - "v1MgmtErrSpec": { + "v1AppDeploymentSummary": { + "description": "Application deployment summary", + "type": "object", "properties": { - "causes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "data": { - "type": "string" - }, - "debug": { - "additionalProperties": { - "type": "object" - }, - "type": "object" - }, - "errCode": { - "type": "string" - }, - "errMsg": { - "type": "string" - }, - "stackTraces": { - "items": { - "type": "string" - }, - "type": "array" - }, - "userCtx": { + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", "properties": { - "projectUid": { - "type": "string" + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "serviceResUid": { - "type": "string" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "tenantUid": { + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", "type": "string" }, - "userUid": { + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", "type": "string" } - }, - "type": "object" - } - }, - "type": "object" - }, - "v1MgmtFileTransferFtpEntity": { - "description": "file transfer details", - "properties": { - "backupSpec": { - "$ref": "#/definitions/v1MgmtBackupSpec" + } }, - "ftp": { - "$ref": "#/definitions/v1MgmtFtpConfig" - } - }, - "type": "object" - }, - "v1MgmtFileTransferS3Entity": { - "description": "file transfer details", - "properties": { - "backupSpec": { - "$ref": "#/definitions/v1MgmtBackupSpec" + "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" + } + } + } + } + } + } + } + } + } }, - "s3": { - "$ref": "#/definitions/v1MgmtS3Config" + "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" + } + } } - }, - "type": "object" + } }, - "v1MgmtFtpConfig": { - "description": "ftp config", + "v1AppDeploymentTargetClusterLimits": { + "description": "Application deployment target cluster limits", "properties": { - "directory": { - "type": "string" - }, - "password": { - "type": "string" + "cpu": { + "description": "CPU cores", + "type": "integer", + "format": "int32" }, - "server": { - "type": "string" + "memoryMiB": { + "description": "Memory in MiB", + "type": "integer", + "format": "int32" }, - "username": { - "type": "string" - } - }, - "type": "object" - }, - "v1MgmtHash": { - "properties": { - "hash": { - "type": "string" + "storageGiB": { + "description": "Storage in GiB", + "type": "integer", + "format": "int32" } - }, - "required": [ - "hash" - ], - "type": "object" + } }, - "v1MgmtListBackupFtpEntity": { - "description": "list ftp backups", + "v1AppDeploymentTargetConfig": { + "description": "Application deployment target config response", + "type": "object", "properties": { - "fileTransferConfig": { - "$ref": "#/definitions/v1MgmtFileTransferFtpEntity" + "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" + } + } } - }, - "type": "object" + } }, - "v1MgmtListBackupS3Entity": { - "description": "list s3 backups", + "v1AppDeploymentTargetConfigSummary": { + "description": "Application deployment target config summary", "properties": { - "fileTransferConfig": { - "$ref": "#/definitions/v1MgmtFileTransferS3Entity" + "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" + } + } } - }, - "type": "object" + } }, - "v1MgmtMigrateEntity": { - "description": "SystemAdmin", + "v1AppDeploymentTargetEnvironmentRef": { + "description": "Application deployment target environment reference", + "type": "object", "properties": { - "db": { - "type": "string" - }, - "host": { - "type": "string" - }, - "isServiceRecord": { - "type": "boolean" - }, - "password": { + "name": { + "description": "Application deployment target resource name", "type": "string" }, - "port": { - "type": "integer" - }, - "uri": { + "type": { + "description": "Application deployment target resource type [ \"nestedCluster\", \"clusterGroup\" ]", "type": "string" }, - "username": { + "uid": { + "description": "Application deployment target resource uid", "type": "string" } - }, - "type": "object" + } }, - "v1MgmtMigrationStatuses": { - "description": "SystemAdmin", + "v1AppDeploymentVirtualClusterConfigEntity": { + "description": "Application deployment virtual cluster config", + "type": "object", "properties": { - "finishTime": { - "$ref": "#/definitions/v1Time" - }, - "folderName": { - "type": "string" - }, - "isCompleted": { - "type": "boolean" - }, - "message": { - "items": { - "type": "string" - }, - "type": "array" - }, - "startTime": { - "$ref": "#/definitions/v1Time" - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "status": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "targetSpec": { + "description": "Application deployment virtual cluster target spec", + "type": "object", + "required": [ + "clusterUid" + ], + "properties": { + "clusterUid": { + "description": "Application deployment virtual cluster uid", + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1MgmtMsgBrokerReinitStatus": { + "v1AppDeploymentVirtualClusterEntity": { + "description": "Application deployment virtual cluster request payload", + "type": "object", "properties": { - "failures": { - "items": { - "$ref": "#/definitions/v1MgmtMsgBrokerReinitStatusEntity" - }, - "type": "array" + "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" + } + } }, - "success": { - "items": { - "$ref": "#/definitions/v1MgmtMsgBrokerReinitStatusEntity" - }, - "type": "array" + "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": "object" + } }, - "v1MgmtMsgBrokerReinitStatusEntity": { + "v1AppDeploymentVirtualClusterSpec": { + "description": "Application deployment virtual cluster spec", + "type": "object", "properties": { - "account": { - "type": "string" - }, - "isSuccess": { - "type": "boolean" + "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" + } + } + } + } }, - "message": { - "type": "string" + "profile": { + "description": "Application deployment profile request payload", + "type": "object", + "required": [ + "appProfileUid" + ], + "properties": { + "appProfileUid": { + "description": "Application deployment profile uid", + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1MgmtPodHealth": { - "description": "SystemAdmin", + "v1AppDeploymentVirtualClusterTargetSpec": { + "description": "Application deployment virtual cluster target spec", + "type": "object", + "required": [ + "clusterUid" + ], "properties": { - "isHealthy": { - "type": "boolean" - }, - "name": { + "clusterUid": { + "description": "Application deployment virtual cluster uid", "type": "string" } - }, - "type": "object" + } }, - "v1MgmtS3Config": { - "description": "s3 config", + "v1AppDeploymentsFilterSpec": { + "description": "Application deployment filter summary spec", "properties": { - "accessKey": { - "type": "string" - }, - "bucket": { - "type": "string" - }, - "directory": { - "type": "string" - }, - "region": { - "type": "string" + "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 + } + } + } + } }, - "secretKey": { - "type": "string" + "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": "object" + } }, - "v1MgmtUpgradeState": { + "v1AppDeploymentsSummary": { + "type": "object", "properties": { - "description": { - "type": "string", - "x-omitempty": false - }, - "details": { - "items": { - "type": "string" - }, + "appDeployments": { "type": "array", - "x-omitempty": false + "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" + } + } + } + } + } }, - "endTimestamp": { - "$ref": "#/definitions/v1Time", + "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 + } + } + } + } + }, + "v1AppFeatureFreemium": { + "description": "Freemium information", + "properties": { + "activeClustersLimit": { + "type": "integer", "x-omitempty": false }, - "isCompleted": { + "isFreemium": { "type": "boolean", "x-omitempty": false }, - "message": { - "type": "string", + "overageUsageLimit": { + "type": "number", + "format": "float64", "x-omitempty": false }, - "startTimestamp": { - "$ref": "#/definitions/v1Time", + "totalUsageLimit": { + "type": "number", + "format": "float64", "x-omitempty": false } - }, - "type": "object" + } }, - "v1MonthlyUsage": { - "description": "Monthly usage object", + "v1AppFeatures": { + "description": "System app features", "properties": { - "month": { - "$ref": "#/definitions/v1Time", - "description": "Month of usage" - }, - "tenantUsages": { - "description": "List of tenants usage", - "items": { - "$ref": "#/definitions/v1TenantUsage" - }, - "type": "array", - "uniqueItems": true + "developerCredit": { + "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 + } + } }, - "usedAlloyCredits": { - "description": "Credits used by imported clusters", - "format": "float64", - "type": "number" + "freeCloudCredit": { + "type": "boolean", + "x-omitempty": false }, - "usedPureCredits": { - "description": "Credits used by managed clusters", - "format": "float64", - "type": "number" + "freemium": { + "description": "Freemium information", + "properties": { + "activeClustersLimit": { + "type": "integer", + "x-omitempty": false + }, + "isFreemium": { + "type": "boolean", + "x-omitempty": false + }, + "overageUsageLimit": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "totalUsageLimit": { + "type": "number", + "format": "float64", + "x-omitempty": false + } + } } } }, - "v1MsgBrokerConnection": { + "v1AppProfile": { + "description": "Application profile response", + "type": "object", "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "cluster": { + "spec": { + "type": "object", "properties": { - "addr": { + "parentUid": { + "description": "Application profile parent profile uid", "type": "string" }, - "authTimeout": { - "type": "integer" + "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" + } + } + } + } + } }, - "clusterPort": { - "type": "integer" + "version": { + "description": "Application profile version", + "type": "string" }, - "urls": { + "versions": { + "description": "Application profile versions list", + "type": "array", "items": { - "type": "string" - }, - "type": "array" + "description": "Application profile version", + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } } - }, - "type": "object" - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "$ref": "#/definitions/v1Time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "$ref": "#/definitions/v1Time" - }, - "subscriptionList": { - "items": { - "type": "string" - }, - "type": "array" - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - }, - "type": "object" - }, - "v1MsgBrokerConnectionList": { - "items": { - "$ref": "#/definitions/v1MsgBrokerConnection" - }, - "type": "array" - }, - "v1MsgBrokerConnections": { - "properties": { - "connections": { - "items": { - "$ref": "#/definitions/v1MsgBrokerConnection" - }, - "type": "array", - "uniqueItems": true - }, - "limit": { - "type": "integer" - }, - "now": { - "$ref": "#/definitions/v1Time" - }, - "numOfConnections": { - "type": "integer" - }, - "offset": { - "type": "integer" - }, - "serverId": { - "type": "string" + } }, - "totalConnections": { - "type": "integer" + "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" + } }, - "v1MsgBrokerHealth": { + "v1AppProfileCloneEntity": { + "description": "Application profile clone request payload", + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta", - "type": "object" - }, - "spec": { - "$ref": "#/definitions/v1MsgBrokerNodesHealthSpec", - "type": "object" - }, - "status": { - "$ref": "#/definitions/v1MsgBrokerNodesHealthStatus", - "type": "object" + "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": "object" + } }, - "v1MsgBrokerNodeHealth": { + "v1AppProfileCloneMetaInputEntity": { + "description": "Application profile clone metadata", + "type": "object", + "required": [ + "name" + ], "properties": { - "allyPublishersByTenant": { - "additionalProperties": { - "$ref": "#/definitions/v1MsgBrokerConnectionList" - }, - "type": "object" - }, - "duplicateSubscribersCount": { - "additionalProperties": { - "type": "integer" - }, - "type": "object" - }, - "hubbleSubscribersByService": { - "additionalProperties": { - "$ref": "#/definitions/v1MsgBrokerConnectionList" - }, - "type": "object" - }, - "hubbleSubscribersByTenant": { - "additionalProperties": { - "$ref": "#/definitions/v1MsgBrokerConnectionList" - }, - "type": "object" - }, - "hubbleSubscribersByType": { - "additionalProperties": { - "$ref": "#/definitions/v1MsgBrokerConnectionList" - }, - "type": "object" - }, - "nodeId": { + "name": { + "description": "Application profile name", "type": "string" }, - "subscriberWithAbnormalRTT": { - "$ref": "#/definitions/v1MsgBrokerConnectionList" - }, - "subscribersWithAbnormalSubscriptions": { - "$ref": "#/definitions/v1MsgBrokerConnectionList" - }, - "uniqueSubscribers": { - "type": "integer" - }, - "unrecognizedClients": { - "$ref": "#/definitions/v1MsgBrokerConnectionList" - } - }, - "type": "object" - }, - "v1MsgBrokerNodeHealthSpec": { - "properties": { - "connections": { - "$ref": "#/definitions/v1MsgBrokerConnections", - "type": "object" + "target": { + "description": "Application profile clone target", + "type": "object", + "properties": { + "projectUid": { + "description": "Application profile clone target project uid", + "type": "string" + } + } }, - "nodeId": { + "version": { + "description": "Application profile version", "type": "string" - }, - "routes": { - "$ref": "#/definitions/v1MsgBrokerRoutes", - "type": "object" - }, - "variables": { - "$ref": "#/definitions/v1MsgBrokerVariables", - "type": "object" - } - }, - "type": "object" - }, - "v1MsgBrokerNodesHealthSpec": { - "properties": { - "nodes": { - "items": { - "$ref": "#/definitions/v1MsgBrokerNodeHealthSpec" - }, - "type": "array" } - }, - "type": "object" + } }, - "v1MsgBrokerNodesHealthStatus": { + "v1AppProfileCloneTarget": { + "description": "Application profile clone target", + "type": "object", "properties": { - "nodes": { - "items": { - "$ref": "#/definitions/v1MsgBrokerNodeHealth" - }, - "type": "array" + "projectUid": { + "description": "Application profile clone target project uid", + "type": "string" } - }, - "type": "object" + } }, - "v1MsgBrokerRoutes": { + "v1AppProfileEntity": { + "description": "Application profile request payload", + "type": "object", "properties": { - "numRoutes": { - "type": "integer" - }, - "routes": { - "items": { - "$ref": "#/definitions/v1NatsRoute" - }, - "type": "array" + "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" + } + } }, - "serverId": { - "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": "object" + } }, - "v1MsgBrokerVariables": { + "v1AppProfileFilterSpec": { + "description": "Application profile filter spec", "properties": { - "authRequired": { - "type": "boolean" - }, - "authTimeout": { - "type": "integer" + "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 + } + } }, - "cluster": { + "tags": { + "type": "object", "properties": { - "addr": { - "type": "string" + "beginsWith": { + "type": "array", + "items": { + "type": "string" + }, + "x-nullable": true }, - "authTimeout": { - "type": "integer" + "eq": { + "type": "array", + "items": { + "type": "string" + }, + "x-nullable": true }, - "clusterPort": { - "type": "integer" + "ignoreCase": { + "type": "boolean", + "default": true }, - "urls": { + "ne": { + "type": "array", "items": { "type": "string" }, - "type": "array" + "x-nullable": true } - }, - "type": "object" - }, - "configLoadTime": { - "$ref": "#/definitions/v1Time" - }, - "connectUrls": { - "items": { - "type": "string" - }, - "type": "array" - }, - "connections": { - "type": "integer" - }, - "cores": { - "type": "integer" - }, - "cpu": { - "type": "number" - }, - "gitCommit": { - "type": "string" - }, - "go": { - "type": "string" - }, - "gomaxprocs": { - "type": "integer" - }, - "host": { - "type": "string" - }, - "httpHost": { - "type": "string" - }, - "httpPort": { - "type": "integer" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "leafNodes": { - "type": "integer" - }, - "maxConnections": { - "type": "integer" - }, - "maxControlLine": { - "type": "integer" - }, - "maxPayload": { - "type": "integer" - }, - "maxPending": { - "type": "integer" - }, - "mem": { - "type": "integer" - }, - "now": { - "$ref": "#/definitions/v1Time" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pingInterval": { - "type": "integer" - }, - "pingMax": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "proto": { - "type": "integer" - }, - "remotes": { - "type": "integer" - }, - "routes": { - "type": "integer" - }, - "serverId": { - "type": "string" - }, - "serverName": { - "type": "string" - }, - "slowConsumers": { - "type": "integer" - }, - "start": { - "$ref": "#/definitions/v1Time" - }, - "subscriptions": { - "type": "integer" - }, - "tlsRequired": { - "type": "boolean" - }, - "tlsTimeout": { - "type": "integer" - }, - "totalConnections": { - "type": "integer" - }, - "uptime": { - "type": "string" + } }, "version": { - "type": "string" - }, - "writeDeadline": { - "type": "integer" + "type": "object", + "properties": { + "beginsWith": { + "type": "string", + "x-nullable": true + }, + "eq": { + "type": "string", + "x-nullable": true + }, + "gt": { + "type": "string", + "x-nullable": true + }, + "lt": { + "type": "string", + "x-nullable": true + }, + "ne": { + "type": "string", + "x-nullable": true + } + } } - }, - "type": "object" + } }, - "v1MsgSubscriber": { - "description": "Message subscriber request", + "v1AppProfileMetaEntity": { + "description": "Application profile metadata request payload", + "type": "object", + "required": [ + "metadata" + ], "properties": { - "accountId": { - "type": "string" - }, - "publisher": { - "type": "string" - }, - "service": { - "type": "string" + "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" + } + } + } }, - "userId": { + "version": { + "description": "Application profile version", "type": "string" } - }, - "type": "object" + } }, - "v1Nameserver": { - "description": "Nameserver define search domains and nameserver addresses", + "v1AppProfileMetaUpdateEntity": { + "description": "Application profile metadata update request payload", + "type": "object", "properties": { - "addresses": { - "items": { + "annotations": { + "description": "Application profile annotations", + "type": "object", + "additionalProperties": { "type": "string" - }, - "type": "array" + } }, - "search": { - "items": { + "labels": { + "description": "Application profile labels", + "type": "object", + "additionalProperties": { "type": "string" - }, - "type": "array" + } } - }, - "type": "object" + } }, - "v1NatsConfiguration": { - "description": "Describes the response that contains the nats configuration to establish credentials", + "v1AppProfileMetadata": { + "description": "Application profile metadata summary", + "type": "object", "properties": { - "connectionString": { - "description": "Describes the preCalculated connection string, can be used directly to make connection", - "type": "string" - }, - "enableTls": { - "description": "Describes the NATs application option to use a TLS based custom dialer. Its enabled when external Certificate is used over the existing one.", - "type": "boolean" - }, - "insecureTls": { - "description": "Describes the NATs tls option to skip verifying the client certificate", - "type": "boolean" - }, - "password": { - "description": "Describes the NATs user's password", - "type": "string" - }, - "scheme": { - "description": "Describes the NATs protocol for the connection. Eg- 'tls', 'nats'", - "type": "string" - }, - "tlsCertificate": { - "description": "Describes the NATs tls certificate used for making a secure connection", - "type": "string" - }, - "tlsKey": { - "description": "Describes the NATs tls certificate key used for making a secure connection", - "type": "string" - }, - "urls": { - "description": "Describes the URLs of the nats nodes used in nats HA setup where the client will connect", - "type": "string" + "metadata": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "userName": { - "description": "Describes the NATs user name", - "type": "string" + "spec": { + "properties": { + "version": { + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1NatsCredentialRequest": { - "description": "Describes the request for resource's nats credential", + "v1AppProfileSortFields": { + "type": "string", + "enum": [ + "profileName", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true + }, + "v1AppProfileSortSpec": { "properties": { - "clusterUid": { - "description": "Deprecated. please use resourceUid", - "type": "string" - }, - "isSystem": { - "description": "Describes if its a system request", - "type": "boolean" - }, - "resourceUid": { - "description": "Describes the resource for which credentials has to be fetched", - "type": "string" - }, - "serviceName": { - "description": "Describes the service for which credentials has to be fetched. Possible values [ally, jet]", + "field": { + "type": "string", "enum": [ - "ally", - "jet" + "profileName", + "creationTimestamp", + "lastModifiedTimestamp" ], - "type": "string" + "x-nullable": true }, - "tenantUid": { - "description": "Describes the tenant of the resource", - "type": "string" + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] } - }, - "type": "object" + } }, - "v1NatsCredentials": { - "description": "Describes the response that contains the nats credentials", + "v1AppProfileSummary": { + "description": "Application profile summary", + "type": "object", "properties": { - "allowedPublisher": { - "description": "Describes the subject on which client is allowed to publish", - "type": "string" - }, - "allowedSubcriber": { - "description": "Describes the subject on which client is allowed to subscribe", - "type": "string" - }, - "jwt": { - "description": "Describes the jwt token which will be used as an credential for the nats", - "type": "string" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "seed": { - "description": "Describes the seed for the jwt", - "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" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1NatsRoute": { + "v1AppProfileTemplate": { + "description": "Application profile template information", + "type": "object", "properties": { - "didSolicit": { - "type": "boolean" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "isConfigured": { - "type": "boolean" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingSize": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "remoteId": { - "type": "string" - }, - "rid": { - "type": "integer" - }, - "rtt": { - "type": "string" + "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" + } + } + } }, - "subscriptions": { - "type": "integer" + "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" + } + } + } } - }, - "type": "object" + } + }, + "v1AppProfileTemplateEntity": { + "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" + } + } + } + } + } }, - "v1NestedCloudConfigStatus": { - "description": "Defines the status of virtual cloud config", + "v1AppProfileTemplateSpec": { + "description": "Application profile template specs", + "type": "object", "properties": { - "conditions": { - "items": { - "$ref": "#/definitions/v1ClusterCondition" - }, + "appTiers": { + "description": "Application profile tiers", "type": "array", - "x-kubernetes-patch-merge-key": "type", - "x-kubernetes-patch-strategy": "merge" + "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" + } + } + } + } + } }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1Nic": { + "v1AppProfileTemplateSummary": { + "description": "Application profile template summary", + "type": "object", "properties": { - "dns": { + "appTiers": { + "type": "array", "items": { - "type": "string" - }, - "type": "array" - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1NodesAutoRemediationSettings": { + "v1AppProfileTiers": { + "description": "Application profile tiers information", + "type": "object", "properties": { - "disableNodesAutoRemediation": { - "type": "boolean", - "x-omitempty": false + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "isEnabled": { - "type": "boolean", - "x-omitempty": false + "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" + } + } + } + } + } + } + } } } }, - "v1NonFipsConfig": { - "description": "Non-FIPS configuration", + "v1AppProfileTiersSpec": { + "description": "Application profile tiers information", + "type": "object", "properties": { - "mode": { - "default": "nonFipsDisabled", - "description": "enable or disable the non FIPS complaint", - "enum": [ - "nonFipsEnabled", - "nonFipsDisabled" - ], - "type": "string" + "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" + } + } + } + } + } } } }, - "v1Notification": { - "description": "Describes event notification and action definition", - "properties": { - "action": { - "$ref": "#/definitions/v1NotificationAction", - "description": "Describes actions for the notification", - "type": "object" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta", - "type": "object" - }, - "relatedObject": { - "$ref": "#/definitions/v1RelatedObject", - "type": "object" - }, - "source": { - "$ref": "#/definitions/v1NotificationSource", - "description": "Describes origin info for the notification", - "type": "object" - }, - "type": { - "description": "Describes type of notification. Possible values [NotificationPackUpdate, NotificationPackRegistryUpdate, NotificationNone]", - "enum": [ - "NotificationPackUpdate", - "NotificationPackRegistryUpdate", - "NotificationNone" - ], - "type": "string" - } - }, - "type": "object" - }, - "v1NotificationAction": { - "description": "Describes actions for the notification", + "v1AppProfileVersion": { + "description": "Application profile version", + "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]", - "enum": [ - "NotifyActionPacksUpdate", - "NotifyActionClusterProfileUpdate", - "NotifyActionPackRegistryUpdate", - "NotifyActionClusterUpdate", - "NotifyActionNone" - ], + "uid": { "type": "string" }, - "events": { - "additionalProperties": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "description": "Describes the events happened for the notifications", - "type": "object" - }, - "isDone": { - "description": "Describes the \"Done\" status for the notification", - "type": "boolean", - "x-omitempty": false - }, - "isInfo": { - "description": "Describes the notification as a information", - "type": "boolean", - "x-omitempty": false - }, - "link": { + "version": { "type": "string" } - }, - "type": "object" + } }, - "v1NotificationEvent": { - "description": "Describes notification event details", + "v1AppProfilesFilterSpec": { + "description": "Application profile filter summary spec", "properties": { - "component": { - "description": "Describes component of notification event", - "type": "string" - }, - "digest": { - "description": "Describes notification event digest", - "type": "string" - }, - "message": { - "description": "Describes a information for the notification event", - "type": "string" - }, - "meta": { - "additionalProperties": { - "type": "string" - }, - "description": "Describes a event messages with meta digest as the key", - "type": "object" + "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 + } + } + } + } }, - "type": { - "description": "Describes notification event type", - "enum": [ - "NotificationPackSync", - "NotificationClusterProfileSync" - ], - "type": "string" + "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": "object" + } }, - "v1NotificationSource": { - "description": "Describes origin info for the notification", + "v1AppProfilesMetadata": { + "type": "object", "properties": { - "component": { - "description": "Describes component where notification originated", - "type": "string" + "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" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1Notifications": { - "description": "Describe a list of generated notifications", + "v1AppProfilesSummary": { + "type": "object", "properties": { - "items": { - "description": "Describe a list of generated notifications", - "items": { - "$ref": "#/definitions/v1Notification" - }, + "appProfiles": { "type": "array", - "uniqueItems": true + "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": { - "$ref": "#/definitions/v1ListMetaData", - "description": "Describes the meta information about the notification lists" + "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": [ - "items" - ], - "type": "object" + } }, - "v1OS": { + "v1AppTier": { "properties": { - "family": { - "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" + } + } }, - "version": { - "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" + } }, - "v1ObjectEntity": { - "description": "Object identity meta", + "v1AppTierEntity": { + "description": "Application tier request payload", + "type": "object", + "required": [ + "name" + ], "properties": { - "name": { - "type": "string" - }, - "uid": { + "containerRegistryUid": { + "description": "Application tier container registry uid", "type": "string" - } - }, - "type": "object" - }, - "v1ObjectMeta": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set, other than that any input on annotations will be ignored", - "type": "object" }, - "creationTimestamp": { - "$ref": "#/definitions/v1Time", - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. 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/api-conventions.md#metadata" + "installOrder": { + "description": "Application tier installation order", + "type": "integer", + "format": "int32" }, - "deletionTimestamp": { - "$ref": "#/definitions/v1Time", - "description": "This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client.\n\nPopulated by the system when a graceful deletion is requested. Read-only." + "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" + } + } + } }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Labels or Tags (UI) are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag ", - "type": "object" + "name": { + "description": "Application tier name", + "type": "string" }, - "lastModifiedTimestamp": { - "$ref": "#/definitions/v1Time", - "description": "LastModifiedTimestamp is a timestamp representing the server time when this object was last modified. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value.\n\nPopulated by the system. Read-only." + "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" + } + } + } }, - "name": { - "description": "Name of the resource", + "registryUid": { + "description": "Application tier registry uid", "type": "string" }, - "uid": { - "description": "UID is the unique identifier generated for the resource. This is not an input field for any request. \n\nPopulated by the system. Read-only.", + "sourceAppTierUid": { + "description": "Application tier source pack uid", "type": "string" - } - }, - "type": "object" - }, - "v1ObjectMetaInputEntity": { - "description": "ObjectMeta input entity for object creation", - "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set, other than that any input on annotations will be ignored", - "type": "object" }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Labels or Tags (UI) are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag ", - "type": "object" + "type": { + "type": "string", + "default": "manifest", + "enum": [ + "manifest", + "helm", + "operator-instance", + "container" + ] + }, + "values": { + "description": "Application tier configuration values in yaml format", + "type": "string" }, - "name": { - "description": "Name of the resource", + "version": { + "description": "Application tier version", "type": "string" } - }, - "type": "object" + } }, - "v1ObjectMetaInputEntitySchema": { - "description": "Resource metadata", + "v1AppTierManifests": { + "description": "Application tier manifests data", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "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" + } + } + } + } + } + } + } } - }, - "required": [ - "metadata" - ], - "type": "object" + } }, - "v1ObjectMetaUpdateEntity": { - "description": "ObjectMeta update entity with uid as input", + "v1AppTierPatchEntity": { + "description": "Application tier patch request payload", "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the resource", - "type": "string" + "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" + } + } }, - "uid": { - "description": "Populated by the system. Read-only.", + "replaceWithAppTier": { + "description": "Application tier UID to be replaced with new tier", "type": "string" } - }, - "type": "object" + } }, - "v1ObjectReference": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", + "v1AppTierProperty": { + "description": "Application tier property object", "properties": { - "kind": { - "description": "Represents the resource kind", + "format": { + "description": "Application tier property format", "type": "string" }, "name": { - "description": "Name of the resource", + "description": "Application tier property name", "type": "string" }, - "uid": { - "description": "Uid of the resource", + "type": { + "description": "Application tier property data type", + "type": "string" + }, + "value": { + "description": "Application tier property value", "type": "string" } - }, - "type": "object" + } }, - "v1ObjectResReference": { - "description": "Object resource reference", + "v1AppTierPropertyEntity": { + "description": "Application tier property object", "properties": { - "kind": { - "type": "string" - }, "name": { + "description": "Application tier property name", "type": "string" }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { + "value": { + "description": "Application tier property value", "type": "string" } - }, - "type": "object" + } }, - "v1ObjectScopeEntity": { - "description": "Object scope identity meta", + "v1AppTierRef": { + "description": "Application tier reference", + "type": "object", "properties": { "name": { + "description": "Application tier name", "type": "string" }, - "scope": { - "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" } - }, - "type": "object" + } }, - "v1ObjectTagsEntity": { - "description": "Object identity meta with tags", + "v1AppTierResolvedValues": { + "description": "Application tier resolved macro values", "properties": { - "labels": { + "resolved": { + "description": "Application tier resolved macro values map", + "type": "object", "additionalProperties": { "type": "string" - }, - "type": "object" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" + } } - }, - "type": "object" + } }, - "v1OciImageRegistry": { - "description": "Oci Image Registry", + "v1AppTierSourceSummary": { + "description": "Application profile's tier source information", "properties": { - "baseContentPath": { - "description": "baseContentPath is the root path for the registry content", - "type": "string" - }, - "caCert": { + "addonSubType": { "type": "string" }, - "endpoint": { + "addonType": { "type": "string" }, - "insecureSkipVerify": { - "type": "boolean" - }, - "mirrorRegistries": { - "description": "mirrorRegistries contains the array of image sources like gcr.io, ghcr.io, docker.io", + "logoUrl": { "type": "string" }, "name": { "type": "string" }, - "password": { + "type": { "type": "string" }, - "username": { + "uid": { "type": "string" } - }, - "type": "object" - }, - "v1OciRegistries": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1OciRegistry" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1OciRegistry": { - "description": "Oci registry information", + "v1AppTierSpec": { + "description": "Application tier specs", + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "containerRegistryUid": { + "description": "Application tier container registry uid", + "type": "string" }, - "spec": { - "$ref": "#/definitions/v1OciRegistrySpec" + "installOrder": { + "description": "Application tier installation order", + "type": "integer", + "format": "int32" }, - "status": { - "$ref": "#/definitions/v1OciRegistryStatusSummary" - } - }, - "type": "object" - }, - "v1OciRegistryAuth": { - "description": "Auth credentials of the oci registry", - "properties": { - "password": { - "description": "Password in the credentials", - "format": "password", - "type": "string" + "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" + } + } + } }, - "username": { - "description": "Username in the credentials", - "type": "string" - } - }, - "type": "object" - }, - "v1OciRegistryEntity": { - "description": "Oci registry credentials", - "properties": { - "auth": { - "$ref": "#/definitions/v1RegistryAuth" + "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" + } + } + } }, - "defaultRegion": { + "registryUid": { + "description": "Registry uid", "type": "string" }, - "endpoint": { + "sourceAppTierUid": { + "description": "Application tier source pack uid", "type": "string" }, - "providerType": { - "type": "string" + "type": { + "type": "string", + "default": "manifest", + "enum": [ + "manifest", + "helm", + "operator-instance", + "container" + ] }, - "scope": { + "values": { + "description": "Application tier configuration values in yaml format", "type": "string" }, - "type": { + "version": { + "description": "Application tier version", "type": "string" } - }, - "type": "object" + } }, - "v1OciRegistrySpec": { - "description": "Image registry spec", + "v1AppTierSummary": { + "description": "Application profile's tier summary", "properties": { - "defaultRegion": { - "type": "string" - }, - "endpoint": { + "name": { "type": "string" }, - "isPrivate": { - "type": "boolean" + "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" + } + } }, - "providerType": { + "type": { "type": "string" }, - "registryType": { + "uid": { "type": "string" }, - "scope": { + "version": { "type": "string" } - }, - "type": "object" - }, - "v1OciRegistryStatusSummary": { - "description": "OCI registry status summary", - "properties": { - "sync": { - "$ref": "#/definitions/v1RegistrySyncStatus" - } } }, - "v1OidcAuth": { - "properties": { - "oidcToken": { - "type": "string" - }, - "org": { - "type": "string" - } - }, - "type": "object" - }, - "v1OidcAuthLogin": { - "properties": { - "emailId": { - "type": "string" - }, - "password": { - "format": "password", - "type": "string" - } - }, - "type": "object" + "v1AppTierType": { + "type": "string", + "default": "manifest", + "enum": [ + "manifest", + "helm", + "operator-instance", + "container" + ] }, - "v1OidcAuthorizationTokenResponse": { + "v1AppTierUpdateEntity": { + "description": "Application tier update request payload", + "type": "object", "properties": { - "access_token": { - "type": "string" - }, - "error": { + "containerRegistryUid": { + "description": "Application tier container registry uid", "type": "string" }, - "error_description": { - "type": "string" + "installOrder": { + "description": "Application tier installation order", + "type": "integer", + "format": "int32" }, - "expires_in": { - "type": "integer" + "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" + } + } + } }, - "id_token": { + "name": { + "description": "Application tier name", "type": "string" }, - "raw": { - "type": "object" + "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" + } + } + } }, - "refresh_token": { + "values": { + "description": "Application tier configuration values in yaml format", "type": "string" }, - "scope": { + "version": { + "description": "Application tier version", "type": "string" } - }, - "type": "object" + } }, - "v1OidcLogins": { - "description": "loginsDetails", + "v1AppVersion": { + "description": "spectro application management app version information", "properties": { - "systemLogins": { - "items": { - "$ref": "#/definitions/v1SsoLogin" - }, + "intermediateVersions": { "type": "array", - "uniqueItems": true + "uniqueItems": true, + "items": { + "description": "spectro application management release version information", + "properties": { + "date": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "releaseNotes": { + "type": "array", + "items": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "version": { + "type": "string" + } + } + } }, - "tenantLogin": { + "latestVerson": { + "description": "spectro application management release version information", "properties": { - "authType": { + "date": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "description": { "type": "string" }, - "redirectUrl": { + "releaseNotes": { + "type": "array", + "items": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "version": { "type": "string" } - }, - "type": "object" + } } - }, - "type": "object" + } }, - "v1OidcRefreshToken": { - "description": "oidc request with token", - "properties": { - "token": { - "type": "string" - } - }, - "type": "object" + "v1ArchType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] }, - "v1OpenIDProviderMetadataResponse": { - "properties": { - "authorization_endpoint": { - "description": "REQUIRED. URL of the OP's OAuth 2.0 Authorization Endpoint", - "type": "string" - }, - "claims_supported": { - "description": "RECOMMENDED. JSON array containing a list of the Claim Names of the Claims that the OpenID Provider MAY be able to supply values for", - "type": "string" - }, - "id_token_signing_alg_values_supported": { - "description": "REQUIRED. JSON array containing a list of the JWS signing algorithms (alg values) supported by the OP for the ID Token to encode the Claims in a JWT", - "type": "object" - }, - "issuer": { - "description": "REQUIRED. URL using the https scheme with no query or fragment component that the OP asserts as its Issuer Identifier", - "type": "string" - }, - "jwks_uri": { - "description": "REQUIRED. URL of the OP's JSON Web Key Set [JWK] document.", - "type": "string" - }, - "registration_endpoint": { - "description": "RECOMMENDED. URL of the OP's Dynamic Client Registration Endpoint", + "v1AsyncOperationIdEntity": { + "description": "Async operation id", + "type": "object", + "properties": { + "operationId": { + "description": "OperationId for a particular sync operation id", "type": "string" + } + } + }, + "v1AsyncResult": { + "type": "object", + "properties": { + "data": { + "type": "object" }, - "response_types_supported": { - "description": "REQUIRED. JSON array containing a list of the OAuth 2.0 response_type values that this OP supports", + "error": { "type": "string" }, - "scopes_supported": { - "description": "RECOMMENDED. JSON array containing a list of the OAuth 2.0 [RFC6749] scope values that this server supports", - "type": "string" + "isSuccess": { + "type": "boolean" + } + } + }, + "v1AsyncStatus": { + "type": "object", + "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" }, - "subject_types_supported": { - "description": "REQUIRED. JSON array containing a list of the Subject Identifier types that this OP supports", - "type": "string" + "result": { + "type": "object", + "properties": { + "data": { + "type": "object" + }, + "error": { + "type": "string" + }, + "isSuccess": { + "type": "boolean" + } + } }, - "token_endpoint": { - "description": "URL of the OP's OAuth 2.0 Token Endpoint", + "stage": { "type": "string" }, - "userinfo_endpoint": { - "description": "RECOMMENDED. URL of the OP's UserInfo Endpoint", - "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": "object" + } }, - "v1OpenStackAccount": { - "description": "OpenStack account information", + "v1Audit": { + "description": "Audit response payload", + "type": "object", "properties": { - "kind": { - "description": "Cloud account kind", - "type": "string" - }, "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1OpenStackCloudAccount" - }, - "status": { - "$ref": "#/definitions/v1CloudAccountStatus" + "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" + } }, - "v1OpenStackAccounts": { + "v1AuditActor": { + "description": "Audit actor object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1OpenStackAccount" - }, - "type": "array", - "uniqueItems": true + "actorType": { + "type": "string", + "enum": [ + "user", + "system", + "service" + ] }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1OpenStackAz": { - "description": "OpenStack az entity", - "properties": { - "name": { - "description": "Name of OpenStack az", + "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" + } + } } - }, - "type": "object" + } }, - "v1OpenStackAzs": { - "description": "List of OpenStack azs", + "v1AuditMsgUpdate": { + "description": "Audit user message update request payload", + "type": "object", "properties": { - "azs": { - "items": { - "$ref": "#/definitions/v1OpenStackAz" - }, - "type": "array", - "uniqueItems": true + "userMsg": { + "description": "User message", + "type": "string", + "maxLength": 255, + "minLength": 3 } - }, + } + }, + "v1AuditResourceReference": { + "description": "Audit resource reference object", + "type": "object", "required": [ - "azs" + "uid" ], - "type": "object" - }, - "v1OpenStackCloudAccount": { - "description": "auth-url,project,username,password,domain,cacert etc", "properties": { - "caCert": { - "description": "Ca cert for OpenStack", - "type": "string" - }, - "defaultDomain": { - "description": "Default Domain name", - "type": "string" - }, - "defaultProject": { - "description": "Default Project name", - "type": "string" - }, - "identityEndpoint": { - "description": "Identity endpoint for OpenStack", + "kind": { + "description": "Audit resource type", "type": "string" }, - "insecure": { - "description": "For self signed certs in IdentityEndpoint", - "type": "boolean" - }, - "parentRegion": { - "description": "Parent region of OpenStack", + "label": { + "description": "Audit resource label", "type": "string" }, - "password": { - "description": "Password of OpenStack account", + "name": { + "description": "Audit resource name", "type": "string" }, - "username": { - "description": "Username of OpenStack account", + "uid": { + "description": "Audit resource uid", "type": "string" } - }, - "required": [ - "identityEndpoint", - "username", - "password" - ], - "type": "object" - }, - "v1OpenStackCloudClusterConfigEntity": { - "description": "Openstack cloud cluster config entity", - "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1OpenStackClusterConfig" - } - }, - "type": "object" + } }, - "v1OpenStackCloudConfig": { - "description": "OpenStackCloudConfig is the Schema for the OpenStackcloudconfigs API", + "v1AuditSpec": { + "description": "Audit specifications", "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", + "actionMsg": { + "description": "Audit action message", "type": "string" }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "actionType": { + "type": "string", + "enum": [ + "create", + "update", + "delete", + "publish", + "deploy" + ] }, - "spec": { - "$ref": "#/definitions/v1OpenStackCloudConfigSpec" + "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" + } + } + } + } }, - "status": { - "$ref": "#/definitions/v1OpenStackCloudConfigStatus" - } - }, - "type": "object" - }, - "v1OpenStackCloudConfigSpec": { - "description": "OpenStackCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "properties": { - "cloudAccountRef": { - "$ref": "#/definitions/v1ObjectReference", - "description": "cloudAccountRef should point to the secret which contains OpenStackCloudAccount" + "contentMsg": { + "description": "Audit content message", + "type": "string" }, - "clusterConfig": { - "$ref": "#/definitions/v1OpenStackClusterConfig" + "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" + } + } }, - "machinePoolConfig": { - "items": { - "$ref": "#/definitions/v1OpenStackMachinePoolConfig" - }, - "type": "array" + "userMsg": { + "description": "Audit user message", + "type": "string" } - }, - "type": "object" + } }, - "v1OpenStackCloudConfigStatus": { - "description": "OpenStackCloudConfigStatus defines the observed state of OpenStackCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", + "v1AuditSysMsg": { + "description": "Audit system message", + "type": "object", "properties": { - "conditions": { - "items": { - "$ref": "#/definitions/v1ClusterCondition" - }, - "type": "array" - }, - "nodeImage": { + "actionMsg": { + "description": "Audit resource action message", "type": "string" }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", + "contentMsg": { + "description": "Audit resource content message", "type": "string" - }, - "useCapiImage": { - "type": "boolean" } - }, - "type": "object" + } }, - "v1OpenStackClusterConfig": { - "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools", + "v1Audits": { + "type": "object", + "required": [ + "items" + ], "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default", - "type": "boolean" - }, - "dnsNameservers": { - "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.", + "items": { + "description": "List of audit message", + "type": "array", + "uniqueItems": true, "items": { - "type": "string" - }, - "type": "array" - }, - "domain": { - "$ref": "#/definitions/v1OpenStackResource" - }, - "network": { - "$ref": "#/definitions/v1OpenStackResource", - "description": "For static placement" - }, - "nodeCidr": { - "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.", - "type": "string" - }, - "project": { - "$ref": "#/definitions/v1OpenStackResource" - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" + "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" + } + } + } + } + } }, - "subnet": { - "$ref": "#/definitions/v1OpenStackResource" + "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" + } }, - "v1OpenStackDomain": { - "description": "OpenStack domain. A Domain is a collection of projects, users, and roles", + "v1AuthAllyTokenRequest": { + "type": "object", "properties": { - "description": { - "description": "Description is the description of the Domain", + "edgeAuthToken": { "type": "string" }, - "id": { - "description": "ID is the unique ID of the domain", + "edgeHostUid": { "type": "string" }, - "name": { - "description": "Name is the name of the domain", + "spectroClusterUid": { "type": "string" } - }, - "type": "object" + } }, - "v1OpenStackFlavor": { - "description": "OpenStack flavor entity. Flavor represent (virtual) hardware configurations for server resources", + "v1AuthCertsGet": { + "description": "Auth certs get", "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" + "caCert": { + "type": "string", + "x-omitempty": false }, - "vcpus": { - "description": "VCPUs indicates how many (virtual) CPUs are available for this flavor", - "type": "integer" + "insecureSkipVerify": { + "type": "boolean", + "x-omitempty": false } - }, - "type": "object" + } }, - "v1OpenStackFlavors": { - "description": "List of OpenStack flavours", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1OpenStackFlavor" - }, - "type": "array", - "uniqueItems": true - } - }, + "v1AuthEdgeJetKeyRequest": { + "type": "object", "required": [ - "items" + "edgeAuthToken", + "edgeHostUid" ], - "type": "object" - }, - "v1OpenStackKeypair": { - "description": "OpenStack keypair. KeyPair is an SSH key known to the OpenStack Cloud that is available to be injected into servers", "properties": { - "name": { - "description": "Name is used to refer to this keypair from other services within this region", + "edgeAuthToken": { "type": "string" }, - "publicKey": { - "description": "PublicKey is the public key from this pair, in OpenSSH format", + "edgeHostUid": { + "type": "string" + }, + "spectroClusterUid": { "type": "string" } - }, - "type": "object" + } }, - "v1OpenStackKeypairs": { - "description": "List of OpenStack keypairs", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1OpenStackKeypair" - }, - "type": "array", - "uniqueItems": true - } - }, + "v1AuthJetKeyRequest": { + "type": "object", "required": [ - "items" + "allyAuthToken", + "hostClusterUid" ], - "type": "object" - }, - "v1OpenStackMachine": { - "description": "OpenStack cloud VM definition", "properties": { - "kind": { + "allyAuthToken": { "type": "string" }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1OpenStackMachineSpec" - }, - "status": { - "$ref": "#/definitions/v1CloudMachineStatus" + "hostClusterUid": { + "type": "string" } - }, - "type": "object" + } }, - "v1OpenStackMachineConfigEntity": { + "v1AuthLogin": { + "description": "Describes the credential details required for authentication", + "type": "object", "properties": { - "azs": { - "description": "for master pool, this will be the failure domains for kcp", - "items": { - "type": "string" - }, - "type": "array" + "emailId": { + "description": "Describes the email id required for the user to authenticate", + "type": "string" }, - "flavorConfig": { - "$ref": "#/definitions/v1OpenstackFlavorConfig" + "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" } - }, - "required": [ - "flavorConfig" - ], - "type": "object" + } }, - "v1OpenStackMachinePoolCloudConfigEntity": { + "v1AuthLoginEntity": { + "description": "Auth login entity", + "type": "object", "properties": { - "azs": { - "description": "for master pool, this will be the failure domains for kcp", - "items": { - "type": "string" - }, - "type": "array" - }, - "diskGiB": { - "description": "Root disk size", - "format": "int32", - "type": "integer" + "authType": { + "type": "string", + "enum": [ + "password", + "sso" + ] }, - "flavorConfig": { - "$ref": "#/definitions/v1OpenstackFlavorConfig" + "orgName": { + "type": "string" }, - "subnet": { - "$ref": "#/definitions/v1OpenStackResource" + "redirectUrl": { + "type": "string", + "x-omitempty": false } - }, - "required": [ - "flavorConfig" - ], - "type": "object" + } }, - "v1OpenStackMachinePoolConfig": { + "v1AuthLogins": { + "description": "Deprecated. Applicable auth logins with multiple orgs", + "type": "object", "properties": { - "additionalLabels": { - "additionalProperties": { - "type": "string" - }, - "description": "additionalLabels", - "type": "object" - }, - "additionalTags": { - "additionalProperties": { - "type": "string" - }, - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object" - }, - "azs": { - "description": "for master pool, this will be the failure domains for kcp", - "items": { - "type": "string" - }, - "type": "array" - }, - "diskGiB": { - "description": "DiskGiB is used to configure rootVolume, the volume metadata to boot from", - "format": "int32", - "type": "integer" - }, - "flavor": { - "description": "Openstack flavor name, only return argument", + "appEnv": { "type": "string" }, - "flavorConfig": { - "$ref": "#/definitions/v1OpenstackFlavorConfig", - "description": "Openstack flavor configuration, input argument" + "authType": { + "description": "Deprecated.", + "type": "string", + "enum": [ + "password", + "sso" + ] }, - "image": { + "orgName": { + "description": "Deprecated.", "type": "string" }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: master/worker, gpu, windows", + "orgs": { + "type": "array", "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" + "description": "Auth login entity", + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "password", + "sso" + ] + }, + "orgName": { + "type": "string" + }, + "redirectUrl": { + "type": "string", + "x-omitempty": false + } + } + } }, - "name": { + "redirectUrl": { + "description": "Deprecated.", + "type": "string", + "x-omitempty": false + } + } + }, + "v1AuthMfaLoginFinishRequest": { + "type": "object", + "properties": { + "_type": { "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" + "authenticatorAttachment": { + "type": "string" }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", - "type": "integer" + "clientExtensionResults": { + "type": "object", + "additionalProperties": { + "type": "object" + } }, - "subnet": { - "$ref": "#/definitions/v1OpenStackResource" + "deviceName": { + "type": "string" }, - "taints": { - "description": "master or worker taints", - "items": { - "$ref": "#/definitions/v1Taint" - }, - "type": "array", - "uniqueItems": true + "id": { + "type": "string" }, - "updateStrategy": { - "$ref": "#/definitions/v1UpdateStrategy", - "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + "rawId": { + "type": "string", + "format": "url-encoded-base64" }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", - "type": "boolean" + "response": { + "type": "object", + "properties": { + "authenticatorData": { + "type": "string", + "format": "url-encoded-base64" + }, + "clientDataJSON": { + "type": "string", + "format": "url-encoded-base64" + }, + "signature": { + "type": "string", + "format": "url-encoded-base64" + }, + "userHandle": { + "type": "string", + "format": "url-encoded-base64" + } + } } - }, - "required": [ - "flavorConfig" - ], - "type": "object" + } }, - "v1OpenStackMachinePoolConfigEntity": { + "v1AuthServiceTokenRequest": { + "type": "object", "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1OpenStackMachinePoolCloudConfigEntity" + "authKey": { + "type": "string" }, - "poolConfig": { - "$ref": "#/definitions/v1MachinePoolConfigEntity" - } - }, - "required": [ - "cloudConfig" - ], - "type": "object" - }, - "v1OpenStackMachineSpec": { - "description": "OpenStack cloud VM definition spec", - "properties": { - "az": { + "edgeHostUid": { "type": "string" }, - "image": { + "hostClusterUid": { "type": "string" }, - "instanceType": { - "$ref": "#/definitions/v1GenericInstanceType", - "description": "Instance flavor of the machine with cpu and memory info" + "isSystem": { + "type": "boolean" }, - "nics": { - "items": { - "$ref": "#/definitions/v1OpenStackNic" - }, - "type": "array" + "jetUid": { + "type": "string" }, - "projectId": { + "overlordUid": { "type": "string" }, - "securityGroups": { - "items": { - "type": "string" - }, - "type": "array" + "serviceVersion": { + "type": "string" }, - "sshKeyName": { + "spectroClusterUid": { + "type": "string" + }, + "tenantUid": { "type": "string" } - }, - "required": [ - "instanceType", - "nics" - ], - "type": "object" + } }, - "v1OpenStackMachines": { - "description": "OpenStack machine list", + "v1AuthServiceTokenResponse": { + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1OpenStackMachine" - }, - "type": "array", - "uniqueItems": true + "token": { + "type": "string" } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1OpenStackNetwork": { - "description": "OpenStack network", + "v1AuthShellyLoginRequest": { + "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", + "secret": { "type": "string" - }, - "subnets": { - "description": "Subnets associated with OpenStack network", - "items": { - "$ref": "#/definitions/v1OpenStackSubnet" - }, - "type": "array", - "uniqueItems": true } - }, - "type": "object" + } }, - "v1OpenStackNetworks": { - "description": "List of OpenStack networks", + "v1AuthToken": { + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1OpenStackNetwork" - }, - "type": "array", - "uniqueItems": true + "token": { + "type": "string" } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1OpenStackNic": { - "description": "OpenStack network interface", + "v1AuthTokenRevoke": { "properties": { - "index": { - "format": "int8", - "type": "integer" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { + "tokens": { + "type": "array", + "uniqueItems": true, "items": { "type": "string" - }, - "type": "array" + } } - }, - "required": [ - "networkName" - ], - "type": "object" + } }, - "v1OpenStackProject": { - "description": "Project represents an OpenStack Identity Project", + "v1AuthTokenSettings": { + "description": "System auth token settings", "properties": { - "description": { - "description": "Description is the description of the project", - "type": "string" - }, - "domainId": { - "description": "DomainID is the domain ID the project belongs to", + "expiryTimeMinutes": { + "description": "Auth token expiry time in minutes", + "type": "integer", + "format": "int32", + "maximum": 1440, + "minimum": 15, + "x-omitempty": false + } + } + }, + "v1AwsAMI": { + "type": "object", + "properties": { + "id": { "type": "string" }, - "id": { - "description": "ID is the unique ID of the project", + "os": { "type": "string" }, - "name": { - "description": "Name is the name of the project", + "region": { "type": "string" }, - "parentProjectId": { - "description": "ParentID is the parent_id of the project", + "state": { "type": "string" } - }, - "type": "object" - }, - "v1OpenStackProjects": { - "description": "Array of OpenStack projects", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1OpenStackProject" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1OpenStackRegion": { - "description": "OpenStack region entity", + "v1AwsAccount": { + "description": "Aws cloud account information", + "type": "object", "properties": { - "description": { - "description": "Description of OpenStack region", + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - "id": { - "description": "Id of OpenStack region", + "kind": { + "description": "Deprecated. Cloud type of the account.", "type": "string" }, - "parentRegionId": { - "description": "Parent region id of OpenStack region", - "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": "object" + } }, - "v1OpenStackRegions": { - "description": "List of OpenStack regions and domains", + "v1AwsAccounts": { + "description": "List of AWS accounts", + "type": "object", + "required": [ + "items" + ], "properties": { - "domains": { - "description": "List of OpenStack domains", - "items": { - "$ref": "#/definitions/v1OpenStackDomain" - }, + "items": { "type": "array", - "uniqueItems": true - }, - "regions": { - "description": "List of OpenStack regions", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1OpenStackRegion" - }, - "type": "array", - "uniqueItems": true + "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 + } + } } - }, - "required": [ - "regions", - "domains" - ], - "type": "object" + } }, - "v1OpenStackResource": { + "v1AwsAmiReference": { + "description": "AMI is the reference to the AMI from which to create the machine instance", + "type": "object", "properties": { - "id": { - "type": "string" + "eksOptimizedLookupType": { + "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store", + "type": "string", + "enum": [ + "AmazonLinux", + "AmazonLinuxGPU" + ] }, - "name": { + "id": { + "description": "ID of resource", "type": "string" } - }, - "type": "object" + } }, - "v1OpenStackSubnet": { - "description": "OpenStack subnet entity", + "v1AwsAvailabilityZone": { + "description": "Distinct locations within an AWS Region that are engineered to be isolated from failures in other Zones", + "type": "object", "properties": { - "description": { - "description": "Description for the network", + "name": { + "description": "AWS availability zone name", "type": "string" }, - "id": { - "description": "UUID for the network", + "state": { + "description": "AWS availability zone state", "type": "string" }, - "name": { - "description": "Human-readable name for the network. Might not be unique", + "zoneId": { + "description": "AWS availability zone id", "type": "string" } - }, - "type": "object" + } }, - "v1OpenstackFlavorConfig": { - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", - "format": "int32", - "type": "integer" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", - "format": "int64", - "type": "integer" - }, - "name": { - "description": "Openstack flavor name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine.", - "format": "int32", - "type": "integer" - } - }, + "v1AwsAvailabilityZones": { + "type": "object", "required": [ - "name" - ] - }, - "v1OrgState": { - "description": "Org state", + "zones" + ], "properties": { - "state": { - "type": "string" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1Organization": { - "description": "Describes user's organization details", + "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", + "type": "object", "properties": { - "authType": { - "description": "Describes user's enabled authorization mode", + "accessKey": { + "description": "AWS account access key", "type": "string" }, - "name": { - "description": "Describes user's organization name", - "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" + ] }, - "redirectUrl": { - "description": "Describes user's organization authentication url", + "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" }, - "ssoLogins": { - "$ref": "#/definitions/v1SsoLogins", - "description": "Describes a list of allowed social logins for the organization" + "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": "object" + } }, - "v1Organizations": { - "description": "Returns a list of user's organizations details and login methods", + "v1AwsCloudAccountCredentialType": { + "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" + ] + }, + "v1AwsCloudClusterConfigEntity": { + "description": "AWS cloud cluster config entity", + "type": "object", "properties": { - "organizations": { - "description": "Describes a list of user's organization", - "items": { - "$ref": "#/definitions/v1Organization" - }, - "type": "array", - "uniqueItems": true + "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" + } }, - "v1OsPatchConfig": { + "v1AwsCloudConfig": { + "description": "AwsCloudConfig is the Schema for the awscloudconfigs API", + "type": "object", "properties": { - "onDemandPatchAfter": { - "$ref": "#/definitions/v1Time", - "description": "OnDemandPatchAfter is the desired time for one time on-demand patch" + "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" }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "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" + "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" + } }, - "v1OsPatchEntity": { + "v1AwsCloudConfigSpec": { + "description": "AwsCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "type": "object", "properties": { - "osPatchConfig": { - "$ref": "#/definitions/v1OsPatchConfig" + "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 + } + } + } } - }, - "type": "object" - }, - "v1OsType": { - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ], - "type": "string" + } }, - "v1OverloadSpec": { - "description": "Overload spec", + "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", + "type": "object", "properties": { - "cloudAccountUid": { - "type": "string", - "x-omitempty": false - }, - "ipAddress": { + "ansibleRoleDigest": { + "description": "For mold controller to identify if is there any changes in Pack", "type": "string" }, - "ipPools": { + "conditions": { + "type": "array", "items": { - "$ref": "#/definitions/v1IpPoolEntity" - }, - "type": "array" + "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" + } + } + } }, - "isSelfHosted": { - "type": "boolean" + "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" + } + } + } }, - "isSystem": { + "isAddonLayer": { + "description": "addon layers present in spc", "type": "boolean" }, - "spectroClusterUid": { - "type": "string", - "x-omitempty": false + "roleDigest": { + "description": "this map will be for ansible roles present in eack pack", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "tenantUid": { + "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" + } }, - "v1OverloadStatus": { - "description": "Overload status", + "v1AwsCloudCostSpec": { + "description": "Aws cloud account usage cost payload spec", + "type": "object", + "required": [ + "credentials" + ], "properties": { - "health": { - "$ref": "#/definitions/v1SpectroClusterHealthStatus" - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "isReady": { - "type": "boolean", - "x-omitempty": false + "accountId": { + "description": "AccountId of AWS cloud cost", + "type": "string" }, - "kubectlCommands": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "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" + } + } + } + } }, - "state": { - "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": "object" + } }, - "v1OverloadVsphereOva": { - "description": "Overload ova details", + "v1AwsCloudCostSpecFilter": { + "description": "Aws cloud account usage cost payload filter. startTime and endTime should be within 12 months range from now.", + "type": "object", + "required": [ + "startTime" + ], "properties": { - "location": { + "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", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1Overlord": { - "description": "Overlord defintiion", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "format": "date-time" }, - "spec": { - "$ref": "#/definitions/v1OverloadSpec" + "iamUserId": { + "description": "IAM UserId of AWS account", + "type": "string" }, - "status": { - "$ref": "#/definitions/v1OverloadStatus" + "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": "object" + } }, - "v1OverlordMaasAccountCreate": { + "v1AwsCloudCostSummary": { + "description": "AWS cloud account usage cost summary response data", + "type": "object", "properties": { - "account": { - "$ref": "#/definitions/v1MaasCloudAccount" - }, - "name": { - "description": "Name for the private gateway & cloud account", - "type": "string" - }, - "shareWithProjects": { - "type": "boolean", - "x-omitempty": false + "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 + } + } } } }, - "v1OverlordMaasAccountEntity": { + "v1AwsCloudCostSummaryCloudCost": { + "description": "AWS cloud account usage cost summary of monthlyCosts and totalCost", + "type": "object", "properties": { - "account": { - "$ref": "#/definitions/v1MaasCloudAccount" + "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" + } + } + } }, - "shareWithProjects": { - "type": "boolean", + "total": { + "description": "Total cost of AWS cost", + "type": "number", + "format": "float64", "x-omitempty": false } } }, - "v1OverlordMaasCloudConfig": { + "v1AwsCloudCostSummaryMonthlyCost": { + "type": "object", "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1MaasClusterConfig" - }, - "clusterProfiles": { - "description": "Cluster profiles pack configuration for private gateway cluster", - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" - }, - "clusterSettings": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "clusterSettings is the generic configuration related to a cluster like OS patch, Rbac, Namespace allocation" - }, - "machineConfig": { - "$ref": "#/definitions/v1MaasMachineConfigEntity" + "amount": { + "description": "Amount for aws cloud cost", + "type": "number", + "format": "float64", + "x-omitempty": false }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", + "timestamp": { + "description": "Time duration for aws cloud cost", "type": "integer" } } }, - "v1OverlordManifest": { - "description": "overlord manifest", + "v1AwsClusterConfig": { + "description": "Cluster level configuration for aws cloud and applicable for all the machine pools", + "type": "object", + "required": [ + "region" + ], "properties": { - "manifest": { + "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" - } - }, - "type": "object" - }, - "v1OverlordMigrateEntity": { - "properties": { - "sourceUid": { + }, + "region": { "type": "string" }, - "targetUid": { + "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" } } }, - "v1OverlordOpenStackAccountCreate": { + "v1AwsCreditAccount": { + "type": "object", "properties": { - "account": { - "$ref": "#/definitions/v1OpenStackCloudAccount" + "creditLimitInDollars": { + "type": "number", + "format": "float64" }, - "name": { - "description": "Name for the private gateway & cloud account", - "type": "string" + "loginCredentials": { + "type": "object", + "properties": { + "iamUser": { + "type": "string" + }, + "password": { + "type": "string", + "format": "password" + } + } }, - "shareWithProjects": { - "type": "boolean", - "x-omitempty": false + "userCloudAccount": { + "properties": { + "accountId": { + "type": "string" + }, + "cloudAccount": { + "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" + } + } + } + } + } + } } } }, - "v1OverlordOpenStackAccountEntity": { + "v1AwsCreditAccountEntity": { + "type": "object", "properties": { - "account": { - "$ref": "#/definitions/v1OpenStackCloudAccount" + "creditLimitInDollars": { + "type": "number", + "format": "float64", + "x-omitempty": false }, - "shareWithProjects": { - "type": "boolean", + "creditUsedInDollars": { + "type": "number", + "format": "float64", "x-omitempty": false + }, + "loginCredentials": { + "type": "object", + "properties": { + "iamUser": { + "type": "string" + }, + "password": { + "type": "string", + "format": "password" + } + } + }, + "userCloudAccount": { + "properties": { + "accountId": { + "type": "string" + }, + "cloudAccount": { + "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" + } + } + } + } + } + } } } }, - "v1OverlordOpenStackCloudConfig": { + "v1AwsFindImageRequest": { + "description": "AWS image name and credentials", + "type": "object", "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1OpenStackClusterConfig" - }, - "clusterProfiles": { - "description": "Cluster profiles pack configuration for private gateway cluster", - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" - }, - "clusterSettings": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "clusterSettings is the generic configuration related to a cluster like OS patch, Rbac, Namespace allocation" - }, - "machineConfig": { - "$ref": "#/definitions/v1OpenStackMachineConfigEntity" + "amiName": { + "description": "AWS image ami name", + "type": "string" }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", - "type": "integer" + "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" + } + } + } + } } } }, - "v1OverlordVsphereAccountCreate": { + "v1AwsIamPolicy": { + "description": "Aws policy", + "type": "object", "properties": { - "account": { - "$ref": "#/definitions/v1VsphereCloudAccount" + "arn": { + "type": "string" }, - "name": { - "description": "Name for the private gateway & cloud account", + "policyId": { "type": "string" }, - "shareWithProjects": { - "type": "boolean", - "x-omitempty": false + "policyName": { + "type": "string" } } }, - "v1OverlordVsphereAccountEntity": { + "v1AwsImage": { + "description": "AWS image name and ami", + "type": "object", "properties": { - "account": { - "$ref": "#/definitions/v1VsphereCloudAccount" + "id": { + "description": "AWS image id", + "type": "string" }, - "shareWithProjects": { - "type": "boolean", - "x-omitempty": false + "name": { + "description": "AWS image name", + "type": "string" + }, + "owner": { + "description": "AWS image owner id", + "type": "string" } } }, - "v1OverlordVsphereCloudConfig": { + "v1AwsInstanceTypes": { + "description": "List of AWS instance types", + "type": "object", "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1VsphereOverlordClusterConfigEntity" - }, - "clusterProfiles": { - "description": "Cluster profiles pack configuration for private gateway cluster", + "instanceTypes": { + "type": "array", "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" - }, - "clusterSettings": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "clusterSettings is the generic configuration related to a cluster like OS patch, Rbac, Namespace allocation" - }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", - "type": "integer" + "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" + } + } + } } } }, - "v1Overlords": { - "description": "Array of Overlords", + "v1AwsKeyPairs": { + "description": "List of AWS keypairs", + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1Overlord" - }, + "keyNames": { + "description": "Array of Aws Keypair names", "type": "array", - "uniqueItems": true + "items": { + "type": "string" + } } - }, + } + }, + "v1AwsKmsKey": { + "description": "AWS KMS Key - gives you centralized control over the cryptographic keys used to protect your data.", + "type": "object", "required": [ - "items" + "keyId", + "keyArn" ], - "type": "object" - }, - "v1PackConfig": { - "description": "Pack configuration", "properties": { - "spec": { - "$ref": "#/definitions/v1PackConfigSpec" - } - }, - "type": "object" - }, - "v1PackConfigSpec": { - "properties": { - "associatedObject": { - "type": "string" - }, - "isValuesOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "manifests": { - "items": { - "$ref": "#/definitions/v1PackManifestRef" - }, - "type": "array" - }, - "name": { - "type": "string" - }, - "packUid": { + "keyAlias": { + "description": "AWS KMS alias", "type": "string" }, - "scope": { + "keyArn": { + "description": "AWS KMS arn", "type": "string" }, - "tag": { + "keyId": { + "description": "AWS KMS keyid", "type": "string" - }, - "type": { + } + } + }, + "v1AwsKmsKeyEntity": { + "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" }, - "values": { - "type": "string" + "enabled": { + "description": "Specifies whether the KMS key is enabled.", + "type": "boolean" }, - "version": { + "keyId": { + "description": "The globally unique identifier for the KMS key", "type": "string" } - }, - "type": "object" + } }, - "v1PackDependency": { - "description": "Pack template dependency", + "v1AwsKmsKeys": { + "description": "List of AWS Keys", + "type": "object", + "required": [ + "kmsKeys" + ], "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" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1PackDependencyMeta": { - "description": "Pack dependency metadata", + "v1AwsLaunchTemplate": { + "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group", + "type": "object", "properties": { - "displayName": { - "description": "Pack display name", - "type": "string" + "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" + } + } + } }, - "logoUrl": { - "description": "Pack logo url", - "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" + } + } }, - "name": { - "description": "Pack name", + "imageLookupBaseOS": { + "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set", "type": "string" }, - "registryUid": { - "description": "Pack registry uid", + "imageLookupFormat": { + "description": "ImageLookupFormat is the AMI naming format to look up the image", "type": "string" }, - "uid": { - "description": "Pack uid", + "imageLookupOrg": { + "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set", "type": "string" }, - "version": { - "description": "Pack version", - "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" + } + } } - }, - "type": "object" + } }, - "v1PackEntity": { - "description": "Pack object", + "v1AwsLoginCredentials": { + "type": "object", "properties": { - "layer": { - "description": "Pack layer", + "iamUser": { "type": "string" }, - "name": { - "description": "Pack name", + "password": { + "type": "string", + "format": "password" + } + } + }, + "v1AwsMachine": { + "description": "AWS cloud VM definition", + "type": "object", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - "tag": { - "description": "Pack tag", + "kind": { + "description": "Deprecated. Cloud type of the machine.", "type": "string" }, - "type": { - "$ref": "#/definitions/v1PackType" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "uid": { - "description": "Pack uid", - "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" + } + } }, - "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" + "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" + } + } + } + } } - }, + } + }, + "v1AwsMachinePoolCloudConfigEntity": { + "type": "object", "required": [ - "uid", - "name" + "instanceType" ], - "type": "object" - }, - "v1PackFilterSpec": { - "description": "Packs filter spec", "properties": { - "addOnSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "items": { - "type": "string" - }, + "additionalSecurityGroups": { + "description": "Additional Security groups", "type": "array", - "uniqueItems": true - }, - "addOnType": { - "description": "Pack add-on type such as logging, monitoring, security etc", "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "displayName": { - "$ref": "#/definitions/v1FilterString" + "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" + } + } + } }, - "environment": { - "description": "Pack supported cloud types", + "azs": { + "type": "array", "items": { "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "isFips": { - "description": "isFips compliant", - "type": "boolean" + } }, - "layer": { - "description": "Pack layer", - "items": { - "$ref": "#/definitions/v1PackLayer" - }, - "type": "array", - "uniqueItems": true + "capacityType": { + "description": "EC2 instance capacity type", + "type": "string", + "default": "on-demand", + "enum": [ + "on-demand", + "spot" + ] }, - "name": { - "$ref": "#/definitions/v1FilterString" + "instanceType": { + "description": "instance type", + "type": "string" }, - "registryUid": { - "description": "Pack registry uid", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "rootDeviceSize": { + "description": "rootDeviceSize in GBs", + "type": "integer", + "format": "int64", + "maximum": 2000, + "minimum": 1 }, - "source": { - "description": "The source filter describes the creation origin/source of the pack. Ex. source can be \"spectrocloud\" or \"community\"", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "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" + } + } }, - "state": { - "description": "Pack state such as deprecated or disabled", - "items": { - "type": "string" - }, + "subnets": { "type": "array", - "uniqueItems": true - }, - "type": { - "description": "Pack type", "items": { - "$ref": "#/definitions/v1PackType" - }, - "type": "array", - "uniqueItems": true + "properties": { + "az": { + "type": "string" + }, + "id": { + "type": "string" + } + } + } } } }, - "v1PackImportEntity": { - "description": "Pack import request payload", + "v1AwsMachinePoolConfig": { + "type": "object", + "required": [ + "isControlPlane" + ], "properties": { - "layer": { - "description": "Pack layer [ \"os\", \"k8s\", \"cni\", \"csi\", \"addon\" ]", - "type": "string" + "additionalLabels": { + "description": "additionalLabels", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "manifests": { - "description": "Pack manifests array", + "additionalSecurityGroups": { + "description": "Additional Security groups", + "type": "array", "items": { - "$ref": "#/definitions/v1PackManifestImportEntity" - }, - "type": "array" + "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" + } + } + } }, - "name": { - "description": "Pack name", - "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" + } }, - "registry": { - "$ref": "#/definitions/v1PackRegistryImportEntity" + "azs": { + "description": "AZs is only used for dynamic placement", + "type": "array", + "items": { + "type": "string" + } }, - "tag": { - "description": "Pack version tag", - "type": "string" + "capacityType": { + "description": "EC2 instance capacity type", + "type": "string", + "default": "on-demand", + "enum": [ + "on-demand", + "spot" + ] }, - "type": { - "description": "Pack type [ \"spectro\", \"helm\", \"manifest\", \"oci\" ]", - "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" + } + } }, - "values": { - "description": "Pack values are the customizable configurations for the pack", + "instanceType": { + "description": "instance type", "type": "string" }, - "version": { - "description": "Pack version", - "type": "string" - } - }, - "type": "object" - }, - "v1PackInputEntity": { - "description": "Pack request payload", - "properties": { - "pack": { - "$ref": "#/definitions/v1PackManifestEntity" - } - } - }, - "v1PackLayer": { - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ], - "type": "string" - }, - "v1PackManifestEntity": { - "description": "Pack request payload", - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "type": "array", "items": { - "$ref": "#/definitions/v1ManifestInputEntity" - }, - "type": "array" + "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": { - "description": "Pack name", "type": "string" }, - "registryUid": { - "description": "Pack registry uid", - "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" }, - "tag": { - "description": "Pack tag", - "type": "string" + "rootDeviceSize": { + "description": "rootDeviceSize in GBs", + "type": "integer", + "format": "int64" }, - "type": { - "$ref": "#/definitions/v1PackType" + "size": { + "description": "size of the pool, number of machines", + "type": "integer", + "format": "int32" }, - "uid": { - "description": "Pack uid", - "type": "string" + "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" + } + } }, - "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" + "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 + } + } + }, + "v1AwsMachinePoolConfigEntity": { + "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 + } + } } - }, + } + }, + "v1AwsMachineSpec": { + "description": "AWS cloud VM definition spec", + "type": "object", "required": [ - "name" + "instanceType", + "vpcId", + "ami" ], - "type": "object" - }, - "v1PackManifestImportEntity": { - "description": "Pack manifest import objct", "properties": { - "content": { - "description": "Pack manifest content in yaml", - "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" + } + } + } }, - "name": { - "description": "Pack manifest name", - "type": "string" - } - }, - "type": "object" - }, - "v1PackManifestRef": { - "properties": { - "digest": { + "ami": { "type": "string" }, - "isOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "name": { + "az": { "type": "string" }, - "parentUid": { + "dnsName": { "type": "string" }, - "uid": { + "iamProfile": { "type": "string" - } - }, - "type": "object" - }, - "v1PackManifestUpdateEntity": { - "description": "Pack input entity with values to overwrite and manifests for the intial creation", - "properties": { - "layer": { - "description": "Pack layer", + }, + "instanceType": { "type": "string" }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", + "nics": { + "type": "array", "items": { - "$ref": "#/definitions/v1ManifestRefUpdateEntity" - }, - "type": "array" + "description": "AWS network interface", + "type": "object", + "properties": { + "index": { + "type": "integer", + "format": "int8" + }, + "privateIPs": { + "type": "array", + "items": { + "type": "string" + } + }, + "publicIp": { + "type": "string" + } + } + } }, - "name": { - "description": "Pack name", + "phase": { "type": "string" }, - "registryUid": { - "description": "Pack registry uid", + "sshKeyName": { "type": "string" }, - "tag": { - "description": "Pack tag", + "subnetId": { "type": "string" }, "type": { - "$ref": "#/definitions/v1PackType" - }, - "uid": { - "description": "Pack uid", "type": "string" }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", + "vpcId": { "type": "string" } - }, + } + }, + "v1AwsMachines": { + "description": "AWS machine list", + "type": "object", "required": [ - "name" + "items" ], - "type": "object" - }, - "v1PackManifests": { "properties": { "items": { - "description": "Manifests array", - "items": { - "$ref": "#/definitions/v1Manifest" - }, "type": "array", - "uniqueItems": true + "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 + } + } } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1PackManifestsSpec": { - "description": "Pack manifests spec", + "v1AwsNic": { + "description": "AWS network interface", + "type": "object", "properties": { - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "additionalProperties": { - "type": "string" - }, - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object" + "index": { + "type": "integer", + "format": "int8" }, - "cloudTypes": { - "description": "Pack supported cloud types", + "privateIPs": { + "type": "array", "items": { "type": "string" - }, - "type": "array" - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "$ref": "#/definitions/v1PackLayer" - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "items": { - "$ref": "#/definitions/v1ManifestSummary" - }, - "type": "array" - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "items": { - "$ref": "#/definitions/v1PackPreset" - }, - "type": "array" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "items": { - "$ref": "#/definitions/v1PackSchema" - }, - "type": "array" - }, - "type": { - "$ref": "#/definitions/v1PackType" - }, - "values": { - "description": "Pack values", - "type": "string" + } }, - "version": { - "description": "Pack version", + "publicIp": { "type": "string" } - }, - "type": "object" + } }, - "v1PackMetadata": { - "description": "Pack metadata object", - "properties": { - "kind": { - "description": "Pack kind", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1PackMetadataSpec" - } - }, - "type": "object" + "v1AwsPartition": { + "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" + ] }, - "v1PackMetadataList": { - "description": "List of packs metadata", + "v1AwsPolicies": { + "type": "object", + "required": [ + "policies" + ], "properties": { - "items": { - "description": "Packs metadata array", - "items": { - "$ref": "#/definitions/v1PackMetadata" - }, + "policies": { "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "items": { + "description": "Aws policy", + "type": "object", + "properties": { + "arn": { + "type": "string" + }, + "policyId": { + "type": "string" + }, + "policyName": { + "type": "string" + } + } + } } - }, + } + }, + "v1AwsPolicyArnsSpec": { + "description": "Aws policy ARNs spec", + "type": "object", "required": [ - "items" + "policyArns", + "account" ], - "type": "object" - }, - "v1PackMetadataSpec": { - "description": "Pack metadata spec", "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" + "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" + } + } + } + } }, - "cloudTypes": { - "description": "Pack supported cloud types", + "policyArns": { + "type": "array", "items": { "type": "string" - }, - "type": "array" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "group": { - "description": "Pack group", + } + } + } + }, + "v1AwsRegion": { + "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" }, - "layer": { - "$ref": "#/definitions/v1PackLayer" - }, "name": { - "description": "Pack name", + "description": "Name of the AWS region", "type": "string" }, - "registries": { - "description": "Pack registries array", - "items": { - "$ref": "#/definitions/v1RegistryPackMetadata" - }, - "type": "array" - }, - "type": { - "$ref": "#/definitions/v1PackType" + "optInStatus": { + "description": "Enable your account to operate in the particular regions", + "type": "string" } - }, - "type": "object" + } }, - "v1PackParamsEntity": { - "description": "Pack params request payload", + "v1AwsRegions": { + "type": "object", + "required": [ + "regions" + ], "properties": { - "references": { - "items": { - "type": "string" - }, + "regions": { + "description": "List of AWS regions", "type": "array", - "uniqueItems": true + "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" + } + } + } } } }, - "v1PackPreset": { - "description": "PackPreset defines the preset pack values", + "v1AwsResourceFilter": { + "description": "Filter is a filter used to identify an AWS resource", + "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 + "description": "Name of the filter. Filter names are case-sensitive", + "type": "string" }, - "remove": { + "values": { + "description": "Values includes one or more filter values. Filter values are case-sensitive", + "type": "array", + "uniqueItems": true, "items": { "type": "string" - }, - "type": "array", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1PackReadme": { - "properties": { - "readme": { - "description": "Readme describes the documentation of the specified pack", - "type": "string" + } } } }, - "v1PackRef": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", + "v1AwsResourceReference": { + "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", + "type": "object", "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object" - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ], - "type": "string" - }, - "logo": { - "description": "path to the pack logo", + "arn": { + "description": "ARN of resource", "type": "string" }, - "manifests": { + "filters": { + "description": "Filters is a set of key/value pairs used to identify a resource", + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1ObjectReference" - }, - "type": "array" - }, - "name": { - "description": "pack name", - "type": "string" + "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" + } + } + } + } }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", + "id": { + "description": "ID of resource", "type": "string" - }, - "params": { - "additionalProperties": { - "type": "string" - }, - "description": "params passed as env variables to be consumed at installation time", - "type": "object" - }, - "presets": { - "items": { - "$ref": "#/definitions/v1PackPreset" - }, - "type": "array" - }, - "registryUid": { - "description": "pack registry uid", + } + } + }, + "v1AwsRootVolume": { + "description": "Volume encapsulates the configuration options for the storage device.", + "type": "object", + "properties": { + "deviceName": { + "description": "Device name", "type": "string" }, - "schema": { - "items": { - "$ref": "#/definitions/v1PackSchema" - }, - "type": "array" + "encrypted": { + "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", + "type": "boolean" }, - "server": { - "description": "pack registry server or helm repo", + "encryptionKey": { + "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", "type": "string" }, - "tag": { - "description": "pack tag", - "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 of the pack", - "enum": [ - "spectro", - "helm", - "manifest" - ], + "description": "Type is the type of the volume (e.g. gp2, io1, etc...)", + "type": "string" + } + } + }, + "v1AwsS3BucketCredentials": { + "description": "AWS S3 Bucket credentials", + "type": "object", + "required": [ + "credentials", + "bucket", + "region" + ], + "properties": { + "bucket": { + "description": "Name of AWS S3 bucket", "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", + "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" }, - "version": { - "description": "pack version", + "region": { + "description": "Name of the available AWS region.", "type": "string" } - }, + } + }, + "v1AwsSecurityGroups": { + "type": "object", "required": [ - "layer", - "name" + "groups" ], - "type": "object" + "properties": { + "groups": { + "type": "array", + "items": { + "description": "Aws security group", + "type": "object", + "properties": { + "groupId": { + "type": "string" + }, + "groupName": { + "type": "string" + }, + "ownerId": { + "type": "string" + } + } + } + } + } }, - "v1PackRefSummary": { - "description": "Pack ref summary", + "v1AwsSecuritygroup": { + "description": "Aws security group", + "type": "object", "properties": { - "addonType": { + "groupId": { "type": "string" }, - "annotations": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "displayName": { + "groupName": { "type": "string" }, - "layer": { - "$ref": "#/definitions/v1PackLayer" - }, - "logoUrl": { + "ownerId": { "type": "string" - }, - "name": { + } + } + }, + "v1AwsStorageTypes": { + "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" + } + } + } + } + } + } + } + } + } + } + }, + "v1AwsStsCredentials": { + "description": "Aws sts credentials", + "type": "object", + "properties": { + "arn": { + "description": "Arn for the aws sts credentials in cloud account", "type": "string" }, - "packUid": { + "externalId": { + "description": "ExternalId for the aws sts credentials in cloud account", "type": "string" - }, - "tag": { + } + } + }, + "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" }, - "type": { + "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" }, - "version": { + "subnetId": { + "description": "Id of the subnet", "type": "string" } } }, - "v1PackRefSummaryResponse": { - "description": "Pack summary response", + "v1AwsSubnetEntity": { "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "az": { + "type": "string" }, - "spec": { - "$ref": "#/definitions/v1PackRefSummarySpec" + "id": { + "type": "string" } - }, - "type": "object" + } }, - "v1PackRefSummarySpec": { - "description": "Pack summary spec", + "v1AwsUserCloudAccount": { "properties": { - "macros": { - "$ref": "#/definitions/v1PackResolvedValues" - }, - "pack": { - "$ref": "#/definitions/v1PackSummarySpec" + "accountId": { + "type": "string" }, - "registry": { - "$ref": "#/definitions/v1RegistryMetadata" + "cloudAccount": { + "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" + } + } + } + } } } }, - "v1PackRegistries": { + "v1AwsVolumeSize": { + "description": "AWS Volume Size entity", + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1PackRegistry" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "sizeGB": { + "description": "AWS volume size", + "type": "integer" } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1PackRegistriesSummary": { - "description": "Pack Registries Summary", + "v1AwsVolumeType": { + "description": "AWS Volume Type entity", + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1PackRegistrySummary" - }, - "type": "array", - "uniqueItems": true + "id": { + "description": "AWS volume type id", + "type": "string" }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "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" } - }, + } + }, + "v1AwsVpc": { + "description": "A virtual network dedicated to a AWS account", + "type": "object", "required": [ - "items" + "vpcId" ], - "type": "object" - }, - "v1PackRegistry": { - "description": "Pack registry information", "properties": { - "kind": { + "cidrBlock": { "type": "string" }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "name": { + "description": "Name of the virtual network", + "type": "string" }, - "spec": { - "$ref": "#/definitions/v1PackRegistrySpec" + "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" + } + } + } }, - "status": { - "$ref": "#/definitions/v1PackRegistryStatus" + "vpcId": { + "description": "Id of the virtual network", + "type": "string" } - }, - "type": "object" + } }, - "v1PackRegistryImportEntity": { - "description": "Pack registry import entity", + "v1AwsVpcs": { + "description": "List of AWS VPCs", + "type": "object", + "required": [ + "vpcs" + ], "properties": { - "matchingRegistries": { + "vpcs": { + "type": "array", "items": { - "$ref": "#/definitions/v1PackRegistryMetadata" - }, - "type": "array" - }, - "metadata": { - "$ref": "#/definitions/v1PackRegistryMetadata" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1PackRegistryMetadata": { - "description": "Pack registry metadata", + "v1AzValidateEntity": { + "description": "Az validate entity", + "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" + "azs": { + "description": "Gcp Azs", + "type": "array", + "items": { + "type": "string" + } }, - "name": { - "description": "Pack registry name", + "project": { + "description": "Gcp project", "type": "string" }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", + "region": { + "description": "Gcp region", "type": "string" }, "uid": { - "description": "Pack registry uid", + "description": "Cloud account uid", "type": "string" } - }, - "type": "object" + } }, - "v1PackRegistrySpec": { - "description": "Pack registry credentials spec", + "v1AzureAccount": { + "description": "Azure account information", + "type": "object", "properties": { - "auth": { - "$ref": "#/definitions/v1RegistryAuth" - }, - "endpoint": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - "name": { + "kind": { + "description": "Deprecated. Cloud type of the account.", "type": "string" }, - "private": { - "type": "boolean", - "x-omitempty": false + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "registryUid": { - "description": "Pack registry uid", - "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" + } + } }, - "scope": { - "type": "string" + "status": { + "description": "Status of the account", + "type": "object", + "properties": { + "state": { + "description": "Cloud account status", + "type": "string" + } + } } - }, + } + }, + "v1AzureAccounts": { + "type": "object", "required": [ - "endpoint", - "auth" + "items" ], - "type": "object" + "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 + } + } + } + } }, - "v1PackRegistrySpecSummary": { - "description": "Pack Registry spec summary", + "v1AzureAvailabilityZone": { + "description": "Azure availability zone", + "type": "object", "properties": { - "endpoint": { + "name": { + "description": "Azure availability zone name", + "type": "string" + } + } + }, + "v1AzureCloudAccount": { + "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" }, - "private": { - "type": "boolean", - "x-omitempty": false + "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 + } + } }, - "scope": { + "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": "object" - }, - "v1PackRegistryStatus": { - "description": "Status of the pack registry", - "properties": { - "packSyncStatus": { - "$ref": "#/definitions/v1RegistrySyncStatus" - } - }, - "type": "object" + } }, - "v1PackRegistryStatusSummary": { - "description": "Pack registry status summary", + "v1AzureCloudClusterConfigEntity": { + "description": "Azure cloud cluster config entity", + "type": "object", "properties": { - "sync": { - "$ref": "#/definitions/v1RegistrySyncStatus" + "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": "object" + } }, - "v1PackRegistrySummary": { - "description": "Pack Registry summary", + "v1AzureCloudConfig": { + "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": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1PackRegistrySpecSummary" + "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": { - "$ref": "#/definitions/v1PackRegistryStatusSummary" + "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" + } + } + } + } } - }, - "type": "object" + } }, - "v1PackResolvedValues": { - "description": "Pack resolved values", + "v1AzureCloudConfigSpec": { + "description": "AzureCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "type": "object", "properties": { - "resolved": { - "additionalProperties": { - "type": "string" - }, - "description": "Pack resolved values map", - "type": "object" + "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 + } + } + } } } }, - "v1PackSchema": { - "description": "PackSchema defines the schema definition, hints for the pack values", + "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", + "type": "object", "properties": { - "format": { - "type": "string", - "x-omitempty": false + "ansibleRoleDigest": { + "description": "For mold controller to identify if is there any changes in Pack", + "type": "string" }, - "hints": { - "items": { - "type": "string" - }, + "conditions": { + "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", "type": "array", - "x-omitempty": false - }, - "listOptions": { "items": { - "type": "string" - }, - "type": "array", - "x-omitempty": false + "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", - "x-omitempty": false + "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" + } + } }, - "readonly": { - "type": "boolean", - "x-omitempty": false + "isAddonLayer": { + "description": "addon layers present in spc", + "type": "boolean" }, - "regex": { - "type": "string", - "x-omitempty": false + "roleDigest": { + "description": "this map will be for ansible roles present in eack pack", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "required": { - "type": "boolean", - "x-omitempty": false + "sourceImageId": { + "description": "sourceImageId, it can be from packref's annotations or from pack.json", + "type": "string" }, - "type": { - "type": "string", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1PackSortFields": { - "description": "Packs sort by fields", - "enum": [ - "name", - "type", - "layer", - "addOnType", - "displayName" - ], - "type": "string", - "x-nullable": true - }, - "v1PackSortSpec": { - "description": "Packs sort spec", - "properties": { - "field": { - "$ref": "#/definitions/v1PackSortFields" + "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" }, - "order": { - "$ref": "#/definitions/v1SortOrder" + "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" + } + } } } }, - "v1PackSummaries": { - "description": "List of packs", - "properties": { - "items": { - "description": "Packs array", - "items": { - "$ref": "#/definitions/v1PackSummary" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, + "v1AzureClusterConfig": { + "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools", + "type": "object", "required": [ - "items" + "subscriptionId", + "location", + "sshKey" ], - "type": "object" - }, - "v1PackSummary": { - "description": "Pack summary object", "properties": { - "kind": { - "description": "Pack kind", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "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 + } + } }, - "spec": { - "$ref": "#/definitions/v1PackSummarySpec" + "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" + } + } }, - "status": { - "$ref": "#/definitions/v1PackSummaryStatus" - } - }, - "type": "object" - }, - "v1PackSummarySpec": { - "description": "Pack object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", + "containerName": { "type": "string" }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "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" + } + } }, - "annotations": { - "additionalProperties": { - "type": "string" - }, - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object" + "enablePrivateCluster": { + "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster", + "type": "boolean" }, - "cloudTypes": { - "description": "Pack supported cloud types", - "items": { - "type": "string" - }, - "type": "array" + "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" + ] + } + } + } + } }, - "digest": { - "description": "Pack digest", + "location": { + "description": "Location is the Azure datacenter location", "type": "string" }, - "displayName": { - "description": "Pack display name", + "resourceGroup": { "type": "string" }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", + "sshKey": { "type": "string" }, - "group": { - "description": "Pack group", + "storageAccountName": { "type": "string" }, - "layer": { - "$ref": "#/definitions/v1PackLayer" - }, - "logoUrl": { - "description": "Pack logo url", + "subscriptionId": { + "description": "Subscription ID is unique identifier for the subscription used to access Azure services", "type": "string" }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "items": { - "$ref": "#/definitions/v1ObjectReference" - }, - "type": "array" - }, - "name": { - "description": "Pack name", + "vnetCidrBlock": { "type": "string" }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "items": { - "$ref": "#/definitions/v1PackPreset" - }, - "type": "array" - }, - "registryUid": { - "description": "Pack registry uid", + "vnetName": { + "description": "VNETName is the virtual network in which the cluster is to be provisioned.", "type": "string" }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "items": { - "$ref": "#/definitions/v1PackSchema" - }, - "type": "array" - }, - "template": { - "$ref": "#/definitions/v1PackTemplate" - }, - "type": { - "$ref": "#/definitions/v1PackType" - }, - "values": { - "description": "Pack values", + "vnetResourceGroup": { "type": "string" }, - "version": { - "description": "Pack version", - "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": "object" - }, - "v1PackSummaryStatus": { - "description": "Pack status", - "type": "object" + } }, - "v1PackTagEntity": { - "description": "Pack object", + "v1AzureGroup": { + "description": "Azure group entity", + "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", - "items": { - "type": "string" - }, - "type": "array" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "layer": { - "$ref": "#/definitions/v1PackLayer" - }, - "logoUrl": { - "description": "Pack logo url", + "id": { + "description": "Azure group id", "type": "string" }, "name": { - "description": "Pack name", - "type": "string" - }, - "packValues": { - "description": "Pack values array", - "items": { - "$ref": "#/definitions/v1PackUidValues" - }, - "type": "array" - }, - "registryUid": { - "description": "Pack registry uid", + "description": "Azure group name", "type": "string" - }, - "tags": { - "description": "Pack version tags array", + } + } + }, + "v1AzureGroups": { + "description": "List of Azure groups", + "type": "object", + "required": [ + "groups" + ], + "properties": { + "groups": { + "type": "array", "items": { - "$ref": "#/definitions/v1PackTags" - }, - "type": "array" + "description": "Azure group entity", + "type": "object", + "properties": { + "id": { + "description": "Azure group id", + "type": "string" + }, + "name": { + "description": "Azure group name", + "type": "string" + } + } + } } - }, - "type": "object" + } }, - "v1PackTags": { + "v1AzureImage": { + "description": "Refers to Azure Shared Gallery image", + "type": "object", "properties": { - "group": { - "description": "Pack group", + "gallery": { "type": "string" }, - "packUid": { - "description": "Pack uid", + "name": { "type": "string" }, - "parentTags": { - "description": "Pack version parent tags", - "items": { - "type": "string" - }, - "type": "array" + "resourceGroup": { + "type": "string" }, - "tag": { - "description": "Pack version tag", + "state": { + "type": "string" + }, + "subscriptionID": { "type": "string" }, "version": { - "description": "Pack version", "type": "string" } - }, - "type": "object" + } }, - "v1PackTemplate": { - "description": "Pack template configuration", + "v1AzureInstanceTypes": { + "description": "List of Azure instance types", + "type": "object", "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "$ref": "#/definitions/v1PackTemplateParameters" - }, - "values": { - "description": "Pack template values", - "type": "string" + "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" + } + } + } } } }, - "v1PackTemplateParameter": { - "description": "Pack template parameter", + "v1AzureMachine": { + "description": "Azure cloud VM definition", + "type": "object", "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "Pack template parameter name", + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "additionalProperties": { - "$ref": "#/definitions/v1PackTemplateParameterOption", - "type": "object" - }, - "description": "Pack template parameter options array", - "type": "object" - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", + "kind": { + "description": "Deprecated. Cloud type of the machine.", "type": "string" }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "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" + } + } }, - "type": { - "description": "Pack template parameter data type", - "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" + } + } }, - "value": { - "description": "Pack template parameter value", - "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" + } + } + } + } } } }, - "v1PackTemplateParameterOption": { - "description": "Pack template parameter option", + "v1AzureMachinePoolCloudConfigEntity": { + "type": "object", "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", + "azs": { + "type": "array", "items": { - "$ref": "#/definitions/v1PackDependency" - }, - "type": "array" + "type": "string" + } }, - "description": { - "description": "Pack template parameter description", + "instanceType": { + "description": "Instance type stands for VMSize in Azure", "type": "string" }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - }, - "type": "object" - }, - "v1PackTemplateParameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "items": { - "$ref": "#/definitions/v1PackTemplateParameter" - }, - "type": "array" + "isSystemNodePool": { + "description": "whether this pool is for system node Pool", + "type": "boolean" }, - "outputParameters": { - "description": "Pack template output parameters array", - "items": { - "$ref": "#/definitions/v1PackTemplateParameter" - }, - "type": "array" + "osDisk": { + "type": "object", + "properties": { + "diskSizeGB": { + "type": "integer", + "format": "int32" + }, + "managedDisk": { + "type": "object", + "properties": { + "storageAccountType": { + "type": "string" + } + } + }, + "osType": { + "type": "string", + "default": "Linux", + "enum": [ + "Linux", + "Windows" + ] + } + } } } }, - "v1PackType": { - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ], - "type": "string" - }, - "v1PackUidValues": { + "v1AzureMachinePoolConfig": { + "type": "object", + "required": [ + "isControlPlane" + ], "properties": { - "annotations": { + "additionalLabels": { + "description": "additionalLabels", + "type": "object", "additionalProperties": { "type": "string" - }, - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object" + } }, - "dependencies": { - "description": "Pack dependencies array", + "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": { - "$ref": "#/definitions/v1PackDependencyMeta" - }, - "type": "array" + "type": "string" + } }, - "packUid": { - "description": "Pack uid", + "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" }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "items": { - "$ref": "#/definitions/v1PackPreset" - }, - "type": "array" + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false }, - "readme": { - "description": "Readme describes the documentation of the specified pack", - "type": "string" + "isSystemNodePool": { + "description": "whether this pool is for system node Pool", + "type": "boolean", + "x-omitempty": false }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "type": "array", "items": { - "$ref": "#/definitions/v1PackSchema" - }, - "type": "array" + "type": "string" + } }, - "template": { - "$ref": "#/definitions/v1PackTemplate" + "machinePoolProperties": { + "description": "Machine pool specific properties", + "type": "object", + "properties": { + "archType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] + } + } }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters", - "type": "string" - } - }, - "type": "object" - }, - "v1PackUpdateEntity": { - "description": "Pack update request payload", - "properties": { - "pack": { - "$ref": "#/definitions/v1PackEntity" - } - } - }, - "v1PackValuesEntity": { - "description": "Pack values entity to refer the existing pack for the values override", - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "items": { - "$ref": "#/definitions/v1ManifestRefUpdateEntity" - }, - "type": "array" + "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": { - "description": "Pack name", "type": "string" }, - "tag": { - "description": "Pack version tag", - "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" }, - "type": { - "$ref": "#/definitions/v1PackType" + "osDisk": { + "type": "object", + "properties": { + "diskSizeGB": { + "type": "integer", + "format": "int32" + }, + "managedDisk": { + "type": "object", + "properties": { + "storageAccountType": { + "type": "string" + } + } + }, + "osType": { + "type": "string", + "default": "Linux", + "enum": [ + "Linux", + "Windows" + ] + } + } }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "v1PacksFilterSpec": { - "description": "Packs filter spec", - "properties": { - "filter": { - "$ref": "#/definitions/v1PackFilterSpec" + "osType": { + "type": "string", + "default": "Linux", + "enum": [ + "Linux", + "Windows" + ] }, - "sort": { - "items": { - "$ref": "#/definitions/v1PackSortSpec" - }, - "type": "array", - "uniqueItems": true - } - } - }, - "v1PairingCode": { - "description": "Pairing code response", - "properties": { - "pairingCode": { - "type": "string" - } - }, - "type": "object" - }, - "v1Partition": { - "properties": { - "fileSystemType": { - "type": "string" + "size": { + "description": "size of the pool, number of machines", + "type": "integer", + "format": "int32" }, - "freeSpace": { - "format": "int32", - "type": "integer" + "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" + } + } }, - "mountPoint": { - "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" + } + } + } }, - "totalSpace": { - "format": "int32", - "type": "integer" + "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" + ] + } + } }, - "usedSpace": { - "format": "int32", - "type": "integer" + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean", + "x-omitempty": false } - }, - "type": "object" + } }, - "v1PaymentIntent": { - "description": "Payment setup object", + "v1AzureMachinePoolConfigEntity": { + "type": "object", + "required": [ + "cloudConfig" + ], "properties": { - "clientSecret": { - "description": "Payment client secret", - "type": "string" + "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" + ] + } + } + } + } }, - "paymentIntentId": { - "description": "Payment intent id", - "type": "string" + "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" + ] + } + } }, - "status": { - "description": "Status of payment intent", - "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 + } + } } } }, - "v1PaymentMethod": { - "description": "Payment method object", + "v1AzureMachineSpec": { + "description": "Azure cloud VM definition spec", + "type": "object", + "required": [ + "instanceType", + "location", + "osDisk" + ], "properties": { - "card": { - "$ref": "#/definitions/v1Card" + "additionalTags": { + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "customerId": { - "description": "Customer uid", - "type": "string" + "allocatePublicIP": { + "type": "boolean" }, - "firstName": { - "description": "First name of the user", + "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" }, - "lastName": { - "description": "Last name of the user", + "location": { "type": "string" }, - "paymentMethodId": { - "description": "Payment method uid", + "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" } } }, - "v1PaymentMethods": { - "description": "Payment Method list", + "v1AzureMachineSpecAvailabilityZone": { + "description": "Azure Machine Spec Availability zone", + "type": "object", "properties": { - "defaultPaymentMethod": { - "description": "Default payment method", - "type": "string" + "enabled": { + "type": "boolean" }, - "paymentMethods": { - "description": "List of payment method", - "items": { - "$ref": "#/definitions/v1PaymentMethod" - }, - "type": "array", - "uniqueItems": true + "id": { + "type": "string" } } }, - "v1PaymentPlan": { - "description": "Stripe price detail object", + "v1AzureMachineSpecImage": { + "description": "Azure Machine Spec Image", + "type": "object", "properties": { - "billingScheme": { - "description": "Billing scheme", - "type": "string" - }, - "currency": { - "description": "Unit of currency", + "gallery": { "type": "string" }, "id": { - "description": "Stripe payment plan id", "type": "string" }, "name": { - "description": "Name of the stripe plan", "type": "string" }, - "productId": { - "description": "Product identifier", + "offer": { "type": "string" }, - "type": { - "description": "Type of payment plan", + "publisher": { "type": "string" }, - "unitAmount": { - "description": "Unit amount for the product", - "format": "int64", - "type": "number" + "resourceGroup": { + "type": "string" + }, + "sku": { + "type": "string" + }, + "subscriptionId": { + "type": "string" + }, + "version": { + "type": "string" } } }, - "v1PaymentPlans": { - "description": "Payment plan object model", + "v1AzureMachines": { + "description": "Azure machine list", + "type": "object", + "required": [ + "items" + ], "properties": { - "stripePlanDetails": { - "description": "List of Stripe plan details", - "items": { - "$ref": "#/definitions/v1PaymentPlan" - }, + "items": { "type": "array", - "uniqueItems": true + "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 + } + } } - }, - "required": [ - "stripePlanDetails" - ], - "type": "object" + } }, - "v1PaymentSecrets": { - "description": "payment secrets", + "v1AzureManagedMachinePoolConfig": { + "type": "object", "properties": { - "publishableKey": { - "type": "string" + "isSystemNodePool": { + "description": "whether this pool is for system node Pool", + "type": "boolean", + "x-omitempty": false }, - "secretKey": { - "type": "string" + "osType": { + "type": "string", + "default": "Linux", + "enum": [ + "Linux", + "Windows" + ] } } }, - "v1PaymentSubscription": { - "description": "Payment subscription object", + "v1AzureNic": { + "description": "AWS network interface", + "type": "object", "properties": { - "customerId": { - "description": "Customer uid", - "type": "string" - }, - "paymentIntent": { - "$ref": "#/definitions/v1PaymentIntent", - "description": "Payment intent" + "index": { + "type": "integer", + "format": "int8" }, - "paymentMethodIds": { - "description": "List of payment method uids", + "privateIPs": { + "type": "array", "items": { "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "planType": { - "description": "Plan type", - "type": "string" + } }, - "priceId": { - "description": "Price uid", + "publicIp": { "type": "string" + } + } + }, + "v1AzureOSDisk": { + "type": "object", + "properties": { + "diskSizeGB": { + "type": "integer", + "format": "int32" }, - "subscriptionId": { - "description": "Subscription uid", - "type": "string" + "managedDisk": { + "type": "object", + "properties": { + "storageAccountType": { + "type": "string" + } + } }, - "subscriptionState": { - "description": "Plan subscription state", - "type": "string" + "osType": { + "type": "string", + "default": "Linux", + "enum": [ + "Linux", + "Windows" + ] } } }, - "v1PcgSelfHostedParams": { + "v1AzurePrivateDnsZone": { + "description": "Azure Private DNS zone entity", + "type": "object", "properties": { - "cloudType": { + "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" } } }, - "v1PcgServiceKubectlCommands": { - "description": "Array of kubectl commands", + "v1AzurePrivateDnsZones": { + "description": "List of Azure storage accounts", + "type": "object", "properties": { - "kubectlCommands": { - "items": { - "type": "string" - }, + "privateDnsZones": { "type": "array", - "uniqueItems": true - }, - "overlordUid": { - "type": "string" - } - }, - "required": [ - "kubectlCommands" - ], - "type": "object" - }, - "v1PcgsSummary": { - "properties": { - "items": { "items": { - "$ref": "#/definitions/v1Overlord" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "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" + } + } + } } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1Permission": { - "description": "Permission information", + "v1AzureRegion": { + "description": "Azure region entity", + "type": "object", "properties": { + "displayName": { + "description": "Azure region displayname", + "type": "string" + }, "name": { + "description": "Azure region name", "type": "string" }, - "permissions": { + "zones": { + "description": "List of zones associated to a particular Azure region", + "type": "array", "items": { - "type": "string" - }, - "type": "array" - }, - "scope": { - "$ref": "#/definitions/v1Scope" + "description": "Azure availability zone", + "type": "object", + "properties": { + "name": { + "description": "Azure availability zone name", + "type": "string" + } + } + } } - }, - "type": "object" + } }, - "v1Permissions": { - "description": "Array of permissions", - "items": { - "$ref": "#/definitions/v1Permission" - }, - "type": "array" + "v1AzureRegions": { + "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" + } + } + } + } + } + } + } + } }, - "v1Plan": { - "description": "Plan", + "v1AzureResourceGroupList": { + "description": "List of Azure resource group", + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1PlanSpec" - }, - "status": { - "$ref": "#/definitions/v1PlanStatus" + "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" + } + } + } } } }, - "v1PlanAddFreeCreditUpdate": { - "description": "Plan add free credit update entity", + "v1AzureStorageAccountEntity": { + "description": "Azure Storage Account Entity", + "type": "object", "properties": { - "credit": { - "$ref": "#/definitions/v1PlanCreditEntity" + "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" + } + } + } } } }, - "v1PlanAddSlaCreditUpdate": { - "description": "Plan add sla credit update entity", + "v1AzureStorageAccounts": { + "description": "List of Azure storage accounts", + "type": "object", "properties": { - "credit": { - "$ref": "#/definitions/v1PlanCreditEntity" + "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" + } + } + } } } }, - "v1PlanChangeUpdate": { - "description": "Plan change update entity", + "v1AzureStorageConfig": { + "description": "Azure storage config object", + "type": "object", + "required": [ + "resourceGroup", + "containerName", + "storageName", + "credentials" + ], "properties": { - "expiry": { - "$ref": "#/definitions/v1Time", - "description": "plan expiry time" - }, - "isPaymentGateway": { - "type": "boolean" + "containerName": { + "description": "Azure container name", + "type": "string" }, - "planLimit": { - "$ref": "#/definitions/v1PlanLimit" + "credentials": { + "type": "object", + "properties": { + "clientCloud": { + "description": "Contains configuration for Azure cloud", + "type": "string", + "default": "public", + "enum": [ + "azure-china", + "azure-government", + "public" + ] + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "subscriptionId": { + "type": "string" + }, + "tenantId": { + "type": "string" + } + } }, - "start": { - "$ref": "#/definitions/v1Time", - "description": "plan start time" + "resourceGroup": { + "description": "Azure resource group name, to which the storage account is mapped", + "type": "string" }, - "tierPrice": { - "$ref": "#/definitions/v1TierPrice" + "sku": { + "description": "Azure sku", + "type": "string" }, - "type": { - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ], + "storageName": { + "description": "Azure storage name", "type": "string" } - }, - "required": [ - "type", - "start", - "expiry" - ] + } }, - "v1PlanCost": { - "description": "Plan Cost", + "v1AzureStorageContainers": { + "description": "List of Azure storage containers", + "type": "object", "properties": { - "discount": { - "format": "float", - "type": "number", - "x-omitempty": false - }, - "price": { - "format": "float", - "type": "number", - "x-omitempty": false + "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" + } + } + } } } }, - "v1PlanCpuCoreHoursUsages": { + "v1AzureStorageTypes": { + "description": "List of Azure storage types", + "type": "object", "properties": { - "hourlyUsages": { + "storageTypes": { + "type": "array", "items": { - "$ref": "#/definitions/v1ResourceUsage" - }, + "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" + } + } + } + } + } + } + } + } + } + } + }, + "v1AzureSubscriptionList": { + "description": "List of Azure subscription", + "type": "object", + "properties": { + "subscriptionList": { "type": "array", - "uniqueItems": true + "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" + } + } + } } - }, - "type": "object" + } }, - "v1PlanCredit": { - "description": "Plan Credit", + "v1AzureVHDImage": { + "description": "Mold always create VHD image for custom image, and this can be use as golden images", + "type": "object", "properties": { - "cpuCoreHours": { - "format": "int64", - "type": "number", - "x-omitempty": false - }, - "creditUid": { + "id": { "type": "string" }, - "expiry": { - "$ref": "#/definitions/v1Time", - "description": "credit expiry time" - }, "name": { "type": "string" }, - "start": { - "$ref": "#/definitions/v1Time", - "description": "credit start time" + "os": { + "type": "string" }, - "type": { - "enum": [ - "Pure", - "Alloy" - ], + "region": { + "type": "string" + }, + "state": { "type": "string" } - }, - "required": [ - "type" - ] + } }, - "v1PlanCreditEntity": { - "description": "Plan Credit entity for create/update request", + "v1AzureVhdUrlEntity": { + "description": "Azure vhd url entity", + "type": "object", "properties": { - "cpuCoreHours": { - "format": "int64", - "type": "number", - "x-omitempty": false - }, - "expiry": { - "$ref": "#/definitions/v1Time" - }, "name": { + "description": "The name of the resource", "type": "string" }, - "start": { - "$ref": "#/definitions/v1Time" - }, - "type": { - "enum": [ - "Pure", - "Alloy" - ], + "url": { + "description": "The url of the Azure Vhd", "type": "string" } - }, - "required": [ - "type" - ] + } }, - "v1PlanCreditUpdate": { - "description": "Plan credit update entity", + "v1AzureVirtualNetworkList": { + "description": "List of Azure virtual network", + "type": "object", "properties": { - "credit": { - "$ref": "#/definitions/v1PlanCreditEntity" + "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" + } + } + } } } }, - "v1PlanExpiry": { - "description": "Plan expiry", + "v1AzureZoneEntity": { + "description": "List of Azure zone", + "type": "object", "properties": { - "expiry": { - "$ref": "#/definitions/v1Time", - "description": "plan expiry time" + "zoneList": { + "type": "array", + "items": { + "description": "Azure availability zone entity", + "type": "object", + "properties": { + "id": { + "description": "Azure availability zone id", + "type": "string" + } + } + } } - }, - "required": [ - "expiry" - ] + } }, - "v1PlanLimit": { - "description": "Monthly Plan Limit", + "v1BackupLocationConfig": { + "description": "Backup location configuration", "properties": { - "alloy": { - "$ref": "#/definitions/v1PlanLimitSpec" - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false + "name": { + "type": "string" }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false + "type": { + "type": "string" }, - "pure": { - "$ref": "#/definitions/v1PlanLimitSpec" + "uid": { + "type": "string" } } }, - "v1PlanLimitSpec": { - "description": "Monthly Plan Limit spec", + "v1BackupRestoreStatusMeta": { + "description": "Backup restored status", "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "format": "int64", - "type": "integer", - "x-omitempty": false - }, - "overageLimitPercentage": { - "default": 25, - "description": "overage limit in percentage", - "format": "int8", - "type": "integer", - "x-omitempty": false + "backupName": { + "type": "string" }, - "warnLimitPercentage": { - "default": 90, - "description": "warning limit in percentage", - "format": "int8", - "type": "integer", - "x-omitempty": false + "destinationClusterRef": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "restoreState": { + "type": "string" } } }, - "v1PlanLimitUpdate": { - "description": "Plan limit change update entity", - "properties": { - "planLimit": { - "$ref": "#/definitions/v1PlanLimit" - } - }, - "required": [ - "planLimit" - ] - }, - "v1PlanMonthlyUsage": { - "description": "Plan monthly usage entity", + "v1BackupState": { + "description": "Backup state", "properties": { - "dailyUsages": { - "items": { - "$ref": "#/definitions/v1ResourceUsage" - }, - "type": "array", - "uniqueItems": true - }, - "month": { - "$ref": "#/definitions/v1Time", - "description": "usage month" - }, - "planLimit": { - "$ref": "#/definitions/v1PlanLimit" + "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" }, - "planType": { - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ], + "deleteState": { "type": "string" }, - "planUid": { + "msg": { "type": "string" }, - "totalMonthlyUsage": { - "$ref": "#/definitions/v1TotalResourceUsage" + "state": { + "type": "string" } } }, - "v1PlanMonthlyUsages": { + "v1BackupStatusConfig": { + "description": "Backup config", "properties": { - "items": { + "includeAllDisks": { + "type": "boolean" + }, + "includeClusterResources": { + "type": "boolean" + }, + "namespaces": { + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1PlanMonthlyUsage" - }, - "type": "array" + "type": "string" + } } - }, - "type": "object" + } }, - "v1PlanRenewal": { - "description": "Plan Renewal", + "v1BackupStatusMeta": { + "description": "Backup status meta", "properties": { - "expiry": { - "$ref": "#/definitions/v1Time", - "description": "credit expiry time" + "backupName": { + "type": "string" }, - "planLimit": { - "$ref": "#/definitions/v1PlanLimit" + "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" + } + } }, - "start": { - "$ref": "#/definitions/v1Time", - "description": "credit start time" + "backupedNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } }, - "type": { - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ], - "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" } - }, - "required": [ - "type", - "start", - "expiry" - ] + } }, - "v1PlanRenewalUpdate": { - "description": "Plan add renawal update entity", + "v1BasicOciRegistry": { + "description": "Basic oci registry information", + "type": "object", "properties": { - "renewal": { - "$ref": "#/definitions/v1PlanRenewal" + "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" + } + } } } }, - "v1PlanSpec": { - "description": "Plan specifications", + "v1BasicOciRegistrySpec": { + "description": "Basic oci registry spec", + "type": "object", + "required": [ + "endpoint", + "auth" + ], "properties": { - "cost": { - "$ref": "#/definitions/v1PlanCost" - }, - "developerCredits": { - "$ref": "#/definitions/v1DeveloperCredit" - }, - "expiry": { - "$ref": "#/definitions/v1Time", - "description": "plan expiry time" - }, - "freeCredits": { - "items": { - "$ref": "#/definitions/v1PlanCredit" - }, - "type": "array" + "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" + } + } }, - "planLimit": { - "$ref": "#/definitions/v1PlanLimit" + "baseContentPath": { + "description": "OCI registry content base path", + "type": "string" }, - "renewal": { - "$ref": "#/definitions/v1PlanRenewal" + "basePath": { + "description": "OCI registry api base path", + "type": "string" }, - "slaCredits": { - "items": { - "$ref": "#/definitions/v1PlanCredit" - }, - "type": "array" + "endpoint": { + "description": "OCI registry endpoint", + "type": "string" }, - "start": { - "$ref": "#/definitions/v1Time", - "description": "plan start time" + "providerType": { + "type": "string", + "default": "helm", + "enum": [ + "helm", + "zarf", + "pack" + ] }, - "tierPricing": { - "$ref": "#/definitions/v1TierPrice" + "registryUid": { + "description": "Basic oci registry uid", + "type": "string" }, - "type": { - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ], + "scope": { "type": "string" } - }, - "required": [ - "type", - "start", - "expiry" - ] - }, - "v1PlanStatus": { - "properties": { - "changeLogs": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" + } }, - "v1Plans": { - "description": "Array of Plans", + "v1Billing": { + "description": "billing preference", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1Plan" - }, - "type": "array", - "uniqueItems": true + "billingDay": { + "type": "integer" }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "tierPricing": { + "description": "tier price", + "properties": { + "alloyPricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } + } + }, + "purePricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } + } + } + } } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1PlansUsageComputeSpec": { - "description": "Plans usage compute spec", + "v1BrokerLogin": { + "description": "Request for broker login request", + "type": "object", "properties": { - "startTime": { - "$ref": "#/definitions/v1Time" - }, - "tenantUids": { + "subscriberSubjects": { + "description": "subjects that client need to subscribe", + "type": "array", "items": { "type": "string" - }, - "type": "array", - "uniqueItems": true + } } - }, - "type": "object" + } }, - "v1PodAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", + "v1BrokerToken": { + "description": "Response for broker login request", + "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.", + "msgCtxData": { + "description": "message context data can be used as contextual information for the message exchange", + "additionalProperties": { + "type": "string" + } + }, + "publisherSubjects": { + "description": "subjects that client can publish", + "type": "array", "items": { - "$ref": "#/definitions/v1VmWeightedPodAffinityTerm" - }, - "type": "array" + "type": "string" + } }, - "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.", + "subscriberSubjects": { + "description": "subjects that client has subscribed", + "type": "array", "items": { - "$ref": "#/definitions/v1VmPodAffinityTerm" - }, - "type": "array" + "type": "string" + } } - }, - "type": "object" + } }, - "v1Pool": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", + "v1BulkDeleteFailure": { "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", + "errMsg": { "type": "string" }, - "nameserver": { - "$ref": "#/definitions/v1Nameserver", - "description": "Nameserver provide information for dns resolvation" - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "format": "int32", - "type": "integer" - }, - "start": { - "description": "Start is the first ip address that can be rendered", + "name": { "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`)", + "uid": { "type": "string" } - }, - "type": "object" + } }, - "v1PriceRange": { - "description": "tier price range", + "v1BulkDeleteRequest": { + "required": [ + "uids" + ], "properties": { - "discount": { - "format": "int64", - "type": "number" - }, - "startFrom": { - "format": "float64", - "type": "number" - }, - "unitAmount": { - "format": "float64", - "type": "number" - }, - "upTo": { - "format": "float64", - "type": "number" - }, - "upToInfinity": { - "type": "boolean" + "uids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } } } }, - "v1PrivateCloudRateConfig": { - "description": "Private cloud rate config", + "v1BulkDeleteResponse": { "properties": { - "cpuUnitPricePerHour": { - "format": "float64", - "type": "number" + "deletedCount": { + "type": "integer", + "x-omitempty": false }, - "gpuUnitPricePerHour": { - "format": "float64", - "type": "number" + "failures": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "errMsg": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "x-omitempty": false }, - "memoryUnitPriceGiBPerHour": { - "format": "float64", - "type": "number" + "isSucceeded": { + "type": "boolean", + "x-omitempty": false }, - "storageUnitPriceGiBPerHour": { - "format": "float64", - "type": "number" + "message": { + "type": "string", + "x-omitempty": false } } }, - "v1ProductUsage": { - "description": "Product usage", - "properties": { - "alloyUsage": { - "$ref": "#/definitions/v1SystemProductUsage" - }, - "pureUsage": { - "$ref": "#/definitions/v1SystemProductUsage" + "v1BulkEvents": { + "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" + } + } + } } } }, - "v1ProfileMetaEntity": { - "description": "Cluster profile metadata request payload", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" - }, - "spec": { - "$ref": "#/definitions/v1ClusterProfileSpecEntity" - } - }, - "required": [ - "metadata" - ], - "type": "object" - }, - "v1ProfileResolvedValues": { - "description": "Cluster profile resolved pack values", + "v1CPU": { + "type": "object", "properties": { - "resolved": { - "additionalProperties": { - "type": "string" - }, - "description": "Cluster profile pack resolved values", - "type": "object" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" + "cores": { + "description": "number of cpu cores", + "type": "integer", + "format": "int32" } } }, - "v1ProfileStatus": { + "v1CPUPassthroughSpec": { + "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 + "cachePassthrough": { + "type": "boolean" + }, + "isEnabled": { + "description": "Enables the CPU Passthrough for the libvirt domain", + "type": "boolean" } - }, - "type": "object" + } }, - "v1ProfileTemplateSummary": { - "description": "Edge host clusterprofile template summary", + "v1Card": { + "description": "Card details object", "properties": { - "cloudType": { + "brand": { + "description": "Card brand", "type": "string" }, - "name": { + "country": { + "description": "Country name the card belongs", "type": "string" }, - "packs": { - "items": { - "$ref": "#/definitions/v1PackRefSummary" - }, - "type": "array" + "expMonth": { + "description": "Expiry month of the card", + "type": "number", + "format": "uint64" }, - "type": { + "expYear": { + "description": "Expiry year of the card", + "type": "number", + "format": "uint64" + }, + "fingerPrint": { + "description": "Finger print", "type": "string" }, - "uid": { + "funding": { + "description": "Funding", "type": "string" }, - "version": { + "last4": { + "description": "Last 4 digit of the card", "type": "string" } - }, - "type": "object" - }, - "v1ProfileType": { - "default": "cluster", - "enum": [ - "cluster", - "infra", - "add-on", - "system" - ], - "type": "string" + } }, - "v1Project": { - "description": "Project information", + "v1Cert": { + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "certificate": { + "type": "string", + "x-omitempty": false }, - "spec": { - "$ref": "#/definitions/v1ProjectSpec" + "isCA": { + "type": "boolean", + "x-omitempty": false }, - "status": { - "$ref": "#/definitions/v1ProjectStatus" + "key": { + "type": "string", + "x-omitempty": false } - }, - "type": "object" + } }, - "v1ProjectActiveAppDeployment": { - "description": "Active app deployment", + "v1Certificate": { + "description": "Certificate details", + "type": "object", "properties": { - "appRef": { - "$ref": "#/definitions/v1ObjectEntity" + "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" }, - "state": { + "name": { "type": "string" } - }, - "type": "object" + } }, - "v1ProjectActiveAppDeployments": { - "description": "Active app deployment", + "v1CertificateAuthority": { + "description": "Certificate Authority", + "type": "object", "properties": { - "apps": { + "certificates": { + "type": "array", "items": { - "$ref": "#/definitions/v1ProjectActiveAppDeployment" - }, - "type": "array" + "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" + } + } + } }, - "count": { - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "v1ProjectActiveCluster": { - "description": "Active clusters", - "properties": { - "clusterRef": { - "$ref": "#/definitions/v1ObjectEntity" + "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" }, - "state": { + "name": { "type": "string" } - }, - "type": "object" - }, - "v1ProjectActiveClusters": { - "description": "Active clusters", - "properties": { - "clusters": { - "items": { - "$ref": "#/definitions/v1ProjectActiveCluster" - }, - "type": "array" - }, - "count": { - "format": "int32", - "type": "integer" - } - }, - "type": "object" + } }, - "v1ProjectActiveResources": { - "description": "Active project resources", + "v1Channel": { + "type": "object", "properties": { - "appDeployments": { - "$ref": "#/definitions/v1ProjectActiveAppDeployments" - }, - "clusters": { - "$ref": "#/definitions/v1ProjectActiveClusters" + "alertAllUsers": { + "type": "boolean", + "x-omitempty": false }, - "virtualClusters": { - "$ref": "#/definitions/v1ProjectActiveClusters" - } - }, - "type": "object" - }, - "v1ProjectAlertComponent": { - "description": "Project alert component", - "properties": { - "description": { + "createdBy": { "type": "string" }, - "name": { - "type": "string" + "http": { + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "headers": { + "additionalProperties": { + "type": "string" + } + }, + "method": { + "type": "string" + }, + "url": { + "type": "string" + } + } }, - "supportedChannels": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1ProjectAlertComponents": { - "description": "Supported project alerts component", - "properties": { - "components": { - "items": { - "$ref": "#/definitions/v1ProjectAlertComponent" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1ProjectCleanUpStatus": { - "description": "Project cleanup status", - "properties": { - "cleanedResources": { + "identifiers": { + "type": "array", + "uniqueItems": true, "items": { "type": "string" - }, - "type": "array" + } }, - "msg": { - "type": "string" + "isActive": { + "type": "boolean", + "x-omitempty": false }, - "state": { - "type": "string" - } - }, - "type": "object" - }, - "v1ProjectCleanup": { - "description": "Project delete request payload", - "properties": { - "deletingClusterDurationThresholdInMin": { - "format": "int32", - "type": "integer" + "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" + } + } }, - "provisioningClusterDurationThresholdInMin": { - "format": "int32", - "type": "integer" + "type": { + "type": "string", + "enum": [ + "email", + "app", + "http" + ] + }, + "uid": { + "type": "string" } } }, - "v1ProjectClusterSettings": { + "v1CleanUpResource": { + "description": "Resources of tenant", + "type": "object", "properties": { - "nodesAutoRemediationSetting": { - "$ref": "#/definitions/v1NodesAutoRemediationSettings" + "activeResources": { + "description": "Active resources of tenant", + "type": "object", + "properties": { + "activeResources": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + } + } }, - "tenantClusterSettings": { - "$ref": "#/definitions/v1TenantClusterSettings" + "tenantStatus": { + "description": "Tenant CleanUp Status", + "type": "object", + "properties": { + "cleanUpError": { + "type": "string" + }, + "cleanUpStages": { + "type": "string" + }, + "cleanUpTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "cleanedResources": { + "type": "array", + "items": { + "type": "string" + } + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "isInProgress": { + "type": "boolean", + "x-omitempty": false + } + } } } }, - "v1ProjectEntity": { - "description": "Project information", + "v1CloudAccountMeta": { + "description": "Cloud account meta information", + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "name": { + "type": "string" }, - "spec": { - "$ref": "#/definitions/v1ProjectEntitySpec" + "uid": { + "type": "string" } - }, - "type": "object" + } }, - "v1ProjectEntitySpec": { - "description": "Project specifications", + "v1CloudAccountMetadata": { + "description": "Cloud account metadata summary", "properties": { - "logoUid": { + "kind": { "type": "string" }, - "teams": { - "items": { - "$ref": "#/definitions/v1TeamRoleMap" - }, - "type": "array", - "uniqueItems": true - }, - "users": { - "items": { - "$ref": "#/definitions/v1UserRoleMap" - }, - "type": "array", - "uniqueItems": true + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } } } }, - "v1ProjectFilterSortFields": { - "enum": [ - "name", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "type": "string", - "x-nullable": true - }, - "v1ProjectFilterSortSpec": { + "v1CloudAccountSettings": { + "description": "Cloud account settings", + "type": "object", "properties": { - "field": { - "$ref": "#/definitions/v1ProjectFilterSortFields" - }, - "order": { - "$ref": "#/definitions/v1SortOrder" + "disablePropertiesRequest": { + "description": "Will disable certain properties request to cloud and the input is collected directly from the user", + "type": "boolean", + "x-omitempty": false } } }, - "v1ProjectFilterSpec": { - "description": "Project filter spec", + "v1CloudAccountStatus": { + "description": "Status of the account", + "type": "object", "properties": { - "name": { - "$ref": "#/definitions/v1FilterString" + "state": { + "description": "Cloud account status", + "type": "string" } } }, - "v1ProjectMeta": { + "v1CloudAccountSummary": { + "description": "Cloud account summary", + "type": "object", "properties": { - "name": { + "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" + } + } + } + } + }, + "v1CloudAccountUidEntity": { + "description": "Cloud account uid entity", + "type": "object", + "properties": { "uid": { + "description": "Cloud account uid", "type": "string" } - }, - "type": "object" + } }, - "v1ProjectMetadata": { - "description": "Project metadata", + "v1CloudAccountsMetadata": { + "type": "object", + "required": [ + "items" + ], "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectEntity" + "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" + } + } + } + } + } } } }, - "v1ProjectPatch": { + "v1CloudAccountsPatch": { + "type": "array", "items": { - "$ref": "#/definitions/v1HttpPatch" - }, - "type": "array" - }, - "v1ProjectResourceUsage": { - "description": "project resource usage", - "properties": { - "alloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "project": { - "$ref": "#/definitions/v1ProjectMeta" - }, - "pureCpuCoreHours": { - "type": "number", - "x-omitempty": false + "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" + } } } }, - "v1ProjectRolesEntity": { + "v1CloudAccountsSummary": { + "type": "object", + "required": [ + "items" + ], "properties": { - "projects": { + "items": { + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1UidRoleSummary" - }, - "type": "array" + "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" + } + }, + "v1CloudCategory": { + "description": "Cloud category description", + "type": "string", + "default": "cloud", + "enum": [ + "datacenter", + "cloud", + "edge" + ] }, - "v1ProjectRolesPatch": { + "v1CloudConfigMeta": { + "type": "object", "properties": { - "projects": { + "cloudType": { + "type": "string" + }, + "machinePools": { + "description": "Machine pool meta information", + "type": "array", "items": { + "type": "object", "properties": { - "projectUid": { + "cloudType": { "type": "string" }, - "roles": { + "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" - }, - "type": "array" + } + }, + "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 } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1ProjectSpec": { - "description": "Project specifications", - "properties": { - "alerts": { - "items": { - "$ref": "#/definitions/v1Alert" - }, - "type": "array", - "uniqueItems": true + } + } }, - "logoUrl": { + "uid": { + "description": "Cluster's cloud config uid", "type": "string" - }, - "teams": { - "items": { - "$ref": "#/definitions/v1TeamRoleMap" - }, - "type": "array", - "uniqueItems": true - }, - "users": { - "items": { - "$ref": "#/definitions/v1UserRoleMap" - }, - "type": "array", - "uniqueItems": true } } }, - "v1ProjectSpecSummary": { + "v1CloudCost": { + "description": "Cloud cost information", + "type": "object", "properties": { - "logoUrl": { - "type": "string" - }, - "teams": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" + "compute": { + "type": "number", + "format": "float64", + "x-omitempty": false }, - "users": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1ProjectStatus": { - "description": "Project status", - "properties": { - "cleanUpStatus": { - "$ref": "#/definitions/v1ProjectCleanUpStatus" + "storage": { + "type": "number", + "format": "float64", + "x-omitempty": false }, - "isDisabled": { - "type": "boolean" + "total": { + "type": "number", + "format": "float64", + "x-omitempty": false } } }, - "v1ProjectStatusSummary": { - "description": "Project status summary", + "v1CloudCostDataPoint": { + "description": "Cloud cost data point information", + "type": "object", "properties": { - "clustersHealth": { - "$ref": "#/definitions/v1SpectroClustersHealth" - }, - "status": { - "$ref": "#/definitions/v1ProjectStatus" + "compute": { + "type": "number", + "format": "float64", + "x-omitempty": false }, - "usage": { - "$ref": "#/definitions/v1ProjectUsageSummary" - } - }, - "type": "object" - }, - "v1ProjectSummary": { - "description": "Project summary", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "storage": { + "type": "number", + "format": "float64", + "x-omitempty": false }, - "specSummary": { - "$ref": "#/definitions/v1ProjectSpecSummary", - "description": "Project spec summary" + "timestamp": { + "type": "number", + "format": "int64" }, - "status": { - "$ref": "#/definitions/v1ProjectStatusSummary", - "description": "Project status summary" - } - }, - "type": "object" - }, - "v1ProjectTeamsEntity": { - "properties": { - "teams": { - "items": { - "$ref": "#/definitions/v1TeamRoleMap" - }, - "type": "array", - "uniqueItems": true + "total": { + "type": "number", + "format": "float64", + "x-omitempty": false } } }, - "v1ProjectUsage": { - "description": "Project usage object", + "v1CloudInstanceRateConfig": { + "description": "Cloud instance rate config", "properties": { - "alloy": { - "$ref": "#/definitions/v1ProjectUsageData" + "computeRateProportion": { + "type": "number", + "format": "float" }, - "pure": { - "$ref": "#/definitions/v1ProjectUsageData" + "memoryRateProportion": { + "type": "number", + "format": "float" } } }, - "v1ProjectUsageData": { - "description": "Project usage data object", + "v1CloudMachineStatus": { + "description": "cloud machine status", + "type": "object", "properties": { - "amount": { - "description": "Billing amount for the project", - "format": "float64", - "type": "number" + "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" + } + } }, - "tierPrice": { - "description": "Tier price based on the usage", - "format": "float64", - "type": "number" + "instanceState": { + "type": "string", + "enum": [ + "Pending", + "Provisioning", + "Provisioned", + "Running", + "Deleting", + "Deleted", + "Failed", + "Unknown" + ] }, - "usedCredits": { - "description": "Project used credits", - "format": "float64", - "type": "number" + "maintenanceStatus": { + "description": "Machine maintenance status", + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "message": { + "type": "string" + }, + "state": { + "type": "string" + } + } } } }, - "v1ProjectUsageSummary": { - "description": "Project usage summary", + "v1CloudRate": { + "description": "Cloud estimated rate information", + "type": "object", "properties": { - "alloyCpuCores": { - "type": "number", - "x-omitempty": false + "compute": { + "description": "Compute estimated rate information", + "type": "object", + "properties": { + "rate": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "type": { + "type": "string" + } + } }, - "clusters": { + "storage": { + "type": "array", "items": { - "$ref": "#/definitions/v1ClusterUsageSummary" - }, - "type": "array" + "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" + } + } + } }, - "pureCpuCores": { + "total": { "type": "number", + "format": "float64", "x-omitempty": false } - }, - "type": "object" - }, - "v1ProjectUsersEntity": { - "properties": { - "users": { - "items": { - "$ref": "#/definitions/v1UserRoleMap" - }, - "type": "array", - "uniqueItems": true - } } }, - "v1Projects": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1Project" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1ProjectsFilterSpec": { - "description": "Project filter summary spec", + "v1CloudResourceMetadata": { + "description": "Cloud resource metadata", + "type": "object", "properties": { - "filter": { - "$ref": "#/definitions/v1ProjectFilterSpec" + "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" + } + } + } }, - "sort": { - "items": { - "$ref": "#/definitions/v1ProjectFilterSortSpec" - }, - "type": "array", - "uniqueItems": true + "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" + } + } + } + } + } + } + } + } } } }, - "v1ProjectsMetadata": { + "v1CloudSpotPrice": { + "description": "Spot price entity of a particular cloud type", + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1ProjectMetadata" - }, - "type": "array", - "uniqueItems": true + "spotPrice": { + "description": "Spot price of a resource for a particular cloud", + "type": "number", + "format": "float64", + "x-omitempty": false } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1ProjectsSummary": { + "v1CloudWatch": { + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1ProjectSummary" - }, - "type": "array", - "uniqueItems": true + "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" + } + } + } + } }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1ProjectsWorkspaces": { - "description": "List projects and its workspaces", - "properties": { - "name": { + "group": { "type": "string" }, - "uid": { + "region": { "type": "string" }, - "workspaces": { - "items": { - "$ref": "#/definitions/v1WorkspacesRoles" - }, - "type": "array", - "uniqueItems": true + "stream": { + "type": "string" } } }, - "v1PublicCloudRateConfig": { - "description": "Public cloud rate config", + "v1ClusterBackup": { + "description": "Cluster Backup", "properties": { - "computeOptimized": { - "$ref": "#/definitions/v1CloudInstanceRateConfig" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "memoryOptimized": { - "$ref": "#/definitions/v1CloudInstanceRateConfig" + "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" + } + } + } + } + } } } }, - "v1RateConfig": { - "description": "Rate config", + "v1ClusterBackupConfig": { + "description": "Cluster backup config", "properties": { - "aws": { - "$ref": "#/definitions/v1PublicCloudRateConfig" - }, - "azure": { - "$ref": "#/definitions/v1PublicCloudRateConfig" - }, - "coxedge": { - "$ref": "#/definitions/v1PublicCloudRateConfig" - }, - "edge": { - "$ref": "#/definitions/v1PrivateCloudRateConfig" - }, - "edgeNative": { - "$ref": "#/definitions/v1PrivateCloudRateConfig" - }, - "gcp": { - "$ref": "#/definitions/v1PublicCloudRateConfig" + "backupLocationName": { + "type": "string" }, - "generic": { - "$ref": "#/definitions/v1PrivateCloudRateConfig" + "backupLocationUid": { + "type": "string" }, - "libvirt": { - "$ref": "#/definitions/v1PrivateCloudRateConfig" + "backupName": { + "type": "string" }, - "maas": { - "$ref": "#/definitions/v1PrivateCloudRateConfig" + "backupPrefix": { + "type": "string" }, - "openstack": { - "$ref": "#/definitions/v1PrivateCloudRateConfig" + "durationInHours": { + "type": "number", + "format": "int64" }, - "vsphere": { - "$ref": "#/definitions/v1PrivateCloudRateConfig" - } - } - }, - "v1RegistriesMetadata": { - "description": "Pack Registries Metadata", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1RegistryMetadata" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1RegistryAuth": { - "description": "Auth credentials of the registry", - "properties": { - "password": { - "format": "password", - "type": "string" + "includeAllDisks": { + "type": "boolean" }, - "tls": { - "$ref": "#/definitions/v1TlsConfiguration" + "includeClusterResources": { + "type": "boolean" }, - "token": { - "format": "password", + "locationType": { "type": "string" }, - "type": { - "enum": [ - "noAuth", - "basic", - "token" - ], - "type": "string" + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } }, - "username": { - "type": "string" + "schedule": { + "description": "Cluster feature schedule", + "properties": { + "scheduledRunTime": { + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1RegistryConf": { - "description": "Registry configuration", + "v1ClusterBackupLocationType": { + "description": "Cluster backup location type", + "required": [ + "locationType" + ], "properties": { - "auth": { - "$ref": "#/definitions/v1RegistryAuth" - }, - "endpoint": { + "locationType": { "type": "string" } - }, - "type": "object" + } }, - "v1RegistryConfigEntity": { - "description": "Registry configuration entity", + "v1ClusterBackupSpec": { + "description": "Cluster Backup Spec", "properties": { + "clusterUid": { + "type": "string" + }, "config": { - "$ref": "#/definitions/v1RegistryConfiguration" + "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": "object" + } }, - "v1RegistryConfiguration": { - "description": "Registry configuration", + "v1ClusterBackupStatus": { + "description": "Cluster Backup Status", "properties": { - "auth": { - "$ref": "#/definitions/v1RegistryAuth" - }, - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" + "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" + } }, - "v1RegistryMetadata": { - "description": "Registry meta", + "v1ClusterBackupStatusMeta": { + "description": "Cluster Backup Status Meta", "properties": { - "isDefault": { - "type": "boolean", - "x-omitempty": false + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false + "backupConfig": { + "description": "Backup config", + "properties": { + "includeAllDisks": { + "type": "boolean" + }, + "includeClusterResources": { + "type": "boolean" + }, + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } }, - "kind": { - "type": "string" + "backupLocationConfig": { + "description": "Backup location configuration", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "name": { + "backupRequestUid": { "type": "string" }, - "scope": { - "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" + } + } + } }, - "uid": { + "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" + } }, - "v1RegistryPackMetadata": { - "description": "Registry metadata information", + "v1ClusterComplianceOnDemandConfig": { + "description": "Cluster compliance scan on demand configuration", "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object" - }, - "latestPackUid": { - "description": "Latest pack uid", - "type": "string" - }, - "latestVersion": { - "description": "Pack latest version", - "type": "string" - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" + "kubeBench": { + "description": "Cluster compliance scan config for kube bench driver", + "properties": { + "runScan": { + "type": "boolean" + } + } }, - "name": { - "description": "Pack registry name", - "type": "string" + "kubeHunter": { + "description": "Cluster compliance scan config for kube hunter driver", + "properties": { + "runScan": { + "type": "boolean" + } + } }, - "scope": { - "description": "Pack registry scope", - "type": "string" + "sonobuoy": { + "description": "Cluster compliance scan config for sonobuoy driver", + "properties": { + "runScan": { + "type": "boolean" + } + } }, - "uid": { - "description": "Pack registry uid", - "type": "string" + "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" + } + } } } }, - "v1RegistrySyncStatus": { - "description": "Status of the registry sync", + "v1ClusterComplianceScan": { + "description": "Cluster Compliance Scan", "properties": { - "lastRunTime": { - "$ref": "#/definitions/v1Time" - }, - "lastSyncedTime": { - "$ref": "#/definitions/v1Time" - }, - "message": { - "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" + } + } }, - "status": { - "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" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1RelatedObject": { - "description": "Object for which the resource is related", + "v1ClusterComplianceScanKubeBenchConfig": { + "description": "Cluster compliance scan config for kube bench driver", "properties": { - "kind": { - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" + "runScan": { + "type": "boolean" } - }, - "type": "object" + } }, - "v1ReleaseDescription": { - "description": "spectro application management release description", + "v1ClusterComplianceScanKubeBenchScheduleConfig": { + "description": "Cluster compliance scan schedule config for kube bench driver", "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" + "schedule": { + "description": "Cluster feature schedule", + "properties": { + "scheduledRunTime": { + "type": "string" + } + } } } }, - "v1ReleaseVersion": { - "description": "spectro application management release version information", + "v1ClusterComplianceScanKubeHunterConfig": { + "description": "Cluster compliance scan config for kube hunter driver", "properties": { - "date": { - "$ref": "#/definitions/v1Time" - }, - "description": { + "runScan": { + "type": "boolean" + } + } + }, + "v1ClusterComplianceScanKubeHunterScheduleConfig": { + "description": "Cluster compliance scan schedule config for kube hunter driver", + "properties": { + "schedule": { + "description": "Cluster feature schedule", + "properties": { + "scheduledRunTime": { + "type": "string" + } + } + } + } + }, + "v1ClusterComplianceScanLogSpec": { + "description": "Cluster compliance scan logs spec", + "properties": { + "clusterUid": { "type": "string" }, - "releaseNotes": { - "items": { - "$ref": "#/definitions/v1ReleaseDescription" - }, - "type": "array" - }, - "version": { + "driverType": { "type": "string" } } }, - "v1ResourceCloudCostSummary": { - "description": "Resource cloud cost summary information", + "v1ClusterComplianceScanLogs": { + "description": "Cluster compliance scan Logs", "properties": { - "data": { + "kubeBenchLogs": { + "type": "array", "items": { - "$ref": "#/definitions/v1CloudCostDataPoint" - }, + "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", - "uniqueItems": true + "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" + } + } + } + } + } }, - "entity": { - "$ref": "#/definitions/v1ResourceReference" + "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" + } + } + } + } + } }, - "total": { - "$ref": "#/definitions/v1ResourceTotalCloudCost" + "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" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1ResourceConsumption": { - "description": "Resource consumption information", + "v1ClusterComplianceScanSonobuoyConfig": { + "description": "Cluster compliance scan config for sonobuoy driver", "properties": { - "associatedResources": { - "items": { - "$ref": "#/definitions/v1ResourceReference" - }, - "type": "array" - }, - "data": { - "items": { - "$ref": "#/definitions/v1ResourceConsumptionDataPoint" - }, - "type": "array", - "uniqueItems": true - }, - "entity": { - "$ref": "#/definitions/v1ResourceReference" - }, - "total": { - "$ref": "#/definitions/v1ResourceTotalConsumptionData" + "runScan": { + "type": "boolean" } - }, - "type": "object" + } }, - "v1ResourceConsumptionData": { - "description": "Resource cosumption data", + "v1ClusterComplianceScanSonobuoyScheduleConfig": { + "description": "Cluster compliance scan schedule config for sonobuoy driver", "properties": { - "cpu": { - "format": "float64", - "type": "number", - "x-omitempty": false - }, - "memory": { - "format": "float64", - "type": "number", - "x-omitempty": false + "schedule": { + "description": "Cluster feature schedule", + "properties": { + "scheduledRunTime": { + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1ResourceConsumptionDataPoint": { - "description": "Resource cosumption data point", + "v1ClusterComplianceScanSpec": { + "description": "Cluster compliance scan Spec", "properties": { - "allotted": { - "$ref": "#/definitions/v1ResourceConsumptionData" + "clusterUid": { + "type": "string" }, - "timestamp": { - "format": "int64", - "type": "number" + "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" + } + } + } + } + } + }, + "v1ClusterComplianceScanSyftConfig": { + "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" + ] + } + } }, - "usage": { - "$ref": "#/definitions/v1ResourceConsumptionData" + "runScan": { + "type": "boolean" } - }, - "type": "object" + } }, - "v1ResourceConsumptionFilter": { - "description": "Resource consumption filter", + "v1ClusterComplianceScanSyftDriverConfig": { + "description": "Cluster compliance scan specification", "properties": { - "clouds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "clusters": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "endTime": { - "$ref": "#/definitions/v1Time" - }, - "includeMasterMachines": { - "type": "boolean" + "format": { + "type": "string", + "enum": [ + "cyclonedx-json", + "github-json", + "spdx-json", + "syft-json" + ] }, - "namespaces": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "labelSelector": { + "type": "string" }, - "projects": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "location": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "startTime": { - "$ref": "#/definitions/v1Time" + "namespace": { + "type": "string" }, - "workspaces": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "v1ResourceConsumptionOptions": { - "description": "Resource consumption options", - "properties": { - "enableSummaryView": { - "default": true, - "type": "boolean" + "podName": { + "type": "string" }, - "groupBy": { - "default": "namespace", + "scope": { + "type": "string", "enum": [ - "tenant", - "project", - "workspace", "cluster", "namespace", - "cloud" - ], - "type": "string" - }, - "period": { - "default": 60, - "format": "int32", - "type": "integer" + "label-selector", + "pod" + ] } - }, - "type": "object" + } }, - "v1ResourceConsumptionSpec": { - "description": "Resource consumption spec", + "v1ClusterComplianceScheduleConfig": { + "description": "Cluster compliance scan schedule configuration", "properties": { - "filter": { - "$ref": "#/definitions/v1ResourceConsumptionFilter" + "kubeBench": { + "description": "Cluster compliance scan schedule config for kube bench driver", + "properties": { + "schedule": { + "description": "Cluster feature schedule", + "properties": { + "scheduledRunTime": { + "type": "string" + } + } + } + } }, - "options": { - "$ref": "#/definitions/v1ResourceConsumptionOptions" - } - }, - "type": "object" - }, - "v1ResourceCost": { - "description": "Resource Cost information", - "properties": { - "cloud": { - "$ref": "#/definitions/v1CloudCost" + "kubeHunter": { + "description": "Cluster compliance scan schedule config for kube hunter driver", + "properties": { + "schedule": { + "description": "Cluster feature schedule", + "properties": { + "scheduledRunTime": { + "type": "string" + } + } + } + } }, - "total": { - "format": "float64", - "type": "number", - "x-omitempty": false + "sonobuoy": { + "description": "Cluster compliance scan schedule config for sonobuoy driver", + "properties": { + "schedule": { + "description": "Cluster feature schedule", + "properties": { + "scheduledRunTime": { + "type": "string" + } + } + } + } } - }, - "type": "object" + } }, - "v1ResourceCostDataPoint": { - "description": "Resource cost data point", + "v1ClusterCondition": { + "type": "object", + "required": [ + "type", + "status" + ], "properties": { - "cpu": { - "format": "float64", - "type": "number", - "x-omitempty": false + "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" }, - "memory": { - "format": "float64", - "type": "number", - "x-omitempty": false + "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" }, - "storage": { - "format": "float64", - "type": "number", - "x-omitempty": false + "message": { + "description": "Human-readable message indicating details about last transition.", + "type": "string" }, - "timestamp": { - "format": "int64", - "type": "number" + "reason": { + "description": "Unique, one-word, CamelCase reason for the condition's last transition.", + "type": "string" }, - "total": { - "format": "float64", - "type": "number", - "x-omitempty": false + "status": { + "type": "string" + }, + "type": { + "type": "string" } - }, - "type": "object" + } }, - "v1ResourceCostSummary": { - "description": "Resource cost summary information", + "v1ClusterConfig": { + "type": "object", "properties": { - "associatedResources": { - "items": { - "$ref": "#/definitions/v1ResourceReference" - }, - "type": "array" + "clusterMetaAttribute": { + "description": "ClusterMetaAttribute contains additional cluster metadata information.", + "type": "string" }, - "data": { - "items": { - "$ref": "#/definitions/v1ResourceCostDataPoint" - }, + "clusterRbac": { + "description": "Deprecated. Use clusterResources", "type": "array", - "uniqueItems": true - }, - "entity": { - "$ref": "#/definitions/v1ResourceReference" - }, - "total": { - "$ref": "#/definitions/v1ResourceTotalCost" - } - }, - "type": "object" - }, - "v1ResourceCostSummaryFilter": { - "description": "Resource cost summary filter", - "properties": { - "clouds": { "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } }, - "clusters": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "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" + } + } + } + } + } }, - "endTime": { - "$ref": "#/definitions/v1Time" + "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" }, - "includeMasterMachines": { - "type": "boolean" + "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 + } + } }, - "namespaces": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "lifecycleConfig": { + "properties": { + "pause": { + "description": "enable pause life cycle config", + "type": "boolean", + "default": false, + "x-omitempty": false + } + } }, - "projects": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "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" + } + } }, - "startTime": { - "$ref": "#/definitions/v1Time" + "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" + } + } + } + } }, - "workspaces": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "updateWorkerPoolsInParallel": { + "description": "UpdateWorkerPoolsInParallel is used to decide if the update of workerpools happen in parallel. When this flag is false, the workerpools are updated sequentially.", + "type": "boolean" } - }, - "type": "object" + } }, - "v1ResourceCostSummaryOptions": { - "description": "Resource cost summary options", + "v1ClusterConfigEntity": { + "type": "object", "properties": { - "enableSummaryView": { - "default": true, - "type": "boolean" - }, - "groupBy": { - "default": "cluster", - "enum": [ - "tenant", - "project", - "workspace", - "cluster", - "namespace", - "deployment", - "cloud" - ], + "clusterMetaAttribute": { + "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", "type": "string" }, - "period": { - "default": 60, - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "v1ResourceCostSummarySpec": { - "description": "Resource cost summary spec", - "properties": { - "filter": { - "$ref": "#/definitions/v1ResourceCostSummaryFilter" + "controlPlaneHealthCheckTimeout": { + "type": "string" }, - "options": { - "$ref": "#/definitions/v1ResourceCostSummaryOptions" - } - }, - "type": "object" - }, - "v1ResourceEntity": { - "properties": { - "checks": { - "items": { - "type": "string" - }, - "type": "array" + "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 + } + } }, - "data": { - "additionalProperties": { - "type": "object" - }, - "type": "object" - } - }, - "type": "object" - }, - "v1ResourceGroup": { - "description": "Azure resource Group is a container that holds related resources for an Azure solution", - "properties": { - "id": { - "description": "The ID of the resource group", - "type": "string" + "lifecycleConfig": { + "properties": { + "pause": { + "description": "enable pause life cycle config", + "type": "boolean", + "default": false, + "x-omitempty": false + } + } }, "location": { - "description": "The location of the resource group. It cannot be changed after the resource group has been created", - "type": "string" + "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": "The type of the resource group", - "type": "string" - } - }, - "type": "object" - }, - "v1ResourceLimitType": { - "enum": [ - "user", - "project", - "apiKey", - "team", - "role", - "cloudaccount", - "clusterprofile", - "workspace", - "registry", - "privategateway", - "location", - "certificate", - "macro", - "sshkey", - "alert", - "spectrocluster", - "edgehost", - "appprofile", - "appdeployment", - "edgetoken", - "clustergroup", - "filter" - ], - "type": "string" - }, - "v1ResourceReference": { - "properties": { - "kind": { - "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" + } + } + } + } }, - "name": { - "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" + } + } + } + } + } + } + } + } + } }, - "uid": { - "type": "string" - } - }, - "required": [ - "uid" - ], - "type": "object" - }, - "v1ResourceRoles": { - "properties": { - "resourceRoles": { - "items": { - "$ref": "#/definitions/v1ResourceRolesEntity" - }, - "type": "array" + "updateWorkerPoolsInParallel": { + "type": "boolean" } - }, - "type": "object" + } }, - "v1ResourceRolesEntity": { + "v1ClusterConfigParamEntity": { + "type": "object", "properties": { - "filterRefs": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" - }, - "projectUids": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" - }, - "roles": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" + "clusterMetaAttribute": { + "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", + "type": "string" }, - "uid": { + "controlPlaneHealthCheckTimeout": { "type": "string" - } - }, - "type": "object" - }, - "v1ResourceRolesUpdateEntity": { - "properties": { - "filterRefs": { - "items": { - "type": "string" - }, - "type": "array" }, - "projectUids": { - "items": { - "type": "string" - }, - "type": "array" + "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 + } + } }, - "roles": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1ResourceTotalCloudCost": { - "description": "Resource total cloud cost information", - "properties": { - "compute": { - "format": "float64", - "type": "number", - "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" + } + } }, - "storage": { - "format": "float64", - "type": "number", - "x-omitempty": false + "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" + } + } + } + } + } + } + } + } + } }, - "total": { - "format": "float64", - "type": "number", - "x-omitempty": false + "updateWorkerPoolsInParallel": { + "type": "boolean" } - }, - "type": "object" + } }, - "v1ResourceTotalConsumptionData": { - "description": "Resource total cosumption data", + "v1ClusterConfigResponse": { + "type": "object", "properties": { - "allotted": { - "$ref": "#/definitions/v1ResourceConsumptionData" - }, - "usage": { - "$ref": "#/definitions/v1ResourceConsumptionData" + "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" + } + } + } + } } - }, - "type": "object" + } }, - "v1ResourceTotalCost": { - "description": "Resource total cost information", + "v1ClusterDefinitionEntity": { + "description": "Cluster definition entity", + "type": "object", "properties": { - "cpu": { - "format": "float64", - "type": "number", - "x-omitempty": false - }, - "memory": { - "format": "float64", - "type": "number", - "x-omitempty": false - }, - "storage": { - "format": "float64", - "type": "number", - "x-omitempty": false + "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" + } + } }, - "total": { - "format": "float64", - "type": "number", - "x-omitempty": false + "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": "object" + } }, - "v1ResourceUsage": { - "description": "ResourceUsage", + "v1ClusterDefinitionProfileEntity": { + "description": "Cluster definition profile entity", + "type": "object", + "required": [ + "uid" + ], "properties": { - "projects": { - "items": { - "$ref": "#/definitions/v1ProjectResourceUsage" - }, + "packs": { + "description": "Cluster profile packs array", "type": "array", - "uniqueItems": true - }, - "timestamp": { - "$ref": "#/definitions/v1Time", - "description": "resource usage time" - }, - "totalAlloyCpuCoreHours": { - "type": "number", - "x-omitempty": false + "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" + } + } + } }, - "totalPureCpuCoreHours": { - "type": "number", - "x-omitempty": false + "uid": { + "description": "Cluster profile uid", + "type": "string" } } }, - "v1ResourceUsageDataPoint": { - "description": "Resource usage data point", - "properties": { - "cpu": { - "format": "float64", - "type": "number", - "x-omitempty": false - }, - "memory": { - "format": "float64", - "type": "number", - "x-omitempty": false - }, - "timestamp": { - "format": "int64", - "type": "number" - } - }, - "type": "object" - }, - "v1ResourceUsageSummary": { - "description": "Resource usage summary information", + "v1ClusterDefinitionSpecEntity": { + "description": "Cluster definition spec entity", + "type": "object", + "required": [ + "profiles", + "cloudType" + ], "properties": { - "associatedResources": { - "items": { - "$ref": "#/definitions/v1ResourceReference" - }, - "type": "array" + "cloudType": { + "type": "string" }, - "data": { - "items": { - "$ref": "#/definitions/v1ResourceUsageDataPoint" - }, + "profiles": { + "description": "Cluster definition profiles", "type": "array", - "uniqueItems": true - }, - "entity": { - "$ref": "#/definitions/v1ResourceReference" + "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": "object" + } }, - "v1ResourceUsageSummaryFilter": { - "description": "Resource usage summary filter", + "v1ClusterEdgeInstallerConfig": { "properties": { - "clouds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "clusters": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "endTime": { - "$ref": "#/definitions/v1Time" - }, - "includeMasterMachines": { - "type": "boolean" - }, - "namespaces": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "pods": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "projects": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "startTime": { - "$ref": "#/definitions/v1Time" - }, - "workload": { - "$ref": "#/definitions/v1ResourceWorkloadFilter" - }, - "workspaces": { - "items": { + "installerDownloadLinks": { + "additionalProperties": { "type": "string" - }, - "type": "array", - "uniqueItems": true + } } - }, - "type": "object" + } }, - "v1ResourceUsageSummaryOptions": { - "description": "Resource usage summary options", + "v1ClusterFeatureActor": { + "description": "Compliance Scan actor", "properties": { - "enableSummaryView": { - "default": true, - "type": "boolean" - }, - "groupBy": { - "default": "cluster", - "enum": [ - "tenant", - "project", - "workspace", - "cluster", - "namespace", - "deployment", - "statefulset", - "daemonset", - "pod", - "cloud" - ], + "actorType": { "type": "string" }, - "period": { - "default": 60, - "format": "int32", - "type": "integer" + "uid": { + "type": "string" } - }, - "type": "object" + } }, - "v1ResourceUsageSummarySpec": { - "description": "Resource usage summary spec", + "v1ClusterFeatureSchedule": { + "description": "Cluster feature schedule", "properties": { - "filter": { - "$ref": "#/definitions/v1ResourceUsageSummaryFilter" - }, - "options": { - "$ref": "#/definitions/v1ResourceUsageSummaryOptions" + "scheduledRunTime": { + "type": "string" } - }, - "type": "object" + } }, - "v1ResourceWorkloadFilter": { - "description": "Workload resource filter", + "v1ClusterFips": { "properties": { - "names": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "type": { - "default": "all", + "mode": { + "type": "string", + "default": "none", "enum": [ - "deployment", - "statefulset", - "daemonset", - "all" - ], - "type": "string" + "full", + "none", + "partial", + "unknown" + ] } - }, - "type": "object" + } }, - "v1Resources": { - "properties": { - "resources": { - "additionalProperties": { - "$ref": "#/definitions/v1ResourceEntity", - "type": "object" - }, - "type": "object" - } - }, - "type": "object" + "v1ClusterFipsMode": { + "type": "string", + "default": "none", + "enum": [ + "full", + "none", + "partial", + "unknown" + ] }, - "v1ResourcesCloudCostSummary": { - "description": "Resources cloud cost summary information", + "v1ClusterGroup": { + "description": "Cluster group information", "properties": { - "resources": { - "items": { - "$ref": "#/definitions/v1ResourceCloudCostSummary" - }, - "type": "array" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "total": { - "$ref": "#/definitions/v1ResourceTotalCloudCost" + "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 + } + } } - }, - "type": "object" + } }, - "v1ResourcesConsumption": { - "description": "Resources consumption information", + "v1ClusterGroupClusterRef": { + "description": "Cluster group cluster reference", "properties": { - "cpuUnit": { + "clusterName": { "type": "string" }, - "memoryUnit": { + "clusterUid": { "type": "string" + } + } + }, + "v1ClusterGroupClustersConfig": { + "description": "Clusters config of cluster group", + "properties": { + "endpointType": { + "description": "Host cluster endpoint type", + "type": "string", + "enum": [ + "Ingress", + "LoadBalancer" + ] }, - "resources": { + "hostClustersConfig": { + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1ResourceConsumption" - }, - "type": "array" + "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" + } + } + } + } + } + } + } + } }, - "total": { - "$ref": "#/definitions/v1ResourceTotalConsumptionData" + "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": "object" + } }, - "v1ResourcesCostSummary": { - "description": "Resources cost summary information", + "v1ClusterGroupEntity": { + "description": "Cluster group information", "properties": { - "resources": { - "items": { - "$ref": "#/definitions/v1ResourceCostSummary" - }, - "type": "array" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "total": { - "$ref": "#/definitions/v1ResourceTotalCost" + "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": "object" + } }, - "v1ResourcesUsageSummary": { - "description": "Resources usage summary information", + "v1ClusterGroupHostClusterConfig": { "properties": { - "cpuUnit": { - "type": "string" - }, - "memoryUnit": { + "clusterUid": { "type": "string" }, - "resources": { - "items": { - "$ref": "#/definitions/v1ResourceUsageSummary" - }, - "type": "array" + "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" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1RestoreStatusMeta": { - "description": "Restore status meta", + "v1ClusterGroupHostClusterEntity": { + "description": "Clusters and clusters config of cluster group", "properties": { - "isSucceeded": { - "type": "boolean" - }, - "msg": { - "type": "string" + "clusterRefs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Cluster group cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } }, - "restoreTime": { - "$ref": "#/definitions/v1Time" + "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" + } + } } } }, - "v1Role": { - "description": "Role", + "v1ClusterGroupLimitConfig": { + "description": "Cluster group limit config", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "cpu": { + "description": "Deprecated. Use field cpuMilliCore", + "type": "integer", + "format": "int32" }, - "spec": { - "$ref": "#/definitions/v1RoleSpec" + "cpuMilliCore": { + "description": "CPU in milli cores", + "type": "integer", + "format": "int32" }, - "status": { - "$ref": "#/definitions/v1RoleStatus" + "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" } } }, - "v1RoleClone": { - "description": "Role clone specifications", + "v1ClusterGroupResource": { + "description": "Cluster group resource allocated and usage information", "properties": { - "metadata": { - "$ref": "#/definitions/v1RoleCloneMetadata" + "allocated": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "used": { + "type": "number", + "format": "float64", + "x-omitempty": false } } }, - "v1RoleCloneMetadata": { - "description": "Role clone metadata", + "v1ClusterGroupSpec": { + "description": "Cluster group specifications", "properties": { - "name": { - "type": "string" + "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" + ] } } }, - "v1RolePatch": { - "items": { - "$ref": "#/definitions/v1HttpPatch" - }, - "type": "array" - }, - "v1RoleSpec": { - "description": "Role specifications", + "v1ClusterGroupSpecEntity": { + "description": "Cluster group specifications request entity", "properties": { - "permissions": { - "items": { - "type": "string" - }, + "clusterRefs": { "type": "array", - "uniqueItems": true + "uniqueItems": true, + "items": { + "description": "Cluster group cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } }, - "scope": { - "$ref": "#/definitions/v1Scope" + "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": [ - "system", - "user" - ], - "type": "string" + "hostCluster" + ] } } }, - "v1RoleStatus": { - "description": "Role status", + "v1ClusterGroupStatus": { + "description": "Cluster group status", "properties": { - "isEnabled": { - "description": "Specifies if role account is enabled/disabled", + "isActive": { "type": "boolean", "x-omitempty": false } } }, - "v1Roles": { - "description": "Array of Roles", + "v1ClusterGroupSummary": { + "description": "Cluster group summay", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1Role" - }, - "type": "array", - "uniqueItems": true + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "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 + } + } } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1S3StorageConfig": { - "description": "S3 storage config object", + "v1ClusterGroupSummarySpec": { + "description": "Cluster group summay spec", "properties": { - "bucketName": { - "description": "S3 storage bucket name", - "type": "string" - }, - "caCert": { - "description": "CA Certificate", - "type": "string" - }, - "credentials": { - "$ref": "#/definitions/v1AwsCloudAccount", - "description": "AWS cloud account credentials" + "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" + } + } + } }, - "region": { - "description": "AWS region name", - "type": "string" + "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 + } + } }, - "s3ForcePathStyle": { - "default": true, - "type": "boolean" + "endpointType": { + "type": "string", + "enum": [ + "Ingress", + "LoadBalancer" + ] }, - "s3Url": { - "description": "Custom hosted S3 URL", - "type": "string" + "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" + } + } + } }, - "useRestic": { - "default": true, - "description": "Set to 'true', to use Restic plugin for the backup", - "type": "boolean" - } - }, - "required": [ - "bucketName", - "region", - "credentials" - ], - "type": "object" - }, - "v1SchedulerJob": { - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta", - "type": "object", + "hostClustersCount": { + "type": "integer", "x-omitempty": false }, - "spec": { + "memory": { + "description": "Cluster group resource allocated and usage information", "properties": { - "cycles": { - "type": "integer", + "allocated": { + "type": "number", + "format": "float64", "x-omitempty": false }, - "interval": { - "type": "integer", + "used": { + "type": "number", + "format": "float64", "x-omitempty": false } - }, - "type": "object" + } }, - "status": { + "scope": { + "type": "string" + }, + "virtualClustersCount": { + "type": "integer", + "x-omitempty": false + } + } + }, + "v1ClusterGroupsDeveloperCreditUsage": { + "description": "Cluster group resource allocated and usage information", + "properties": { + "allocatedCredit": { + "description": "Credits allocated for each tenant/user", "properties": { - "cycleNumber": { - "type": "integer", - "x-omitempty": false - }, - "error": { - "type": "string", + "cpu": { + "description": "cpu in cores", + "type": "number", + "format": "int32", "x-omitempty": false }, - "forceNextRun": { - "type": "boolean", + "memoryGiB": { + "description": "memory in GiB", + "type": "number", + "format": "int32", "x-omitempty": false }, - "isActive": { - "type": "boolean", + "storageGiB": { + "description": "storage in GiB", + "type": "integer", + "format": "int32", "x-omitempty": false }, - "isDisabled": { - "type": "boolean", + "virtualClustersLimit": { + "description": "number of active virtual clusters", + "type": "number", + "format": "int32", "x-omitempty": false - }, - "isLocked": { - "type": "boolean", + } + } + }, + "usedCredit": { + "description": "Credits allocated for each tenant/user", + "properties": { + "cpu": { + "description": "cpu in cores", + "type": "number", + "format": "int32", "x-omitempty": false }, - "lastRunTime": { - "$ref": "#/definitions/v1Time", + "memoryGiB": { + "description": "memory in GiB", + "type": "number", + "format": "int32", "x-omitempty": false }, - "lastSuccessfulRunTime": { - "$ref": "#/definitions/v1Time", + "storageGiB": { + "description": "storage in GiB", + "type": "integer", + "format": "int32", "x-omitempty": false }, - "nextRunTime": { - "$ref": "#/definitions/v1Time", + "virtualClustersLimit": { + "description": "number of active virtual clusters", + "type": "number", + "format": "int32", "x-omitempty": false } - }, - "type": "object" + } } - }, - "type": "object" - }, - "v1SchedulerJobs": { - "items": { - "$ref": "#/definitions/v1SchedulerJob" - }, - "type": "array", - "uniqueItems": true - }, - "v1SchedulerJobsHealth": { - "items": { - "$ref": "#/definitions/v1SchedulerJob" - }, - "type": "array", - "uniqueItems": true + } }, - "v1Scope": { - "enum": [ - "system", - "tenant", - "project", - "resource" + "v1ClusterGroupsHostClusterMetadata": { + "type": "object", + "required": [ + "items" ], - "type": "string" + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Object scope identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + } + } }, - "v1SearchFilterBoolCondition": { + "v1ClusterGroupsHostClusterSummary": { + "type": "object", + "required": [ + "summaries" + ], "properties": { - "value": { - "type": "boolean" + "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 + } + } + } + } + } } } }, - "v1SearchFilterCondition": { + "v1ClusterHelmChart": { + "description": "Cluster helm chart metadata", "properties": { - "bool": { - "$ref": "#/definitions/v1SearchFilterBoolCondition" - }, - "date": { - "$ref": "#/definitions/v1SearchFilterDateCondition" + "localName": { + "type": "string" }, - "float": { - "$ref": "#/definitions/v1SearchFilterFloatCondition" + "matchedRegistries": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Cluster helm registry information", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } }, - "int": { - "$ref": "#/definitions/v1SearchFilterIntegerCondition" + "name": { + "type": "string" }, - "keyValue": { - "$ref": "#/definitions/v1SearchFilterKeyValueCondition" + "values": { + "type": "string" }, - "string": { - "$ref": "#/definitions/v1SearchFilterStringCondition" + "version": { + "type": "string" } } }, - "v1SearchFilterConjunctionOperator": { - "enum": [ - "and", - "or" - ], - "type": "string", - "x-nullable": true + "v1ClusterHelmCharts": { + "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" + } + } + } + } + } }, - "v1SearchFilterDateCondition": { + "v1ClusterHelmRegistry": { + "description": "Cluster helm registry information", "properties": { - "match": { - "$ref": "#/definitions/v1SearchFilterDateConditionMatch" - }, - "negation": { - "type": "boolean" + "name": { + "type": "string" }, - "operator": { - "$ref": "#/definitions/v1SearchFilterDateOperator" + "uid": { + "type": "string" } } }, - "v1SearchFilterDateConditionMatch": { + "v1ClusterImport": { + "type": "object", "properties": { - "conjunction": { - "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + "importLink": { + "description": "import link to download and install ally-lite, palette-lite", + "type": "string" }, - "values": { - "items": { - "$ref": "#/definitions/v1Time" - }, - "type": "array", - "uniqueItems": true + "isBrownfield": { + "description": "Deprecated. Use the 'spec.clusterType'", + "type": "boolean", + "x-omitempty": false + }, + "state": { + "description": "cluster import status", + "type": "string" } } }, - "v1SearchFilterDateOperator": { - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte", - "range" - ], - "type": "string" - }, - "v1SearchFilterFloatCondition": { + "v1ClusterKubeBenchLogStatus": { + "description": "Cluster compliance scan KubeBench Log Status", "properties": { - "match": { - "$ref": "#/definitions/v1SearchFilterFloatConditionMatch" + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "negation": { - "type": "boolean" + "message": { + "type": "string" }, - "operator": { - "$ref": "#/definitions/v1SearchFilterIntegerOperator" + "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" } } }, - "v1SearchFilterFloatConditionMatch": { + "v1ClusterKubeHunterLogStatus": { + "description": "Cluster compliance scan KubeHunter Log Status", "properties": { - "conjunction": { - "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "values": { - "items": { - "format": "float64", - "type": "number" - }, - "type": "array", - "uniqueItems": true + "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" } } }, - "v1SearchFilterGroup": { + "v1ClusterKubernetesDistroType": { + "type": "string", + "default": "k3s", + "enum": [ + "k3s", + "cncf_k8s" + ] + }, + "v1ClusterLocation": { + "description": "Cluster location information", + "type": "object", "properties": { - "conjunction": { - "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + "countryCode": { + "description": "country code for cluster location", + "type": "string" }, - "filters": { - "items": { - "$ref": "#/definitions/v1SearchFilterItem" - }, - "type": "array", - "uniqueItems": true + "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" } } }, - "v1SearchFilterIntegerCondition": { + "v1ClusterLogFetcher": { + "description": "Cluster Log Fetcher", "properties": { - "match": { - "$ref": "#/definitions/v1SearchFilterIntegerConditionMatch" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "negation": { - "type": "boolean" + "spec": { + "description": "Cluster Log Fetcher Spec", + "properties": { + "clusterUid": { + "type": "string" + }, + "log": { + "type": "string" + } + } }, - "operator": { - "$ref": "#/definitions/v1SearchFilterIntegerOperator" + "status": { + "description": "Cluster Log Fetcher Status", + "properties": { + "state": { + "type": "string" + } + } } } }, - "v1SearchFilterIntegerConditionMatch": { + "v1ClusterLogFetcherK8sRequest": { + "description": "Cluster Log Fetcher K8s", "properties": { - "conjunction": { - "$ref": "#/definitions/v1SearchFilterConjunctionOperator" - }, - "values": { + "labelSelector": { + "type": "array", + "uniqueItems": true, "items": { - "type": "integer" - }, + "type": "string" + } + }, + "namespaces": { "type": "array", - "uniqueItems": true + "uniqueItems": true, + "items": { + "type": "string" + } } } }, - "v1SearchFilterIntegerOperator": { - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ], - "type": "string" - }, - "v1SearchFilterItem": { + "v1ClusterLogFetcherNodeRequest": { + "description": "Cluster Log Fetcher Node Request", "properties": { - "condition": { - "$ref": "#/definitions/v1SearchFilterCondition" - }, - "property": { - "type": "string" - }, - "type": { - "$ref": "#/definitions/v1SearchFilterPropertyType" + "logs": { + "description": "Array of logs", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } } } }, - "v1SearchFilterKeyValueCondition": { + "v1ClusterLogFetcherRequest": { + "description": "Cluster Log Fetcher Request", "properties": { - "ignoreCase": { - "type": "boolean" + "duration": { + "description": "Duration for which log is requested", + "type": "integer", + "format": "int64", + "default": 10 }, - "key": { - "type": "string" + "k8s": { + "description": "Cluster Log Fetcher K8s", + "properties": { + "labelSelector": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } }, - "match": { - "$ref": "#/definitions/v1SearchFilterKeyValueConditionMatch" + "mode": { + "description": "Accepted Values - [\"cluster\", \"app\"]. if \"app\" then logs will be fetched from the virtual cluster", + "type": "string", + "default": "cluster", + "enum": [ + "cluster", + "app" + ] }, - "negation": { - "type": "boolean" + "noOfLines": { + "description": "No of lines of logs requested", + "type": "integer", + "format": "int64", + "default": 1000 }, - "operator": { - "$ref": "#/definitions/v1SearchFilterStringOperator" + "node": { + "description": "Cluster Log Fetcher Node Request", + "properties": { + "logs": { + "description": "Array of logs", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } } } }, - "v1SearchFilterKeyValueConditionMatch": { + "v1ClusterLogFetcherSpec": { + "description": "Cluster Log Fetcher Spec", "properties": { - "conjunction": { - "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + "clusterUid": { + "type": "string" }, - "values": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "log": { + "type": "string" } } }, - "v1SearchFilterKeyValueOperator": { - "enum": [ - "eq" - ], - "type": "string" - }, - "v1SearchFilterPropertyType": { - "enum": [ - "string", - "int", - "float", - "bool", - "date", - "keyValue" - ], - "type": "string" - }, - "v1SearchFilterSchemaSpec": { + "v1ClusterLogFetcherStatus": { + "description": "Cluster Log Fetcher Status", "properties": { - "schema": { - "$ref": "#/definitions/v1SearchFilterSchemaSpecProperties" + "state": { + "type": "string" } } }, - "v1SearchFilterSchemaSpecEnumValue": { + "v1ClusterManifest": { + "description": "Cluster manifest information", "properties": { - "displayValue": { + "content": { "type": "string" }, - "value": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "type": { "type": "string" } } }, - "v1SearchFilterSchemaSpecProperties": { + "v1ClusterManifests": { + "description": "Cluster manifests information", "properties": { - "properties": { + "manifests": { + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1SearchFilterSchemaSpecProperty" - }, - "type": "array" + "description": "Cluster manifest information", + "properties": { + "content": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } } } }, - "v1SearchFilterSchemaSpecProperty": { + "v1ClusterMeta": { + "description": "Active cluster meta", + "type": "object", "properties": { - "default": { - "type": "string", - "x-order": 6 - }, - "displayName": { - "type": "string", - "x-order": 2 - }, - "enum": { - "items": { - "type": "string" - }, - "type": "array", - "x-omitempty": true, - "x-order": 4 - }, - "enumValues": { - "items": { - "$ref": "#/definitions/v1SearchFilterSchemaSpecEnumValue" - }, - "type": "array", - "x-omitempty": true, - "x-order": 5 + "cloudType": { + "type": "string" }, - "hideDisplay": { - "type": "boolean", - "x-order": 1 + "clusterType": { + "type": "string" }, - "maxFloatVal": { - "format": "float64", - "type": "number", - "x-order": 10 + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "maxIntVal": { - "format": "int32", - "type": "integer", - "x-order": 8 + "duration": { + "type": "string" }, - "minFloatVal": { - "format": "float64", - "type": "number", - "x-order": 9 + "name": { + "type": "string" }, - "minIntVal": { - "format": "int32", - "type": "integer", - "x-order": 7 + "projectName": { + "type": "string" }, - "name": { + "state": { "type": "string", - "x-order": 0 + "enum": [ + "Pending", + "Provisioning", + "Running", + "Deleting", + "Deleted", + "Error", + "Importing" + ] }, - "type": { - "type": "string", - "x-order": 3 + "uid": { + "type": "string" } } }, - "v1SearchFilterSortSpec": { + "v1ClusterMetaAttributeEntity": { + "description": "Cluster additional metadata entity", + "type": "object", "properties": { - "field": { - "$ref": "#/definitions/v1SearchSortFields" - }, - "order": { - "$ref": "#/definitions/v1SortOrder" + "clusterMetaAttribute": { + "type": "string" } } }, - "v1SearchFilterSpec": { + "v1ClusterMetaSpecLocation": { + "description": "Cluster location information", + "type": "object", "properties": { - "conjunction": { - "$ref": "#/definitions/v1SearchFilterConjunctionOperator" - }, - "filterGroups": { - "items": { - "$ref": "#/definitions/v1SearchFilterGroup" - }, + "coordinates": { "type": "array", - "uniqueItems": true - } - } - }, - "v1SearchFilterStringCondition": { - "properties": { - "ignoreCase": { - "type": "boolean" + "items": { + "type": "number", + "format": "float64" + } }, - "match": { - "$ref": "#/definitions/v1SearchFilterStringConditionMatch" + "countryCode": { + "type": "string" }, - "negation": { - "type": "boolean" + "countryName": { + "type": "string" }, - "operator": { - "$ref": "#/definitions/v1SearchFilterStringOperator" - } - } - }, - "v1SearchFilterStringConditionMatch": { - "properties": { - "conjunction": { - "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + "regionCode": { + "type": "string" }, - "values": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "regionName": { + "type": "string" } } }, - "v1SearchFilterStringOperator": { - "enum": [ - "eq", - "contains", - "beginsWith" - ], - "type": "string" - }, - "v1SearchFilterSummarySpec": { - "description": "Spectro cluster search filter summary spec", + "v1ClusterMetaStatusCost": { + "description": "Cluster meta Cost information", + "type": "object", "properties": { - "filter": { - "$ref": "#/definitions/v1SearchFilterSpec" - }, - "sort": { - "items": { - "$ref": "#/definitions/v1SearchFilterSortSpec" - }, - "type": "array", - "uniqueItems": true + "total": { + "type": "number", + "format": "float64", + "x-omitempty": false } } }, - "v1SearchSortFields": { - "enum": [ - "environment", - "clusterName", - "clusterState", - "healthState", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "type": "string", - "x-nullable": true - }, - "v1SectroClusterK8sDashboardUrl": { - "description": "Service version information", + "v1ClusterMetaStatusHealth": { + "description": "Cluster meta health information", + "type": "object", "properties": { - "url": { + "isHeartBeatFailed": { + "type": "boolean", + "x-omitempty": false + }, + "state": { "type": "string" } - }, - "type": "object" + } }, - "v1ServiceEncryptionKey": { - "description": "Returns the data encryption key for the session", + "v1ClusterMetaStatusUpdates": { + "description": "Cluster meta updates information", + "type": "object", "properties": { - "encryptionKey": { - "description": "Encryption key to be used to decrypt the encrypted data in the response", - "type": "string" + "isUpdatesPending": { + "type": "boolean", + "x-omitempty": false } - }, - "type": "object" + } }, - "v1ServiceImage": { - "description": "Service image entity", + "v1ClusterNamespace": { + "description": "Cluster's namespace", "properties": { - "buildId": { - "type": "string" - }, - "image": { - "type": "string" - }, - "serviceName": { + "namespace": { "type": "string" }, - "version": { - "type": "string" + "pvcCount": { + "type": "number", + "format": "int32" } - }, - "type": "object" + } }, - "v1ServiceManifest": { - "description": "Service manifest information", + "v1ClusterNamespaceResource": { + "description": "Cluster Namespace resource defintion", + "type": "object", "properties": { - "kind": { - "type": "string" - }, "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1ServiceManifestSpec" + "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" + } }, - "v1ServiceManifestSpec": { + "v1ClusterNamespaceResourceAllocation": { + "description": "Cluster namespace resource allocation", "properties": { - "manifests": { - "items": { - "$ref": "#/definitions/v1GitRepoFileContent" - }, - "type": "array", - "uniqueItems": true - }, - "name": { - "type": "string" + "cpuCores": { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true }, - "version": { - "type": "string" + "memoryMiB": { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true } - }, - "type": "object" + } }, - "v1ServicePort": { + "v1ClusterNamespaceResourceInputEntity": { + "description": "Cluster Namespace resource defintion", + "type": "object", "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "format": "int32", - "type": "integer" + "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" + } + } }, - "protocol": { - "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 + } + } + } + } } - }, + } + }, + "v1ClusterNamespaceResources": { + "type": "object", "required": [ - "port" + "items" ], - "type": "object" + "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" + } + } + } + } + } + } + } + } + } + } }, - "v1ServiceSpec": { - "description": "ServiceSpec defines the specification of service registering edge", + "v1ClusterNamespaceResourcesUpdateEntity": { + "type": "object", "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" + "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": "object" + } }, - "v1ServiceVersion": { - "description": "Service version information", + "v1ClusterNamespaceSpec": { + "description": "Cluster namespace spec", "properties": { - "kind": { - "type": "string" + "isRegex": { + "type": "boolean", + "x-omitempty": false }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "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" + } + } }, - "spec": { - "$ref": "#/definitions/v1ServiceVersionSpec" + "resourceAllocation": { + "description": "Cluster namespace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true + }, + "memoryMiB": { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true + } + } } - }, - "type": "object" + } }, - "v1ServiceVersionSpec": { + "v1ClusterNamespaceStatus": { + "description": "Cluster namespace status", "properties": { - "latestVersion": { - "$ref": "#/definitions/v1GitRepoFileContent" - }, - "name": { - "type": "string" + "errors": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Cluster resource error", + "properties": { + "msg": { + "type": "string" + }, + "name": { + "type": "string" + }, + "resourceType": { + "type": "string" + } + } + } } - }, - "type": "object" + } }, - "v1ServicesImages": { + "v1ClusterNamespaces": { + "description": "Cluster's available namespaces", "properties": { - "serviceImages": { - "items": { - "$ref": "#/definitions/v1ServiceImage" - }, + "namespaces": { "type": "array", - "uniqueItems": true + "items": { + "description": "Cluster's namespace", + "properties": { + "namespace": { + "type": "string" + }, + "pvcCount": { + "type": "number", + "format": "int32" + } + } + } } - }, - "type": "object" + } }, - "v1SonobuoyEntity": { - "description": "Sonobuoy response", + "v1ClusterNotificationUpdateEntity": { + "description": "Cluster input for notification update", + "type": "object", "properties": { - "reports": { - "additionalProperties": { - "$ref": "#/definitions/v1SonobuoyReportEntity" - }, - "type": "object" - }, - "requestUid": { - "type": "string" + "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" + } + } + } }, - "status": { - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ], - "type": "string" + "spcApplySettings": { + "type": "object", + "properties": { + "actionType": { + "type": "string", + "enum": [ + "DownloadAndInstall", + "DownloadAndInstallLater" + ] + } + } } - }, - "required": [ - "requestUid", - "status", - "reports" - ] + } }, - "v1SonobuoyLog": { - "description": "Compliance Scan Sonobuoy Log", + "v1ClusterPackManifestStatus": { + "type": "object", "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" + "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" + } + } }, - "path": { + "name": { "type": "string" }, - "state": { + "uid": { "type": "string" } } }, - "v1SonobuoyLogEntity": { - "description": "Sonobuoy log", + "v1ClusterPackStatus": { + "type": "object", "properties": { - "description": { - "type": "string" + "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" + } + } }, - "msg": { - "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" }, - "output": { - "type": "string" + "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" + } + } + } }, - "path": { + "name": { "type": "string" }, - "state": { + "profileUid": { "type": "string" - } - } - }, - "v1SonobuoyReport": { - "description": "Compliance Scan Sonobuoy Report", - "properties": { - "fail": { - "format": "int32", - "type": "integer" }, - "logs": { + "services": { + "type": "array", "items": { - "$ref": "#/definitions/v1SonobuoyLog" - }, - "type": "array" - }, - "node": { - "type": "string" + "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" + } + } + } + } + } + } }, - "pass": { - "format": "int32", - "type": "integer" + "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" }, - "plugin": { + "type": { "type": "string" }, - "status": { + "version": { "type": "string" - }, - "total": { - "format": "int32", - "type": "integer" } } }, - "v1SonobuoyReportEntity": { - "description": "Sonobuoy report", + "v1ClusterPreference": { + "description": "cluster preference", "properties": { - "fail": { - "format": "int32", + "archivalIntervalInHour": { + "description": "clusters cleanup interval post deletion", "type": "integer" }, - "logs": { - "items": { - "$ref": "#/definitions/v1SonobuoyLogEntity" - }, - "type": "array" - }, - "node": { - "type": "string" - }, - "pass": { - "format": "int32", + "deletePeriodInHour": { + "description": "clusters deleted before delete period are eligible for cleanup", "type": "integer" }, - "plugin": { - "type": "string" - }, - "status": { - "type": "string" + "healthPollIntervalInMinutes": { + "description": "clusters health poll interval", + "type": "integer", + "maximum": 60, + "minimum": 3 }, - "total": { - "format": "int32", + "monitorIntervalInMinutes": { + "description": "clusters state and consistency monitor", "type": "integer" } } }, - "v1SortOrder": { - "default": "asc", - "enum": [ - "asc", - "desc" - ], - "type": "string" - }, - "v1SpcApply": { + "v1ClusterProfile": { + "description": "ClusterProfile is the Schema for the clusterprofiles API", + "type": "object", "properties": { - "actionType": { - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ], + "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" }, - "canBeApplied": { - "description": "If it is true then Agent can apply the changes to the palette", - "type": "boolean", - "x-omitempty": false - }, - "crdDigest": { + "kind": { + "description": "Cloud type of the cloud config", "type": "string" }, - "lastModifiedTime": { - "$ref": "#/definitions/v1Time" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "patchAppliedTime": { - "$ref": "#/definitions/v1Time" + "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" + } + } + } + } + } }, - "spcHash": { - "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 + } + } } - }, - "type": "object" + } }, - "v1SpcApplySettings": { + "v1ClusterProfileCloneEntity": { + "description": "Cluster profile clone request payload", + "type": "object", "properties": { - "actionType": { - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" + "metadata": { + "description": "Cluster profile clone metadata", + "type": "object", + "required": [ + "name" ], - "type": "string" + "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": "object" + } }, - "v1SpcPatchTimeEntity": { + "v1ClusterProfileCloneMetaInputEntity": { + "description": "Cluster profile clone metadata", + "type": "object", + "required": [ + "name" + ], "properties": { - "clusterHash": { + "name": { + "description": "Cloned cluster profile name", "type": "string" }, - "patchTime": { - "$ref": "#/definitions/v1Time" - } - }, - "type": "object" - }, - "v1SpectroAppMgmtUpgrade": { - "description": "Spectro application management upgrade information", - "properties": { - "profiles": { - "items": { - "$ref": "#/definitions/v1ClusterProfileNotificationUpdateEntity" - }, - "type": "array", - "uniqueItems": true + "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" } - }, + } + }, + "v1ClusterProfileCloneTarget": { + "description": "Cluster profile clone meta input entity", + "type": "object", "required": [ - "version" + "scope" ], - "type": "object" + "properties": { + "projectUid": { + "description": "Cloned cluster profile project uid", + "type": "string" + }, + "scope": { + "type": "string", + "enum": [ + "system", + "tenant", + "project", + "resource" + ] + } + } }, - "v1SpectroAwsClusterEntity": { - "description": "AWS cluster request payload for create and update", + "v1ClusterProfileEntity": { + "description": "Cluster profile request payload", + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "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": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", + "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" + } + } + } + } + }, + "v1ClusterProfileFilterSpec": { + "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 }, - "cloudConfig": { - "$ref": "#/definitions/v1AwsClusterConfig" + "ignoreCase": { + "type": "boolean", + "default": true }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + "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 }, - "machinepoolconfig": { + "eq": { + "type": "array", "items": { - "$ref": "#/definitions/v1AwsMachinePoolConfigEntity" + "type": "string" }, - "type": "array" + "x-nullable": true }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" + "ignoreCase": { + "type": "boolean", + "default": true }, - "profiles": { + "ne": { + "type": "array", "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" + "type": "string" }, - "type": "array" + "x-nullable": true } - }, - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroAwsClusterImportEntity": { - "description": "Spectro AWS cluster import request payload", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + } }, - "spec": { + "version": { + "type": "object", "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1ImportClusterConfig" + "beginsWith": { + "type": "string", + "x-nullable": true + }, + "eq": { + "type": "string", + "x-nullable": true + }, + "gt": { + "type": "string", + "x-nullable": true + }, + "lt": { + "type": "string", + "x-nullable": true + }, + "ne": { + "type": "string", + "x-nullable": true } - }, - "type": "object" + } } - }, - "type": "object" + } }, - "v1SpectroAwsClusterRateEntity": { - "description": "Spectro AWS cluster request payload for estimating rate", + "v1ClusterProfileFips": { + "description": "Cluster profile fips compliance status", "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1AwsClusterConfig" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1AwsMachinePoolConfigEntity" - }, - "type": "array" + "mode": { + "type": "string", + "default": "none", + "enum": [ + "full", + "none", + "partial", + "unknown" + ] } - }, - "type": "object" + } }, - "v1SpectroAzureClusterEntity": { - "description": "Azure cluster request payload for create and update", + "v1ClusterProfileImportEntity": { + "description": "Cluster profile import request payload", + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { + "description": "Cluster profile import metadata", + "type": "object", "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", + "description": { + "description": "Cluster profile description", "type": "string" }, - "cloudConfig": { - "$ref": "#/definitions/v1AzureClusterConfig" + "labels": { + "description": "Cluster profile labels", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + "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" + } + } }, - "machinepoolconfig": { + "variables": { + "description": "List of unique variable fields defined for a cluster profile with schema constraints", + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" - }, - "type": "array" - }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" + "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 + } + } + } }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" + "version": { + "description": "Cluster profile version", + "type": "string" } - }, - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "type": "object" + } } - }, - "type": "object" + } }, - "v1SpectroAzureClusterImportEntity": { - "description": "Spectro Azure cluster import request payload", + "v1ClusterProfileMetadata": { + "description": "Cluster profile filter spec", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, "spec": { "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1ImportClusterConfig" + "cloudType": { + "type": "string" + }, + "version": { + "type": "string" } - }, - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroAzureClusterRateEntity": { - "description": "Spectro Azure cluster request payload for estimating rate", - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1AzureClusterConfig" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" - }, - "type": "array" + } } - }, - "type": "object" + } }, - "v1SpectroCluster": { - "description": "SpectroCluster is the Schema for the spectroclusters API", + "v1ClusterProfileMetadataImportEntity": { + "description": "Cluster profile import metadata", + "type": "object", "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", + "description": { + "description": "Cluster profile description", "type": "string" }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1SpectroClusterSpec" + "labels": { + "description": "Cluster profile labels", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "status": { - "$ref": "#/definitions/v1SpectroClusterStatus" + "name": { + "description": "Cluster profile name", + "type": "string" } - }, - "type": "object" + } }, - "v1SpectroClusterActiveAppDeployment": { - "description": "Active app deployment", + "v1ClusterProfileNotificationUpdateEntity": { + "description": "Cluster profile notification update request payload", + "type": "object", "properties": { - "appRef": { - "$ref": "#/definitions/v1ObjectEntity" + "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" + } + } + } }, - "state": { + "uid": { + "description": "Cluster profile uid", "type": "string" } - }, - "type": "object" + } }, - "v1SpectroClusterActiveCluster": { - "description": "Active clusters", + "v1ClusterProfilePackConfigList": { + "type": "object", + "required": [ + "items" + ], "properties": { - "clusterRef": { - "$ref": "#/definitions/v1ObjectEntity" - }, - "state": { - "type": "string" + "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" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1SpectroClusterActiveResources": { - "description": "Active cluster resources", + "v1ClusterProfilePackManifests": { + "description": "Cluster profile pack manifests", + "type": "object", "properties": { - "appDeployments": { - "items": { - "$ref": "#/definitions/v1SpectroClusterActiveAppDeployment" - }, - "type": "array" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "clusters": { - "items": { - "$ref": "#/definitions/v1SpectroClusterActiveCluster" - }, - "type": "array" + "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" + } + } }, - "virtualClusters": { - "items": { - "$ref": "#/definitions/v1SpectroClusterActiveCluster" - }, - "type": "array" + "status": { + "description": "Pack status", + "type": "object" } - }, - "type": "object" + } }, - "v1SpectroClusterAddOnService": { - "description": "Spectro cluster addon service", + "v1ClusterProfilePackSummary": { + "description": "Cluster profile packs summary about the deprecated, disabled, deleted packs count", + "type": "object", "properties": { - "endpoint": { - "type": "string" + "deleted": { + "description": "Total count of deleted packs in a cluster profile", + "type": "number", + "x-omitempty": false }, - "name": { - "type": "string" + "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 } } }, - "v1SpectroClusterAddOnServiceSummary": { - "description": "Spectro cluster status summary", + "v1ClusterProfilePacksEntities": { + "description": "List of cluster profile packs", + "type": "object", + "required": [ + "items" + ], "properties": { - "endpoint": { - "type": "string" + "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" + } + } + } + } + } + }, + "v1ClusterProfilePacksEntity": { + "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" + } + } }, - "name": { - "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" } } }, - "v1SpectroClusterAssetEntity": { - "description": "Cluster asset", + "v1ClusterProfilePacksManifests": { + "description": "Cluster profile pack manifests", + "type": "object", "properties": { - "spec": { + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", "properties": { - "frpKubeconfig": { - "type": "string" + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "kubeconfig": { - "type": "string" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "kubeconfigclient": { + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", "type": "string" }, - "manifest": { + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", "type": "string" } - }, - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroClusterAssetFrpKubeConfig": { - "description": "Cluster asset Frp Kube Config", - "properties": { - "frpKubeconfig": { - "type": "string" - } - }, - "type": "object" - }, - "v1SpectroClusterAssetKubeConfig": { - "description": "Cluster asset Kube Config", - "properties": { - "kubeconfig": { - "type": "string" + } + }, + "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" + } }, - "v1SpectroClusterAssetKubeConfigClient": { - "description": "Cluster asset Kube Config Client", - "properties": { - "kubeconfigclient": { - "type": "string" - } - }, - "type": "object" + "v1ClusterProfileScope": { + "type": "string", + "enum": [ + "system", + "tenant", + "project" + ] }, - "v1SpectroClusterAssetManifest": { - "description": "Cluster asset", - "properties": { - "manifest": { - "type": "string" - } - }, - "type": "object" + "v1ClusterProfileSortFields": { + "type": "string", + "enum": [ + "profileName", + "environment", + "profileType", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true }, - "v1SpectroClusterCloudCost": { - "description": "Spectro cluster cloud cost information", + "v1ClusterProfileSortSpec": { "properties": { - "cost": { - "$ref": "#/definitions/v1ResourceCost" + "field": { + "type": "string", + "enum": [ + "profileName", + "environment", + "profileType", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true }, - "data": { - "items": { - "$ref": "#/definitions/v1CloudCostDataPoint" - }, - "type": "array" + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] } - }, - "type": "object" + } }, - "v1SpectroClusterCloudCostSummaryFilter": { - "description": "Spectro cluster cloud cost summary filter", + "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", + "type": "object", "properties": { - "clouds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "endTime": { - "$ref": "#/definitions/v1Time" + "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" + } + } }, - "projects": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "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" + } + } }, - "startTime": { - "$ref": "#/definitions/v1Time" + "version": { + "type": "string" }, - "workspaces": { - "items": { - "type": "string" - }, + "versions": { + "description": "Cluster profile's list of all the versions", "type": "array", - "uniqueItems": true + "items": { + "description": "Cluster profile with version", + "properties": { + "uid": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } } - }, - "type": "object" + } }, - "v1SpectroClusterCloudCostSummaryOptions": { - "description": "Spectro cluster cloud cost summary options", + "v1ClusterProfileSpecEntity": { + "description": "Cluster profile update spec", + "type": "object", "properties": { - "groupBy": { - "default": "project", - "enum": [ - "tenant", - "project", - "cloud", - "cluster" - ], + "version": { + "description": "Cluster profile version", "type": "string" - }, - "period": { - "default": 1440, - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "v1SpectroClusterCloudCostSummarySpec": { - "description": "Spectro cluster cloud cost summary spec", - "properties": { - "filter": { - "$ref": "#/definitions/v1SpectroClusterCloudCostSummaryFilter" - }, - "options": { - "$ref": "#/definitions/v1SpectroClusterCloudCostSummaryOptions" } - }, - "type": "object" + } }, - "v1SpectroClusterCost": { - "description": "Spectro cluster cost information", + "v1ClusterProfileSpecImportEntity": { + "description": "Cluster profile import spec", + "type": "object", "properties": { - "cloud": { - "$ref": "#/definitions/v1SpectroClusterCloudCost" - }, - "cost": { - "$ref": "#/definitions/v1ResourceCost" + "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" + } + } }, - "name": { - "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 + } + } + } }, - "uid": { + "version": { + "description": "Cluster profile version", "type": "string" } - }, - "type": "object" + } }, - "v1SpectroClusterCostSummary": { + "v1ClusterProfileStatus": { + "description": "ClusterProfileStatus defines the observed state of ClusterProfile", + "type": "object", "properties": { - "cluster": { - "$ref": "#/definitions/v1SpectroClusterCost" - }, - "endTime": { - "$ref": "#/definitions/v1Time" - }, - "period": { - "format": "int32", - "type": "integer" + "hasUserMacros": { + "description": "If it is true then profile pack values has a reference to user defined macros", + "type": "boolean", + "x-omitempty": false }, - "startTime": { - "$ref": "#/definitions/v1Time" - } - }, - "type": "object" - }, - "v1SpectroClusterFilterSpec": { - "description": "Spectro cluster filter spec", - "properties": { - "cloudAccounts": { - "items": { - "type": "string" - }, + "inUseClusterUids": { + "description": "Deprecated. Use inUseClusters", "type": "array", - "uniqueItems": true - }, - "clusterName": { - "$ref": "#/definitions/v1FilterString" - }, - "clusterProfiles": { "items": { "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "clusterState": { - "$ref": "#/definitions/v1ClusterState", - "description": "Deprecated. Use clusterStates" - }, - "clusterStates": { - "items": { - "$ref": "#/definitions/v1ClusterState" - }, - "type": "array", - "uniqueItems": true - }, - "cpuUsage": { - "$ref": "#/definitions/v1FilterIntRange" + } }, - "environment": { - "description": "Deprecated. Use environments", - "items": { - "type": "string" - }, + "inUseClusters": { "type": "array", - "uniqueItems": true - }, - "environments": { "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "healthState": { - "default": "all", - "enum": [ - "all", - "Healthy", - "UnHealthy" - ], - "type": "string" - }, - "isDeleted": { - "default": false, - "type": "boolean" + "description": "Object resource reference", + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "projectUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } }, - "isHostCluster": { - "default": false, + "isPublished": { "type": "boolean", "x-omitempty": false - }, - "memoryUsage": { - "$ref": "#/definitions/v1FilterNumberRange" - }, - "metricPeriod": { - "default": 60, - "description": "Metric period in minutes defines latest metrics by period", - "format": "int32", - "type": "integer" - }, - "projectUids": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "tags": { - "$ref": "#/definitions/v1FilterArray" } } }, - "v1SpectroClusterHealthCheck": { - "properties": { - "spec": { - "$ref": "#/definitions/v1SpectroClusterHealthCheckSpec", - "type": "object" - }, - "status": { - "$ref": "#/definitions/v1SpectroClusterHealthCheckStatus", - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroClusterHealthCheckSpec": { - "properties": { - "name": { - "type": "string" - }, - "orgName": { - "type": "string" - }, - "ownerName": { - "type": "string" - }, - "ownerUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - } - }, - "type": "object" - }, - "v1SpectroClusterHealthCheckStatus": { + "v1ClusterProfileStatusSummary": { + "description": "ClusterProfileStatusSummary defines the observed state of ClusterProfile", + "type": "object", "properties": { - "machineHealthChecks": { - "items": { - "$ref": "#/definitions/v1HealthCheck" - }, - "type": "array" - }, - "msgBrokerHealthChecks": { - "items": { - "$ref": "#/definitions/v1HealthCheck" - }, - "type": "array" + "fips": { + "description": "Cluster profile fips compliance status", + "properties": { + "mode": { + "type": "string", + "default": "none", + "enum": [ + "full", + "none", + "partial", + "unknown" + ] + } + } }, - "spectroClusterHealthChecks": { + "inUseClusterUids": { + "description": "Deprecated. Use inUseClusters", + "type": "array", "items": { - "$ref": "#/definitions/v1HealthCheck" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1SpectroClusterHealthCondition": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "$ref": "#/definitions/v1RelatedObject", - "type": "object" - }, - "type": { - "type": "string" - } - } - }, - "v1SpectroClusterHealthStatus": { - "description": "Spectro cluster health status", - "properties": { - "agentVersion": { - "type": "string" + "type": "string" + } }, - "conditions": { - "items": { - "$ref": "#/definitions/v1SpectroClusterHealthCondition" - }, + "inUseClusters": { "type": "array", - "uniqueItems": true + "items": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } }, - "lastHeartBeatTimestamp": { - "$ref": "#/definitions/v1Time" + "isPublished": { + "type": "boolean", + "x-omitempty": false }, - "state": { - "type": "string" + "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 + } + } } } }, - "v1SpectroClusterKubeCtlRedirect": { - "description": "Active resources of tenant", - "properties": { - "redirectUri": { - "type": "string" - } - }, - "type": "object" - }, - "v1SpectroClusterLocationInputEntity": { - "description": "Cluster location", - "properties": { - "location": { - "$ref": "#/definitions/v1ClusterLocation" - } - }, - "type": "object" - }, - "v1SpectroClusterMetaSummary": { - "description": "Spectro cluster meta summary", + "v1ClusterProfileSummary": { + "description": "Cluster profile summary", + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "specSummary": { - "description": "Spectro cluster meta summary", + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", "properties": { - "archType": { - "description": "Architecture type of the cluster", - "items": { - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ], + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { "type": "string" - }, - "type": "array" + } }, - "cloudAccountUid": { - "type": "string" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "cloudRegion": { - "type": "string" + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "cloudType": { - "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" + } }, - "clusterType": { + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", "type": "string" }, - "importMode": { + "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" + } + } }, - "location": { - "$ref": "#/definitions/v1ClusterMetaSpecLocation" + "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" + } + } }, - "projectMeta": { - "$ref": "#/definitions/v1ProjectMeta" + "version": { + "description": "Cluster profile's latest version", + "type": "string" }, - "tags": { + "versions": { + "description": "Cluster profile's list of all the versions", + "type": "array", "items": { - "type": "string" - }, - "type": "array" + "description": "Cluster profile with version", + "properties": { + "uid": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } } - }, - "type": "object" + } }, "status": { - "description": "Spectro cluster meta status summary", + "description": "ClusterProfileStatusSummary defines the observed state of ClusterProfile", + "type": "object", "properties": { - "cost": { - "$ref": "#/definitions/v1ClusterMetaStatusCost" - }, "fips": { - "$ref": "#/definitions/v1ClusterFips" + "description": "Cluster profile fips compliance status", + "properties": { + "mode": { + "type": "string", + "default": "none", + "enum": [ + "full", + "none", + "partial", + "unknown" + ] + } + } }, - "health": { - "$ref": "#/definitions/v1ClusterMetaStatusHealth" + "inUseClusterUids": { + "description": "Deprecated. Use inUseClusters", + "type": "array", + "items": { + "type": "string" + } }, - "state": { - "type": "string" + "inUseClusters": { + "type": "array", + "items": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } }, - "updates": { - "$ref": "#/definitions/v1ClusterMetaStatusUpdates" + "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 + } + } } } } - }, - "type": "object" + } }, - "v1SpectroClusterMetadataFilterSpec": { - "description": "Spectro cluster filter spec", + "v1ClusterProfileTemplate": { + "description": "ClusterProfileTemplate contains details of a clusterprofile definition", + "type": "object", "properties": { - "environment": { + "cloudType": { "type": "string" }, - "includeVirtual": { - "default": false, - "type": "boolean" - }, - "isAlloy": { - "default": false, - "description": "isAlloy is renamed to isImported", - "type": "boolean" - }, - "isImportReadOnly": { - "default": true, - "type": "boolean" - }, - "isImported": { - "default": false, - "type": "boolean" - }, "name": { - "$ref": "#/definitions/v1FilterString" - }, - "state": { "type": "string" - } - } - }, - "v1SpectroClusterMetadataSpec": { - "description": "Spectro cluster metadata spec", - "properties": { - "filter": { - "$ref": "#/definitions/v1SpectroClusterMetadataFilterSpec" - }, - "sort": { - "enum": [ - "environment", - "state", - "name" - ], - "type": "string", - "x-nullable": true - } - } - }, - "v1SpectroClusterMetrics": { - "description": "Spectro cluster metrics", - "properties": { - "cpu": { - "$ref": "#/definitions/v1ComputeMetrics" - }, - "memory": { - "$ref": "#/definitions/v1ComputeMetrics" - } - } - }, - "v1SpectroClusterMigration": { - "description": "Spectro cluster migration status", - "properties": { - "database": { - "$ref": "#/definitions/v1MgmtMigrationStatuses" - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "tenant": { - "$ref": "#/definitions/v1SpectroTenantMigration" - } - }, - "type": "object" - }, - "v1SpectroClusterNotifications": { - "description": "Spectro cluster notifications", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1SpectroClusterOidcClaims": { - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1SpectroClusterOidcSpec": { - "properties": { - "clientId": { - "type": "string", - "x-omitempty": false - }, - "clientSecret": { - "type": "string", - "x-omitempty": false - }, - "issuerUrl": { - "description": "the issuer is the URL identifier for the service", - "type": "string", - "x-omitempty": false - }, - "requiredClaims": { - "$ref": "#/definitions/v1SpectroClusterOidcClaims" }, - "scopes": { - "items": { - "type": "string" - }, + "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", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1SpectroClusterPackCondition": { - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" + "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": { + "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" }, - "type": { - "enum": [ - "ReadyForInstall", - "Installed", - "Ready", - "Error", - "UpgradeAvailable", - "WaitingForOtherLayers" - ], - "type": "string" - } - }, - "type": "object" - }, - "v1SpectroClusterPackConfigList": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1PackConfig" - }, + "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", - "uniqueItems": true - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1SpectroClusterPackDiff": { - "description": "Cluster pack difference", - "properties": { - "current": { - "$ref": "#/definitions/v1PackRef" - }, - "diffConfigKeys": { "items": { - "type": "string" - }, - "type": "array" + "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" + } + } + } }, - "target": { - "$ref": "#/definitions/v1PackRef" - } - }, - "type": "object" - }, - "v1SpectroClusterPackProperties": { - "description": "Cluster pack properties response", - "properties": { - "yaml": { - "type": "string", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1SpectroClusterPackStatusEntity": { - "properties": { - "condition": { - "$ref": "#/definitions/v1SpectroClusterPackCondition", - "description": "Pack deployment status conditions" + "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" }, - "endTime": { - "$ref": "#/definitions/v1Time", - "description": "Pack deployment end time" + "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" + } + } }, - "name": { - "description": "Pack name", + "type": { "type": "string" }, - "profileUid": { - "description": "Cluster profile uid", + "uid": { "type": "string" }, - "startTime": { - "$ref": "#/definitions/v1Time", - "description": "Pack deployment start time" - }, - "type": { - "$ref": "#/definitions/v1PackType" - }, "version": { - "description": "pack version", - "type": "string" - } - }, - "type": "object" - }, - "v1SpectroClusterPacksEntity": { - "description": "Cluster entity for pack refs validate", - "properties": { - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" + "description": "Deprecated. Use profileVersion", + "type": "integer", + "format": "int32" } - }, - "type": "object" + } }, - "v1SpectroClusterPacksStatusEntity": { + "v1ClusterProfileTemplateDraft": { + "description": "Cluster profile template spec", + "type": "object", "properties": { + "cloudType": { + "type": "string" + }, "packs": { + "description": "Cluster profile packs array", + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1SpectroClusterPackStatusEntity" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1SpectroClusterPolicies": { - "description": "Cluster policies", - "properties": { - "backupPolicy": { - "$ref": "#/definitions/v1ClusterBackupConfig" + "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" + } + } + } }, - "scanPolicy": { - "$ref": "#/definitions/v1ClusterComplianceScheduleConfig" + "type": { + "type": "string", + "default": "cluster", + "enum": [ + "cluster", + "infra", + "add-on", + "system" + ] } - }, - "type": "object" + } }, - "v1SpectroClusterProfile": { - "description": "Cluster profile response", + "v1ClusterProfileTemplateImportEntity": { + "description": "Cluster profile import template", + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "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" + } + } + } }, - "spec": { - "$ref": "#/definitions/v1SpectroClusterProfileSpec" + "type": { + "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", + "type": "string" } - }, - "type": "object" + } }, - "v1SpectroClusterProfileEntity": { - "description": "Cluster profile request payload", + "v1ClusterProfileTemplateMeta": { + "description": "Cluster profile template meta information", + "type": "object", "properties": { - "packValues": { + "cloudType": { + "type": "string" + }, + "name": { + "description": "Cluster profile name", + "type": "string" + }, + "packs": { "description": "Cluster profile packs array", - "items": { - "$ref": "#/definitions/v1PackValuesEntity" - }, "type": "array", - "uniqueItems": true + "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" + } + } + } }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", + "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" } - }, - "type": "object" - }, - "v1SpectroClusterProfileList": { - "properties": { - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfile" - }, - "type": "array" - } - }, - "required": [ - "profiles" - ], - "type": "object" + } }, - "v1SpectroClusterProfileSpec": { - "description": "Cluster profile spec response", + "v1ClusterProfileTemplateSummary": { + "description": "Cluster profile template summary", + "type": "object", "properties": { "cloudType": { - "description": "Cluster profile cloud type", "type": "string" }, "packs": { - "description": "Cluster profile packs array", - "items": { - "$ref": "#/definitions/v1ClusterProfilePacksEntity" - }, "type": "array", - "uniqueItems": true - }, - "relatedObject": { - "$ref": "#/definitions/v1ObjectReference", - "description": "RelatedObject refers to the type of object(clustergroup, cluster or edgeHost) the cluster profile is associated with" + "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": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", "type": "string" - }, - "version": { - "description": "Cluster profile version", - "format": "int32", - "type": "integer" } - }, - "type": "object" + } }, - "v1SpectroClusterProfileUpdates": { + "v1ClusterProfileTemplateUpdate": { + "description": "Cluster profile template update spec", + "type": "object", "properties": { - "profiles": { - "items": { - "$ref": "#/definitions/v1ClusterProfileTemplate" - }, + "packs": { + "description": "Cluster profile packs array", "type": "array", - "uniqueItems": true + "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" + ] } - }, - "type": "object" + } }, - "v1SpectroClusterProfileValidatorResponse": { + "v1ClusterProfileUpdateEntity": { + "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" + } + } + } + } + }, + "v1ClusterProfileValidatorResponse": { "description": "Cluster profile validator response", + "type": "object", "properties": { "packs": { - "$ref": "#/definitions/v1ConstraintValidatorResponse" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" + "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" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1SpectroClusterProfiles": { + "v1ClusterProfileVersion": { + "description": "Cluster profile with version", "properties": { - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" + "uid": { + "type": "string" }, - "spcApplySettings": { - "$ref": "#/definitions/v1SpcApplySettings" + "version": { + "type": "string" } - }, + } + }, + "v1ClusterProfiles": { + "type": "object", "required": [ - "profiles" + "items" ], - "type": "object" - }, - "v1SpectroClusterProfilesDeleteEntity": { "properties": { - "profileUids": { - "description": "Cluster's profile uid list", - "items": { - "type": "string" - }, + "items": { "type": "array", - "uniqueItems": true + "uniqueItems": true, + "items": { + "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 + } + } + } + } + } + }, + "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" + } }, - "v1SpectroClusterProfilesPacksManifests": { + "v1ClusterProfilesFilterSpec": { + "description": "Spectro cluster filter summary spec", "properties": { - "profiles": { + "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": { - "$ref": "#/definitions/v1ClusterProfilePacksManifests" - }, - "type": "array" + "properties": { + "field": { + "type": "string", + "enum": [ + "profileName", + "environment", + "profileType", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true + }, + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } + } + } } - }, + } + }, + "v1ClusterProfilesMetadata": { + "type": "object", "required": [ - "profiles" + "items" ], - "type": "object" - }, - "v1SpectroClusterProfilesParamReferenceEntity": { - "description": "Cluster profiles param reference entity", "properties": { - "references": { - "items": { - "type": "string" - }, + "items": { "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "v1SpectroClusterProfilesResolvedValues": { - "description": "Cluster profiles resolved values response", - "properties": { - "profiles": { + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1ProfileResolvedValues" - }, - "type": "array", - "uniqueItems": true + "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" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1SpectroClusterProjectCleanedResource": { - "description": "List of cleaned project spectro cluster resources", + "v1ClusterProfilesSummary": { + "type": "object", + "required": [ + "items" + ], "properties": { - "resources": { + "items": { + "type": "array", + "uniqueItems": true, "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1SpectroClusterProjectCleanupValidateEntity": { - "description": "Cluster duration thresholds", - "properties": { - "deletingClusterDurationThresholdInMin": { - "format": "int32", - "type": "integer" + "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 + } + } + } + } + } + } + } }, - "provisioningClusterDurationThresholdInMin": { - "format": "int32", - "type": "integer" + "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" + } }, - "v1SpectroClusterRate": { - "description": "Cluster estimated rate information", + "v1ClusterProxySpec": { + "description": "cluster proxy config spec", + "type": "object", "properties": { - "machinePools": { - "items": { - "$ref": "#/definitions/v1MachinePoolRate" - }, - "type": "array" + "caContainerMountPath": { + "description": "Location to mount Proxy CA cert inside container", + "type": "string" }, - "name": { + "caHostPath": { + "description": "Location for Proxy CA cert on host nodes", "type": "string" }, - "rate": { - "$ref": "#/definitions/v1TotalClusterRate" + "httpProxy": { + "description": "URL for HTTP requests unless overridden by NoProxy", + "type": "string" }, - "resourceMetadata": { - "$ref": "#/definitions/v1CloudResourceMetadata" + "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" + } }, - "v1SpectroClusterRepave": { - "description": "Spectro cluster repave status information", + "v1ClusterRbac": { + "description": "Cluster RBAC role binding defintion", + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1SpectroClusterRepaveSpec" + "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": { - "$ref": "#/definitions/v1SpectroClusterRepaveStatus" + "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" + } }, - "v1SpectroClusterRepaveReason": { - "description": "Cluster repave reason description", + "v1ClusterRbacBinding": { + "description": "Cluster RBAC binding", + "type": "object", "properties": { - "code": { + "namespace": { "type": "string" }, - "message": { - "type": "string" + "role": { + "description": "Cluster role ref", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "Role", + "ClusterRole" + ] + }, + "name": { + "type": "string" + } + } }, - "pack": { - "$ref": "#/definitions/v1SpectroClusterPackDiff" - } - }, - "type": "object" - }, - "v1SpectroClusterRepaveSpec": { - "properties": { - "reasons": { - "description": "Spectro cluster repave reasons", + "subjects": { + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1SpectroClusterRepaveReason" - }, - "type": "array" - }, - "source": { - "$ref": "#/definitions/v1ClusterRepaveSource" - }, - "spectroClusterUid": { - "type": "string" - } - }, - "type": "object" - }, - "v1SpectroClusterRepaveStatus": { - "properties": { - "message": { - "type": "string" - }, - "repaveTransitionTime": { - "$ref": "#/definitions/v1Time" + "description": "Cluster role ref", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "User", + "Group", + "ServiceAccount" + ] + } + } + } }, - "state": { - "$ref": "#/definitions/v1ClusterRepaveState" + "type": { + "type": "string", + "enum": [ + "RoleBinding", + "ClusterRoleBinding" + ] } - }, - "type": "object" + } }, - "v1SpectroClusterRepaveValidationResponse": { - "description": "Cluster repave validation response", + "v1ClusterRbacEntity": { "properties": { - "isRepaveRequired": { - "description": "If true then the pack changes can cause cluster repave", - "type": "boolean", - "x-omitempty": false - }, - "reasons": { + "clusterRbac": { + "description": "Cluster RBAC role bindings", + "type": "array", "items": { - "$ref": "#/definitions/v1SpectroClusterRepaveReason" - }, - "type": "array" + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } } - }, - "type": "object" + } }, - "v1SpectroClusterRevision": { - "description": "Revision specification details for a cluster", + "v1ClusterRbacInputEntity": { + "description": "Cluster RBAC role binding defintion", + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "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": { - "$ref": "#/definitions/v1SpectroClusterSpec" + "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": "object" + } }, - "v1SpectroClusterRevisionMeta": { - "description": "Revision spec uid along with the creationTimestamp for the revision", + "v1ClusterRbacResourcesUpdateEntity": { + "type": "object", "properties": { - "creationTimestamp": { - "$ref": "#/definitions/v1Time" - }, - "uid": { - "description": "The unique id of the spc revision document", - "type": "string" + "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": "object" + } }, - "v1SpectroClusterRevisionMetaList": { + "v1ClusterRbacSpec": { + "description": "Cluster RBAC spec", + "type": "object", "properties": { - "spcRevisions": { + "bindings": { + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1SpectroClusterRevisionMeta" - }, - "type": "array" + "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": "object" - }, - "v1SpectroClusterSortFields": { - "enum": [ - "environment", - "clusterName", - "healthState", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "type": "string", - "x-nullable": true + } }, - "v1SpectroClusterSortSpec": { + "v1ClusterRbacStatus": { + "description": "Cluster rbac status", "properties": { - "field": { - "$ref": "#/definitions/v1SpectroClusterSortFields" - }, - "order": { - "$ref": "#/definitions/v1SortOrder" + "errors": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Cluster resource error", + "properties": { + "msg": { + "type": "string" + }, + "name": { + "type": "string" + }, + "resourceType": { + "type": "string" + } + } + } } } }, - "v1SpectroClusterSpec": { - "description": "SpectroClusterSpec defines the desired state of SpectroCluster", + "v1ClusterRbacSubjects": { + "description": "Cluster role ref", + "type": "object", "properties": { - "cloudConfigRef": { - "$ref": "#/definitions/v1ObjectReference", - "description": "CloudConfigRef point to the cloud configuration for the cluster, input by user Ref types are: AwsCloudConfig/VsphereCloudConfig/BaremetalConfig/ etc this user config will be used to generate cloud specific cluster/machine spec for cluster-api For VM, it will contain information needed to launch VMs, like cloud account, instance type For BM, it will contain actual baremetal machines" - }, - "cloudType": { + "name": { "type": "string" }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfig", - "description": "ClusterConfig is the configuration related to a general cluster. Configuration related to the health of the cluster." - }, - "clusterProfileTemplates": { - "description": "When a cluster created from a clusterprofile at t1, ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec.clusterprofileTemplate then clusterprofile may evolve to v2 at t2, but before user decide to upgrade the cluster, it will stay as it is when user decide to upgrade, clusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef", - "items": { - "$ref": "#/definitions/v1ClusterProfileTemplate" - }, - "type": "array" + "namespace": { + "type": "string" }, - "clusterType": { + "type": { + "type": "string", "enum": [ - "PureManage", - "AlloyMonitor", - "AlloyAssist", - "AlloyExtend" - ], - "type": "string" + "User", + "Group", + "ServiceAccount" + ] } - }, - "type": "object" + } }, - "v1SpectroClusterStatus": { - "description": "SpectroClusterStatus", + "v1ClusterRbacs": { + "type": "object", + "required": [ + "items" + ], "properties": { - "abortTimestamp": { - "$ref": "#/definitions/v1Time" - }, - "addOnServices": { - "items": { - "$ref": "#/definitions/v1SpectroClusterAddOnService" - }, - "type": "array" - }, - "apiEndpoints": { - "items": { - "$ref": "#/definitions/v1APIEndpoint" - }, - "type": "array" - }, - "clusterImport": { - "$ref": "#/definitions/v1ClusterImport" - }, - "conditions": { - "items": { - "$ref": "#/definitions/v1ClusterCondition" - }, - "type": "array" - }, - "fips": { - "$ref": "#/definitions/v1ClusterFips" - }, - "location": { - "$ref": "#/definitions/v1ClusterLocation" - }, - "packs": { - "items": { - "$ref": "#/definitions/v1ClusterPackStatus" - }, - "type": "array" - }, - "profileStatus": { - "$ref": "#/definitions/v1ProfileStatus" - }, - "repave": { - "$ref": "#/definitions/v1ClusterRepaveStatus" - }, - "services": { - "items": { - "$ref": "#/definitions/v1LoadBalancerService" - }, - "type": "array" - }, - "spcApply": { - "$ref": "#/definitions/v1SpcApply" - }, - "state": { - "description": "current operational state", - "type": "string" - }, - "upgrades": { + "items": { + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1Upgrades" - }, - "type": "array" - }, - "virtual": { - "$ref": "#/definitions/v1Virtual" + "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" + } }, - "v1SpectroClusterSummary": { - "description": "Spectro cluster summary", + "v1ClusterRefs": { + "description": "Cluster Object References", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "specSummary": { - "description": "Spectro cluster spec summary", - "properties": { - "archTypes": { - "description": "Architecture type of the cluster", - "items": { - "$ref": "#/definitions/v1ArchType" + "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" }, - "type": "array" - }, - "cloudAccountMeta": { - "$ref": "#/definitions/v1CloudAccountMeta" - }, - "cloudConfig": { - "$ref": "#/definitions/v1CloudConfigMeta" - }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigResponse" - }, - "clusterProfileTemplate": { - "$ref": "#/definitions/v1ClusterProfileTemplateMeta" - }, - "clusterProfileTemplates": { - "items": { - "$ref": "#/definitions/v1ClusterProfileTemplateMeta" + "name": { + "description": "Name of the referent.", + "type": "string" }, - "type": "array" - }, - "projectMeta": { - "$ref": "#/definitions/v1ProjectMeta" - } - }, - "type": "object" - }, - "status": { - "description": "Spectro cluster status summary", - "properties": { - "clusterImport": { - "$ref": "#/definitions/v1ClusterImport" - }, - "cost": { - "$ref": "#/definitions/v1ResourceCost" - }, - "fips": { - "$ref": "#/definitions/v1ClusterFips" - }, - "health": { - "$ref": "#/definitions/v1SpectroClusterHealthStatus" - }, - "hourlyRate": { - "$ref": "#/definitions/v1ResourceCost" - }, - "location": { - "$ref": "#/definitions/v1ClusterMetaSpecLocation" - }, - "metrics": { - "$ref": "#/definitions/v1SpectroClusterMetrics" - }, - "notifications": { - "$ref": "#/definitions/v1SpectroClusterNotifications" - }, - "repave": { - "$ref": "#/definitions/v1ClusterRepaveStatus" - }, - "state": { - "type": "string" - }, - "virtual": { - "$ref": "#/definitions/v1Virtual" + "uid": { + "description": "UID of the referent.", + "type": "string" + } } } } - }, - "type": "object" + } }, - "v1SpectroClusterSummarySpec": { - "description": "Spectro cluster filter summary spec", + "v1ClusterRepaveSource": { + "type": "string", + "enum": [ + "user", + "hubble", + "palette", + "stylus" + ] + }, + "v1ClusterRepaveState": { + "type": "string", + "default": "Pending", + "enum": [ + "Pending", + "Approved", + "Reverted" + ] + }, + "v1ClusterRepaveStatus": { + "description": "Cluster repave status", "properties": { - "filter": { - "$ref": "#/definitions/v1SpectroClusterFilterSpec" - }, - "sort": { - "items": { - "$ref": "#/definitions/v1SpectroClusterSortSpec" - }, - "type": "array", - "uniqueItems": true + "state": { + "type": "string", + "default": "Pending", + "enum": [ + "Pending", + "Approved", + "Reverted" + ] } } }, - "v1SpectroClusterUidStatusSummary": { - "description": "Spectro cluster status summary", + "v1ClusterResourceAllocation": { + "description": "Workspace resource allocation", "properties": { - "abortTimestamp": { - "$ref": "#/definitions/v1Time" - }, - "addOnServices": { - "items": { - "$ref": "#/definitions/v1SpectroClusterAddOnServiceSummary" - }, - "type": "array" - }, - "apiEndpoints": { - "items": { - "$ref": "#/definitions/v1APIEndpoint" - }, - "type": "array" - }, - "clusterImport": { - "$ref": "#/definitions/v1ClusterImport" - }, - "conditions": { - "items": { - "$ref": "#/definitions/v1ClusterCondition" - }, - "type": "array" - }, - "cost": { - "$ref": "#/definitions/v1ResourceCost" - }, - "fips": { - "$ref": "#/definitions/v1ClusterFips" - }, - "health": { - "$ref": "#/definitions/v1SpectroClusterHealthStatus" - }, - "hourlyRate": { - "$ref": "#/definitions/v1ResourceCost" - }, - "kubeMeta": { - "$ref": "#/definitions/v1KubeMeta" - }, - "location": { - "$ref": "#/definitions/v1ClusterMetaSpecLocation" - }, - "metrics": { - "$ref": "#/definitions/v1SpectroClusterMetrics" - }, - "notifications": { - "$ref": "#/definitions/v1SpectroClusterNotifications" - }, - "packs": { - "items": { - "$ref": "#/definitions/v1ClusterPackStatus" - }, - "type": "array" - }, - "services": { - "items": { - "$ref": "#/definitions/v1LoadBalancerService" - }, - "type": "array" + "clusterUid": { + "type": "string" }, - "spcApply": { - "$ref": "#/definitions/v1SpcApply" + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + }, + "v1ClusterResourceError": { + "description": "Cluster resource error", + "properties": { + "msg": { + "type": "string" }, - "state": { - "description": "current operational state", + "name": { "type": "string" }, - "upgrades": { + "resourceType": { + "type": "string" + } + } + }, + "v1ClusterResources": { + "type": "object", + "properties": { + "namespaces": { + "description": "Cluster namespaces", + "type": "array", "items": { - "$ref": "#/definitions/v1Upgrades" - }, - "type": "array" + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } }, - "virtual": { - "$ref": "#/definitions/v1Virtual" + "rbacs": { + "description": "Cluster RBAC role bindings", + "type": "array", + "items": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + } + } + }, + "v1ClusterResourcesEntity": { + "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 + } + } + } + } + } + } + } }, - "workspaces": { + "rbacs": { + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1ResourceReference" - }, - "type": "array" + "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" + } + } + } + } + } + } + } } } }, - "v1SpectroClusterUidSummary": { - "description": "Spectro cluster summary", + "v1ClusterRestore": { + "description": "Cluster Restore", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "description": "Spectro cluster spec summary", + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", "properties": { - "archTypes": { - "description": "Architecture types of the cluster", - "items": { - "$ref": "#/definitions/v1ArchType" - }, - "type": "array" + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "cloudConfig": { - "$ref": "#/definitions/v1CloudConfigMeta" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "cloudaccount": { - "$ref": "#/definitions/v1CloudAccountMeta" + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "clusterProfileTemplate": { - "$ref": "#/definitions/v1ClusterProfileTemplateMeta" + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "clusterProfileTemplates": { - "items": { - "$ref": "#/definitions/v1ClusterProfileTemplateMeta" - }, - "type": "array" + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } - }, - "type": "object" + } + }, + "spec": { + "description": "Cluster Restore Spec", + "properties": { + "clusterUid": { + "type": "string" + } + } }, "status": { - "$ref": "#/definitions/v1SpectroClusterUidStatusSummary" - } - }, - "type": "object" - }, - "v1SpectroClusterUidUpgrades": { - "description": "Cluster status upgrades", - "properties": { - "upgrades": { - "items": { - "$ref": "#/definitions/v1Upgrades" - }, - "type": "array" + "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" + } }, - "v1SpectroClusterVMCloneEntity": { + "v1ClusterRestoreConfig": { + "description": "Cluster restore config", + "required": [ + "backupRequestUid", + "backupName", + "destinationClusterUid" + ], "properties": { - "annotationFilters": { - "description": "Annotation filters", - "items": { - "type": "string" - }, - "type": "array" + "backupName": { + "type": "string" }, - "cloneName": { - "description": "Cloning Virtual machine's name", + "backupRequestUid": { "type": "string" }, - "labelFilters": { - "description": "Label filters", + "destinationClusterUid": { + "type": "string" + }, + "includeClusterResources": { + "type": "boolean" + }, + "includeNamespaces": { + "type": "array", + "uniqueItems": true, "items": { "type": "string" - }, - "type": "array" + } }, - "newMacAddresses": { - "additionalProperties": { - "type": "string" - }, - "description": "NewMacAddresses manually sets that target interfaces' mac addresses. The key is the interface name and the value is the new mac address. If this field is not specified, a new MAC address will be generated automatically, as for any interface that is not included in this map", - "type": "object" + "preserveNodePorts": { + "type": "boolean" }, - "newSMBiosSerial": { - "description": "NewSMBiosSerial manually sets that target's SMbios serial. If this field is not specified, a new serial will be generated automatically.", - "type": "string" + "restorePVs": { + "type": "boolean" } - }, - "required": [ - "cloneName" - ], - "type": "object" + } }, - "v1SpectroClusterValidatorResponse": { - "description": "Cluster validator response", + "v1ClusterRestoreSpec": { + "description": "Cluster Restore Spec", "properties": { - "machinePools": { - "$ref": "#/definitions/v1ConstraintValidatorResponse" - }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileValidatorResponse" - }, - "type": "array", - "uniqueItems": true + "clusterUid": { + "type": "string" } - }, - "type": "object" + } }, - "v1SpectroClusters": { + "v1ClusterRestoreStatus": { + "description": "Cluster Restore Status", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1SpectroCluster" - }, + "clusterRestoreStatuses": { "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1SpectroClustersAgentsNotifyEntity": { - "description": "SpectroClusters for which agents has to be notified", - "properties": { - "clusterUids": { "items": { - "type": "string" - }, - "type": "array" - }, - "notifyAllClusters": { - "type": "boolean" + "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" + } + } + } } } }, - "v1SpectroClustersCostComputeSpec": { - "description": "Cluster's cost compute spec", + "v1ClusterRestoreStatusMeta": { + "description": "Cluster Restore Status Meta", "properties": { - "clusterUids": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "startTime": { - "$ref": "#/definitions/v1Time" - } - }, - "type": "object" - }, - "v1SpectroClustersHealth": { - "description": "Spectro Clusters health data", - "properties": { - "errored": { - "format": "int32", - "type": "integer", - "x-omitempty": false + "backupName": { + "type": "string" }, - "healthy": { - "format": "int32", - "type": "integer", - "x-omitempty": false + "backupRequestUid": { + "type": "string" }, - "running": { - "format": "int32", - "type": "integer", - "x-omitempty": false + "restoreRequestUid": { + "type": "string" }, - "unhealthy": { - "format": "int32", - "type": "integer", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1SpectroClustersMetadata": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1SpectroClustersMetadataSearch": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1SpectroClusterMetaSummary" - }, - "type": "array", - "uniqueItems": true + "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" + } + } }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1SpectroClustersSummary": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1SpectroClusterSummary" - }, - "type": "array", - "uniqueItems": true + "sourceClusterRef": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "state": { + "type": "string" } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1SpectroClustersUsageComputeSpec": { - "description": "Cluster's usage compute spec", + "v1ClusterRoleRef": { + "description": "Cluster role ref", + "type": "object", "properties": { - "clusterUids": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "kind": { + "type": "string", + "enum": [ + "Role", + "ClusterRole" + ] }, - "startTime": { - "$ref": "#/definitions/v1Time" + "name": { + "type": "string" } - }, - "type": "object" + } }, - "v1SpectroCoxEdgeClusterEntity": { - "description": "CoxEdge cluster request payload for create and update", + "v1ClusterScanLogKubeBench": { + "description": "Cluster compliance scan KubeBench Log", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "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": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", + "clusterUid": { "type": "string" }, - "cloudConfig": { - "$ref": "#/definitions/v1CoxEdgeClusterConfig" + "driverType": { + "type": "string" + } + } + }, + "status": { + "description": "Cluster compliance scan KubeBench Log Status", + "properties": { + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "cloudType": { + "message": { "type": "string" }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + "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" + } + } + } }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1CoxEdgeMachinePoolConfigEntity" - }, - "type": "array" + "requestUid": { + "type": "string" }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" + "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" + } + } }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" + "state": { + "type": "string" } - }, - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroCoxEdgeClusterRateEntity": { - "description": "Cox Edge cluster request payload for estimating rate", - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1CoxEdgeClusterConfig" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1CoxEdgeMachinePoolConfigEntity" - }, - "type": "array" + } } - }, - "type": "object" + } }, - "v1SpectroCustomClusterEntity": { - "description": "Custom cluster request payload for create and update", + "v1ClusterScanLogKubeHunter": { + "description": "Cluster compliance scan KubeHunter Log", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "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": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", + "clusterUid": { "type": "string" }, - "cloudConfig": { - "$ref": "#/definitions/v1CustomClusterConfig" + "driverType": { + "type": "string" + } + } + }, + "status": { + "description": "Cluster compliance scan KubeHunter Log Status", + "properties": { + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "clusterConfig": { - "$ref": "#/definitions/v1CustomClusterConfigEntity", - "description": "General cluster configuration like patching settings, namespace resource allocation, rbac" + "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" }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1CustomMachinePoolConfigEntity" - }, - "type": "array" + "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" + } + } }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" + "state": { + "type": "string" } - }, - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "type": "object" + } } - }, - "type": "object" + } }, - "v1SpectroEdgeClusterEntity": { - "description": "Edge cluster request payload for create and update", + "v1ClusterScanLogSonobuoy": { + "description": "Cluster compliance scan Sonobuoy Log", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1EdgeClusterConfig" + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigParamEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1EdgeMachinePoolConfigEntity" - }, - "type": "array" + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } - }, - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroEdgeClusterImportEntity": { - "description": "Spectro Edge cluster import request payload", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + } }, "spec": { + "description": "Cluster compliance scan logs spec", "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1ImportClusterConfig" + "clusterUid": { + "type": "string" + }, + "driverType": { + "type": "string" } - }, - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroEdgeClusterRateEntity": { - "description": "Edge cluster request payload for estimating rate", - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1EdgeClusterConfig" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1EdgeMachinePoolConfigEntity" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1SpectroEdgeNativeClusterEntity": { - "description": "EdgeNative cluster create or update request payload", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + } }, - "spec": { + "status": { + "description": "Cluster compliance scan Sonobuoy Log Status", "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1EdgeNativeClusterConfig" + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigParamEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + "message": { + "type": "string" }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1EdgeNativeMachinePoolConfigEntity" - }, - "type": "array" + "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" + } + } + } }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" + "requestUid": { + "type": "string" }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" + "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" + } } - }, - "type": "object" + } }, - "v1SpectroEdgeNativeClusterImportEntity": { - "description": "Spectro EdgeNative cluster import request payload", + "v1ClusterScanLogSyft": { + "description": "Cluster Compliance Scan Syft Log", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" - }, - "spec": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1ImportClusterConfig" + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } - }, - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroEdgeNativeClusterRateEntity": { - "description": "Edge-native cluster request payload for estimating rate", - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1EdgeNativeClusterConfig" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1EdgeNativeMachinePoolConfigEntity" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1SpectroEksClusterEntity": { - "description": "Spectro EKS cluster request payload for create and update", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + } }, "spec": { + "description": "Cluster compliance scan logs spec", "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", + "clusterUid": { "type": "string" }, - "cloudConfig": { - "$ref": "#/definitions/v1EksClusterConfig" + "driverType": { + "type": "string" + } + } + }, + "status": { + "description": "Cluster compliance scan Syft Log Status", + "properties": { + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + "location": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "fargateProfiles": { - "items": { - "$ref": "#/definitions/v1FargateProfile" - }, - "type": "array" + "message": { + "type": "string" }, - "machinepoolconfig": { + "reports": { + "type": "array", "items": { - "$ref": "#/definitions/v1EksMachinePoolConfigEntity" - }, - "type": "array" + "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" + } + } + } + } + } }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" + "requestUid": { + "type": "string" }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" + "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" } - }, - "required": [ - "cloudAccountUid", - "cloudConfig" - ], - "type": "object" + } } - }, - "type": "object" + } }, - "v1SpectroEksClusterRateEntity": { - "description": "Spectro EKS cluster request payload for estimating rate", + "v1ClusterScanTime": { + "description": "Cluster compliance scan Time", "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1EksClusterConfig" + "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" }, - "machinepoolconfig": { + "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" + } + } + }, + "v1ClusterSearchInputSpec": { + "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 + } + } + } + } + } + }, + "v1ClusterSearchInputSpecProperty": { + "properties": { + "values": { + "type": "array", "items": { - "$ref": "#/definitions/v1EksMachinePoolConfigEntity" + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "type": "array" + "x-omitempty": true } - }, - "type": "object" + } }, - "v1SpectroGcpClusterEntity": { - "description": "GCP cluster request payload for create and update", + "v1ClusterSonobuoyLogStatus": { + "description": "Cluster compliance scan Sonobuoy Log Status", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { + "actor": { + "description": "Compliance Scan actor", "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", + "actorType": { "type": "string" }, - "cloudConfig": { - "$ref": "#/definitions/v1GcpClusterConfig" - }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" + "uid": { + "type": "string" + } + } + }, + "message": { + "type": "string" + }, + "reports": { + "type": "object", + "additionalProperties": { + "description": "Compliance Scan Sonobuoy Report", + "properties": { + "fail": { + "type": "integer", + "format": "int32" }, - "type": "array" - }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" - }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" + "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" + } + } + } }, - "type": "array" + "node": { + "type": "string" + }, + "pass": { + "type": "integer", + "format": "int32" + }, + "plugin": { + "type": "string" + }, + "status": { + "type": "string" + }, + "total": { + "type": "integer", + "format": "int32" + } } - }, - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroGcpClusterImportEntity": { - "description": "Spectro GCP cluster import request payload", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + } }, - "spec": { + "requestUid": { + "type": "string" + }, + "scanTime": { + "description": "Cluster compliance scan Time", "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1ImportClusterConfig" + "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" } - }, - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroGcpClusterRateEntity": { - "description": "Gcp cluster request payload for estimating rate", - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1GcpClusterConfig" + } }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" - }, - "type": "array" + "state": { + "type": "string" } - }, - "type": "object" + } }, - "v1SpectroGenericClusterImportEntity": { - "description": "Spectro generic cluster import request payload", + "v1ClusterState": { + "type": "string", + "enum": [ + "Pending", + "Provisioning", + "Running", + "Deleting", + "Deleted", + "Error", + "Importing" + ] + }, + "v1ClusterSyftLogStatus": { + "description": "Cluster compliance scan Syft Log Status", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "spec": { + "location": { + "description": "Object identity meta", + "type": "object", "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1ImportClusterConfig" + "name": { + "type": "string" }, - "edgeConfig": { - "$ref": "#/definitions/v1ImportEdgeHostConfig" + "uid": { + "type": "string" } - }, - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroGenericClusterRateEntity": { - "description": "Generic cluster request payload for estimating rate", - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1GenericClusterConfig" + } }, - "machinepoolconfig": { + "message": { + "type": "string" + }, + "reports": { + "type": "array", "items": { - "$ref": "#/definitions/v1GenericMachinePoolConfigEntity" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1SpectroInstallerEntity": { - "description": "Spectro installer entity for create", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "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" + } + } + } + } + } }, - "spec": { + "requestUid": { + "type": "string" + }, + "scanContext": { + "description": "Compliance Scan Syft Context", "properties": { - "cloudAccountUid": { + "format": { "type": "string" }, - "privateGatewayUid": { + "labelSelector": { "type": "string" }, - "spectroClusterUid": { + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "scope": { "type": "string" } - }, - "type": "object" + } }, - "status": { - "$ref": "#/definitions/v1InstallerStatus" - } - }, - "type": "object" - }, - "v1SpectroInstallerInputEntity": { - "description": "Spectro installer entity for create", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "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" + } }, - "v1SpectroInstallerStatus": { - "description": "spectro installer status", + "v1ClusterUpgradeSettingsEntity": { "properties": { - "status": { - "$ref": "#/definitions/v1InstallerStatus" + "spectroComponents": { + "type": "string", + "enum": [ + "lock", + "unlock" + ] } - }, - "type": "object" + } }, - "v1SpectroInstallers": { - "description": "List Spectro installers", + "v1ClusterUsageSummary": { + "description": "Cluster usage summary", + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1SpectroInstallerEntity" - }, - "type": "array", - "uniqueItems": true + "cpuCores": { + "type": "number", + "x-omitempty": false }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "isAlloy": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" } - }, - "type": "object" + } }, - "v1SpectroLibvirtClusterEntity": { - "description": "Libvirt cluster request payload for create and update", + "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.", + "required": [ + "spec" + ], "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "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" }, - "spec": { + "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": { - "cloudConfig": { - "$ref": "#/definitions/v1LibvirtClusterConfig" + "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" + } }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigParamEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + "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" }, - "machinepoolconfig": { + "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": { - "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity" + "type": "string" }, - "type": "array" + "x-kubernetes-patch-strategy": "merge" }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" + "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" }, - "profiles": { + "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": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" + "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" + } + } }, - "type": "array" + "x-kubernetes-patch-merge-key": "uid", + "x-kubernetes-patch-strategy": "merge" + }, + "resourceVersion": { + "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", + "type": "string" + }, + "selfLink": { + "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "type": "string" + }, + "uid": { + "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", + "type": "string" } - }, - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroLibvirtClusterImportEntity": { - "description": "Spectro Libvirt cluster import request payload", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + } }, "spec": { + "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", + "type": "object", + "required": [ + "template" + ], "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1ImportClusterConfig" + "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } + } + } + } + } + } + } } - }, - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroLibvirtClusterRateEntity": { - "description": "libvirt cluster request payload for estimating rate", - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1LibvirtClusterConfig" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1SpectroMaasClusterEntity": { - "description": "Spectro Maas cluster request payload for create and update", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + } }, - "spec": { + "status": { + "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", + "type": "object", "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", + "conditions": { + "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", + "type": "array", + "items": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }, + "created": { + "description": "Created indicates if the virtual machine is created in the cluster", + "type": "boolean" + }, + "memoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "type": "object", + "required": [ + "claimName", + "phase" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "printableStatus": { + "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", "type": "string" }, - "cloudConfig": { - "$ref": "#/definitions/v1MaasClusterConfig" + "ready": { + "description": "Ready indicates if the virtual machine is running and ready", + "type": "boolean" }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + "restoreInProgress": { + "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", + "type": "string" }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1MaasMachinePoolConfigEntity" - }, - "type": "array" + "snapshotInProgress": { + "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", + "type": "string" }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" + "startFailure": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer", + "format": "int32" + }, + "lastFailedVMIUID": { + "type": "string" + }, + "retryAfterTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } }, - "profiles": { + "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.", + "type": "array", + "items": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" + }, + "data": { + "description": "Provides additional data in order to perform the Action", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", + "type": "string" + } + } + } + }, + "volumeRequests": { + "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", + "type": "array", "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" + "type": "object", + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } + } + } + }, + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + } + } + } }, - "type": "array" - } - }, - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroMaasClusterImportEntity": { - "description": "Spectro maas cluster import request payload", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" - }, - "spec": { - "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1ImportClusterConfig" + "x-kubernetes-list-type": "atomic" + }, + "volumeSnapshotStatuses": { + "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "enabled" + ], + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" + }, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", + "type": "string" + } + } + } } }, - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroMaasClusterRateEntity": { - "description": "Maas cluster request payload for estimating rate", - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1MaasClusterConfig" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1MaasMachinePoolConfigEntity" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1SpectroMgmt": { - "description": "Spectro management data", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1SpectroMgmtSpec" - }, - "status": { - "$ref": "#/definitions/v1SpectroMgmtStatus" + "x-nullable": true } - }, - "type": "object" + } }, - "v1SpectroMgmtSpec": { - "description": "spectro management specifications", + "v1ClusterVirtualMachineList": { + "description": "VirtualMachineList is a list of virtual machines", + "type": "object", + "required": [ + "items" + ], "properties": { - "installerMode": { + "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" }, - "spectroClusterUid": { - "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "status": { + "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", + "type": "object", + "properties": { + "conditions": { + "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", + "type": "array", + "items": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }, + "created": { + "description": "Created indicates if the virtual machine is created in the cluster", + "type": "boolean" + }, + "memoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "type": "object", + "required": [ + "claimName", + "phase" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer", + "format": "int32" + }, + "lastFailedVMIUID": { + "type": "string" + }, + "retryAfterTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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.", + "type": "array", + "items": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" + }, + "data": { + "description": "Provides additional data in order to perform the Action", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", + "type": "string" + } + } + } + }, + "volumeRequests": { + "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", + "type": "array", + "items": { + "type": "object", + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } + } + } + }, + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumeSnapshotStatuses": { + "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "enabled" + ], + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" + }, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", + "type": "string" + } + } + } + } + }, + "x-nullable": true + } + } + } }, - "targetVersion": { + "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" }, - "version": { - "type": "string" + "metadata": { + "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", + "type": "object", + "properties": { + "continue": { + "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", + "type": "string" + }, + "remainingItemCount": { + "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", + "type": "integer", + "format": "int64" + }, + "resourceVersion": { + "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", + "type": "string" + }, + "selfLink": { + "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "type": "string" + } + } } } }, - "v1SpectroMgmtStatus": { - "description": "spectro management status information", + "v1ClusterVirtualMachineSpec": { + "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", + "type": "object", + "required": [ + "template" + ], "properties": { - "appVersions": { - "items": { - "$ref": "#/definitions/v1AppVersion" - }, + "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", - "uniqueItems": true - }, - "isFailed": { - "type": "boolean", - "x-omitempty": false - }, - "lastUpdatedTime": { - "$ref": "#/definitions/v1Time" + "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" + } + } + } + } + } + } + } }, - "message": { - "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" + } + } }, - "messageLogs": { - "items": { - "type": "string" - }, - "type": "array" + "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" + } + } }, - "state": { + "runStrategy": { + "description": "Running state indicates the requested running state of the VirtualMachineInstance mutually exclusive with Running", "type": "string" }, - "upgradeHistory": { - "items": { - "$ref": "#/definitions/v1SpectroMgmtUpgrade" - }, - "type": "array", - "uniqueItems": true - } - } - }, - "v1SpectroMgmtUpgrade": { - "description": "spectro management upgrade logs", - "properties": { - "upgradeTime": { - "$ref": "#/definitions/v1Time" + "running": { + "description": "Running controls whether the associatied VirtualMachineInstance is created or not Mutually exclusive with RunStrategy", + "type": "boolean" }, - "version": { - "type": "string" + "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } + } + } + } + } + } + } } } }, - "v1SpectroMgmtUpgradePack": { - "description": "Spectro application management cluster upgrade pack information", + "v1ClusterVirtualMachineStatus": { + "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", + "type": "object", "properties": { - "diffMessage": { - "description": "Spectro application management cluster pack difference message", - "type": "string" - }, - "layer": { - "description": "Spectro application management cluster pack layer type", - "type": "string" - }, - "name": { - "description": "Spectro application management cluster pack name", - "type": "string" - }, - "registryUid": { - "description": "Spectro application management cluster pack registry unique identifier", - "type": "string" + "conditions": { + "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", + "type": "array", + "items": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } }, - "type": { - "description": "Spectro application management cluster pack type", - "type": "string" + "created": { + "description": "Created indicates if the virtual machine is created in the cluster", + "type": "boolean" }, - "uid": { - "description": "Spectro application management cluster pack unique identifier", - "type": "string" + "memoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "type": "object", + "required": [ + "claimName", + "phase" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } }, - "values": { - "description": "Spectro application management cluster pack values", + "printableStatus": { + "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", "type": "string" }, - "version": { - "description": "Spectro application management cluster pack version", - "type": "string" - } - }, - "type": "object" - }, - "v1SpectroMgmtUpgradeProfile": { - "description": "Spectro application management cluster upgrade pack information", - "properties": { - "packs": { - "description": "Spectro application management cluster upgrade packs", - "items": { - "$ref": "#/definitions/v1SpectroMgmtUpgradePack" - }, - "type": "array" + "ready": { + "description": "Ready indicates if the virtual machine is running and ready", + "type": "boolean" }, - "uid": { - "description": "Spectro application management cluster profile unique identifier", + "restoreInProgress": { + "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", "type": "string" - } - }, - "type": "object" - }, - "v1SpectroMgmtUpgradeProfiles": { - "description": "Spectro application management cluster information", - "properties": { - "profiles": { - "description": "Spectro application management cluster profiles", - "items": { - "$ref": "#/definitions/v1SpectroMgmtUpgradeProfile" - }, - "type": "array" }, - "version": { - "description": "Spectro application management cluster version", + "snapshotInProgress": { + "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", "type": "string" - } - }, - "type": "object" - }, - "v1SpectroMgmtUpgradeSpc": { - "description": "Spectro application management cluster upgrade profiles", - "properties": { - "current": { - "$ref": "#/definitions/v1SpectroMgmtUpgradeProfiles" - }, - "target": { - "$ref": "#/definitions/v1SpectroMgmtUpgradeProfiles" - } - }, - "type": "object" - }, - "v1SpectroOpenStackClusterEntity": { - "description": "OpenStack cluster request payload for create and update", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" }, - "spec": { + "startFailure": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "type": "object", "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "$ref": "#/definitions/v1OpenStackClusterConfig" + "consecutiveFailCount": { + "type": "integer", + "format": "int32" }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + "lastFailedVMIUID": { + "type": "string" }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1OpenStackMachinePoolConfigEntity" + "retryAfterTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "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.", + "type": "array", + "items": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" }, - "type": "array" - }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" - }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" + "data": { + "description": "Provides additional data in order to perform the Action", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "type": "array" + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", + "type": "string" + } } - }, - "required": [ - "cloudAccountUid", - "cloudConfig" - ], - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroOpenStackClusterImportEntity": { - "description": "Spectro OpenStack cluster import request payload", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + } }, - "spec": { - "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1ImportClusterConfig" + "volumeRequests": { + "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", + "type": "array", + "items": { + "type": "object", + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } + } + } + }, + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + } + } } }, - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroOpenStackClusterRateEntity": { - "description": "Openstack cluster request payload for estimating rate", - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1OpenStackClusterConfig" + "x-kubernetes-list-type": "atomic" }, - "machinepoolconfig": { + "volumeSnapshotStatuses": { + "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", + "type": "array", "items": { - "$ref": "#/definitions/v1OpenStackMachinePoolConfigEntity" - }, - "type": "array" + "type": "object", + "required": [ + "name", + "enabled" + ], + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" + }, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", + "type": "string" + } + } + } } }, - "type": "object" + "x-nullable": true }, - "v1SpectroTenantClusterMigration": { - "description": "Spectro tenant cluster migration status", + "v1ClusterVirtualPacksValue": { + "description": "Virtual cluster packs value", + "type": "object", "properties": { - "message": { - "type": "string" - }, - "name": { + "distroType": { "type": "string" }, - "state": { + "layer": { "type": "string" }, - "uid": { + "values": { "type": "string" } - }, - "type": "object" + } }, - "v1SpectroTenantMigration": { - "description": "Spectro tenant migration status", + "v1ClusterVirtualPacksValues": { + "description": "Virtual cluster packs values", + "type": "object", "properties": { - "clusters": { - "items": { - "$ref": "#/definitions/v1SpectroTenantClusterMigration" - }, + "packs": { "type": "array", - "uniqueItems": true - }, - "state": { - "type": "string", - "x-omitempty": false + "items": { + "description": "Virtual cluster packs value", + "type": "object", + "properties": { + "distroType": { + "type": "string" + }, + "layer": { + "type": "string" + }, + "values": { + "type": "string" + } + } + } } - }, - "type": "object" + } }, - "v1SpectroTencentClusterEntity": { - "description": "Tencent cluster request payload for create and update", + "v1ClusterWorkload": { + "description": "Cluster workload summary", + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "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": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" + "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" + ] + } + } + } + } + } }, - "cloudConfig": { - "$ref": "#/definitions/v1TencentClusterConfig" + "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" + } + } + } + } + } }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + "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" + } + } + } + } + } }, - "machinepoolconfig": { + "deployments": { + "type": "array", "items": { - "$ref": "#/definitions/v1TencentMachinePoolConfigEntity" - }, - "type": "array" + "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 + } + } + } + } + } + } + } }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" + "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" + } + } + } + } + } }, - "profiles": { + "pods": { + "type": "array", "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" + "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 + } + } + } + } + } + } + } } - }, - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "type": "object" + } } - }, - "type": "object" + } }, - "v1SpectroTencentClusterRateEntity": { - "description": "Spectro Tencent cluster request payload for estimating rate", + "v1ClusterWorkloadCondition": { + "description": "Cluster workload condition", + "type": "object", "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1TencentClusterConfig" + "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" }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1TencentMachinePoolConfigEntity" - }, - "type": "array" + "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" } - }, - "type": "object" + } }, - "v1SpectroVirtualClusterEntity": { - "description": "Spectro virtual cluster request payload for create and update", + "v1ClusterWorkloadCronJob": { + "description": "Cluster workload cronjob summary", + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { + "description": "Cluster workload metadata", + "type": "object", "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1VirtualClusterConfig" - }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1VirtualMachinePoolConfigEntity" - }, - "type": "array" + "entity": { + "description": "Cluster workload ref", + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" + "namespace": { + "type": "string" } - }, - "required": [ - "cloudType", - "clusterConfig" - ], - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroVsphereClusterEntity": { - "description": "vSphere cluster request payload for create and update", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + } }, "spec": { + "description": "Cluster workload cronjob spec", + "type": "object", "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "$ref": "#/definitions/v1VsphereClusterConfigEntity" - }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" - }, - "edgeHostUid": { - "description": "Appliance (Edge Host) uid for Edge env", + "schedule": { "type": "string" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1VsphereMachinePoolConfigEntity" - }, - "type": "array" - }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" - }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" } - }, - "required": [ - "cloudConfig" - ], - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroVsphereClusterImportEntity": { - "description": "Spectro Vsphere cluster import request payload", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + } }, - "spec": { + "status": { + "description": "Cluster workload cronjob status", + "type": "object", "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1ImportClusterConfig" + "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" } - }, - "type": "object" + } } - }, - "type": "object" + } }, - "v1SpectroVsphereClusterRateEntity": { - "description": "Vsphere cluster request payload for estimating rate", + "v1ClusterWorkloadCronJobSpec": { + "description": "Cluster workload cronjob spec", + "type": "object", "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1VsphereClusterConfigEntity" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1VsphereMachinePoolConfigEntity" - }, - "type": "array" + "schedule": { + "type": "string" } - }, - "type": "object" + } }, - "v1SpotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", + "v1ClusterWorkloadCronJobStatus": { + "description": "Cluster workload cronjob status", + "type": "object", "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" + "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" } - }, - "type": "object" + } }, - "v1SpotVMOptions": { - "description": "SpotVMOptions defines the options relevant to running the Machine on Spot VMs", + "v1ClusterWorkloadCronJobs": { + "description": "Cluster workload cronjobs summary", + "type": "object", "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" + "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" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1SsoLogin": { - "description": "Describes the allowed sso login details", + "v1ClusterWorkloadDaemonSet": { + "description": "Cluster workload daemonset summary", + "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" + "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" + } + } }, - "redirectUri": { - "description": "Describes the sso login url for the authentication", - "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" + } + } } - }, - "type": "object" - }, - "v1SsoLogins": { - "description": "Describes the allowed sso logins", - "items": { - "$ref": "#/definitions/v1SsoLogin" - }, - "type": "array", - "uniqueItems": true + } }, - "v1StorageAccount": { - "description": "Azure storage account provides a unique namespace for your Azure resources", + "v1ClusterWorkloadDaemonSetStatus": { + "description": "Cluster workload daemonset status", + "type": "object", "properties": { - "id": { - "description": "Fully qualified resource ID for the resource", - "type": "string" + "available": { + "type": "integer", + "format": "int32" }, - "kind": { - "description": "The kind of the resource", - "type": "string" + "currentScheduled": { + "type": "integer", + "format": "int32" }, - "location": { - "description": "The geo-location where the resource lives", - "type": "string" + "desiredScheduled": { + "type": "integer", + "format": "int32" }, - "name": { - "description": "The name of the resource", - "type": "string" + "misScheduled": { + "type": "integer", + "format": "int32" + }, + "ready": { + "type": "integer", + "format": "int32" + }, + "updatedScheduled": { + "type": "integer", + "format": "int32" } - }, - "type": "object" + } }, - "v1StorageAccountEntity": { - "description": "Azure storage account entity", + "v1ClusterWorkloadDaemonSets": { + "description": "Cluster workload daemonset summary", + "type": "object", "properties": { - "id": { - "description": "Azure storage account id", - "type": "string" - }, - "name": { - "description": "Azure storage account name", - "type": "string" + "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" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1StorageContainer": { - "description": "Azure storage container organizes a set of blobs, similar to a directory in a file system", + "v1ClusterWorkloadDeployment": { + "description": "Cluster workload deployment summary", + "type": "object", "properties": { - "id": { - "description": "Fully qualified resource ID for the resource.", - "type": "string" - }, - "name": { - "description": "The name of the resource", - "type": "string" + "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" + } + } }, - "type": { - "description": "The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\"", - "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 + } + } + } + } } - }, - "type": "object" + } }, - "v1StorageCost": { - "description": "Cloud storage cost", + "v1ClusterWorkloadDeploymentStatus": { + "description": "Cluster workload deployment status", + "type": "object", "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "items": { - "$ref": "#/definitions/v1StoragePrice" - }, - "type": "array" + "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 + } + } } - }, - "type": "object" + } }, - "v1StoragePrice": { - "description": "Cloud storage price within an upper limit.", + "v1ClusterWorkloadDeployments": { + "description": "Cluster workload deployments summary", + "type": "object", "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" + "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 + } + } + } + } + } + } + } } - }, - "type": "object" + } }, - "v1StorageRate": { - "description": "Storage estimated rate information", + "v1ClusterWorkloadJob": { + "description": "Cluster workload job summary", + "type": "object", "properties": { - "iops": { - "format": "float64", - "type": "number" - }, - "rate": { - "format": "float64", - "type": "number", - "x-omitempty": false - }, - "sizeGB": { - "format": "float64", - "type": "number" - }, - "throughput": { - "format": "float64", - "type": "number" + "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" + } + } }, - "type": { - "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" + } + } } - }, - "type": "object" + } }, - "v1StorageType": { - "description": "Cloud cloud Storage type details", + "v1ClusterWorkloadJobStatus": { + "description": "Cluster workload job status", + "type": "object", "properties": { - "cost": { - "$ref": "#/definitions/v1StorageCost" - }, - "iopsCost": { - "$ref": "#/definitions/v1StorageCost" + "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" }, - "kind": { - "description": "kind of storage type", - "type": "string" + "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" + } + } + } }, - "name": { - "description": "Name of the storage 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" }, - "throughputCost": { - "$ref": "#/definitions/v1StorageCost" + "succeeded": { + "type": "integer", + "format": "int32" } - }, - "type": "object" + } }, - "v1StripeKey": { - "description": "Stripe key object", + "v1ClusterWorkloadJobs": { + "description": "Cluster workload jobs summary", + "type": "object", "properties": { - "publishKey": { - "description": "Publish stripe key", - "type": "string" + "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" + } + } + } + } + } } } }, - "v1Subnet": { + "v1ClusterWorkloadMetadata": { + "description": "Cluster workload metadata", + "type": "object", "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + "entity": { + "description": "Cluster workload ref", + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "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", + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "namespace": { "type": "string" } - }, - "type": "object" + } }, - "v1Subscription": { - "description": "Azure Subscription Type", + "v1ClusterWorkloadNamespace": { + "description": "Cluster workload namespace summary", + "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" + "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" + } + } }, - "subscriptionId": { - "description": "The subscription ID", - "type": "string" + "status": { + "description": "Cluster workload namespace status", + "type": "object", + "properties": { + "phase": { + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1SyftDependency": { - "description": "Compliance Scan Syft Dependency", + "v1ClusterWorkloadNamespaceStatus": { + "description": "Cluster workload namespace status", + "type": "object", "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { + "phase": { "type": "string" } } }, - "v1SyftDependencyEntity": { - "description": "Syft dependency", + "v1ClusterWorkloadNamespaces": { + "description": "Cluster workload namespaces summary", "properties": { - "name": { - "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" + } + } + } + } + } + } + } + }, + "v1ClusterWorkloadPod": { + "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" + } + } }, - "type": { - "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" + } + } + } + } + } }, - "version": { - "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" + } + } } } }, - "v1SyftEntity": { - "description": "Syft response", + "v1ClusterWorkloadPodContainer": { + "description": "Cluster workload pod container", + "type": "object", "properties": { - "report": { - "$ref": "#/definitions/v1SyftReportEntity" - }, - "requestUid": { + "image": { "type": "string" }, - "status": { - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ], + "name": { "type": "string" - } - }, - "required": [ - "requestUid", - "status", - "report" - ] + }, + "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" + } + } + } + } + } + } }, - "v1SyftImageContext": { - "description": "Compliance Scan Syft Image Context", + "v1ClusterWorkloadPodContainerResource": { + "description": "Cluster workload pod container resource", + "type": "object", "properties": { - "containerName": { - "type": "string" + "cpu": { + "type": "integer", + "format": "int32", + "x-omitempty": false }, - "namespace": { + "cpuUnit": { "type": "string" }, - "podName": { + "memory": { + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "memoryUnit": { "type": "string" } } }, - "v1SyftReport": { - "description": "Compliance Scan Syft Report", + "v1ClusterWorkloadPodContainerResources": { + "description": "Cluster workload pod container resources", + "type": "object", "properties": { - "dependencies": { - "items": { - "$ref": "#/definitions/v1SyftDependency" - }, - "type": "array" - }, - "image": { - "type": "string" - }, - "imageContexts": { - "items": { - "$ref": "#/definitions/v1SyftImageContext" - }, - "type": "array" - }, - "isSBOMExist": { - "type": "boolean" - }, - "state": { - "type": "string" - }, - "time": { - "$ref": "#/definitions/v1Time" - }, - "vulnerabilities": { - "items": { - "$ref": "#/definitions/v1SyftVulnerability" - }, - "type": "array" + "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" + } + } }, - "vulnerabilitySummary": { - "$ref": "#/definitions/v1SyftVulnerabilitySummary" + "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" + } + } } } }, - "v1SyftReportEntity": { - "description": "Syft report", + "v1ClusterWorkloadPodContainerState": { + "description": "Cluster workload pod container state", + "type": "object", "properties": { - "batchNo": { - "format": "int32", - "type": "integer" - }, - "batchSize": { + "exitCode": { + "type": "integer", "format": "int32", - "type": "integer" + "x-omitempty": false }, - "dependencies": { - "items": { - "$ref": "#/definitions/v1SyftDependencyEntity" - }, - "type": "array" + "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" }, - "image": { + "reason": { "type": "string" }, - "imageContexts": { - "items": { - "$ref": "#/definitions/v1SyftImageContext" - }, - "type": "array" + "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" }, - "sbom": { + "state": { "type": "string" - }, - "time": { - "$ref": "#/definitions/v1Time" - }, - "vulnerabilities": { - "items": { - "$ref": "#/definitions/v1SyftVulnerabilityEntity" - }, - "type": "array" - }, - "vulnerabilitySummary": { - "$ref": "#/definitions/v1SyftVulnerabilitySummaryEntity" } } }, - "v1SyftScanContext": { - "description": "Compliance Scan Syft Context", + "v1ClusterWorkloadPodContainerStatus": { + "description": "Cluster workload pod container status", + "type": "object", "properties": { - "format": { + "image": { "type": "string" }, - "labelSelector": { + "name": { "type": "string" }, - "namespace": { - "type": "string" + "ready": { + "type": "boolean", + "x-omitempty": false }, - "podName": { - "type": "string" + "restartCount": { + "type": "integer", + "format": "int32", + "x-omitempty": false }, - "scope": { - "type": "string" + "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" + } + } } } }, - "v1SyftVulnerability": { - "description": "Compliance Scan Syft Vulnerability", + "v1ClusterWorkloadPodMetadata": { + "description": "Cluster workload pod metadata", + "type": "object", "properties": { - "fixedIn": { - "type": "string" + "associatedRefs": { + "type": "array", + "items": { + "description": "Cluster workload ref", + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } }, - "installed": { - "type": "string" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + "entity": { + "description": "Cluster workload ref", + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "severity": { + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "machineUid": { "type": "string" }, - "type": { + "namespace": { "type": "string" }, - "vulnerability": { + "nodename": { "type": "string" } } }, - "v1SyftVulnerabilityEntity": { - "description": "Syft vulnerability", + "v1ClusterWorkloadPodSpec": { + "description": "Cluster workload pod spec", + "type": "object", "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" + "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" + } + } + } + } + } + } + } }, - "name": { - "type": "string" + "volumes": { + "type": "array", + "items": { + "description": "Cluster workload pod volume", + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + }, + "v1ClusterWorkloadPodStatus": { + "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" + } + } + } + } + } }, - "severity": { + "phase": { "type": "string" }, - "type": { + "podIp": { "type": "string" }, - "vulnerability": { + "qosClass": { "type": "string" } } }, - "v1SyftVulnerabilitySummary": { - "description": "Compliance Scan Syft Vulnerability Summary", + "v1ClusterWorkloadPodVolume": { + "description": "Cluster workload pod volume", + "type": "object", "properties": { - "critical": { - "format": "int32", - "type": "integer" - }, - "high": { - "format": "int32", - "type": "integer" - }, - "low": { - "format": "int32", - "type": "integer" - }, - "medium": { - "format": "int32", - "type": "integer" - }, - "negligible": { - "format": "int32", - "type": "integer" - }, - "unknown": { - "format": "int32", - "type": "integer" + "name": { + "type": "string" } } }, - "v1SyftVulnerabilitySummaryEntity": { - "description": "Syft vulnerability summary", + "v1ClusterWorkloadPods": { + "description": "Cluster workload pods summary", "properties": { - "critical": { - "format": "int32", - "type": "integer" - }, - "high": { - "format": "int32", - "type": "integer" - }, - "low": { - "format": "int32", - "type": "integer" - }, - "medium": { - "format": "int32", - "type": "integer" - }, - "negligible": { - "format": "int32", - "type": "integer" - }, - "unknown": { - "format": "int32", - "type": "integer" + "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" + } + } + } + } + } } } }, - "v1SysLogin": { - "description": "System admin login input", + "v1ClusterWorkloadRef": { + "description": "Cluster workload ref", + "type": "object", "properties": { - "emailId": { + "kind": { "type": "string" }, - "password": { - "format": "password", + "name": { "type": "string" }, - "username": { + "uid": { "type": "string" } - }, - "type": "object" + } }, - "v1SysUserToken": { - "description": "Auth token response", + "v1ClusterWorkloadReplicaStatus": { + "description": "Cluster workload replica status", + "type": "object", "properties": { - "Authorization": { - "type": "string" - }, - "IsEmailSet": { - "type": "boolean", + "available": { + "type": "integer", + "format": "int32", "x-omitempty": false }, - "IsEmailVerified": { - "type": "boolean", + "ready": { + "type": "integer", + "format": "int32", "x-omitempty": false }, - "IsMfa": { - "type": "boolean", + "total": { + "type": "integer", + "format": "int32", "x-omitempty": false }, - "IsPasswordReset": { - "type": "boolean", + "updated": { + "type": "integer", + "format": "int32", "x-omitempty": false } - }, - "type": "object" + } }, - "v1SystemAwsAccount": { - "description": "SystemAdmin", + "v1ClusterWorkloadRoleBinding": { + "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": { - "$ref": "#/definitions/v1SystemAwsSpec" + "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" + ] + } + } } - }, - "type": "object" + } }, - "v1SystemAwsImage": { - "description": "SystemAdmin", + "v1ClusterWorkloadRoleBindings": { + "description": "Cluster workload rbac bindings summary", + "type": "object", "properties": { - "spec": { - "$ref": "#/definitions/v1SystemAwsImageSpec" + "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" + ] + } + } + } + } + } } - }, - "type": "object" + } }, - "v1SystemAwsImageSpec": { - "description": "system aws account specifications", + "v1ClusterWorkloadSpec": { + "description": "Cluster workload spec", + "type": "object", "properties": { - "goldenImageRegion": { - "type": "string" + "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 + } + } + } + } + } + } + } } } }, - "v1SystemAwsSpec": { - "description": "system aws account specifications", + "v1ClusterWorkloadStatefulSet": { + "description": "Cluster workload statefulset summary", + "type": "object", "properties": { - "accessKey": { - "type": "string" + "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" + } + } }, - "secretKey": { - "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 + } + } + } + } } } }, - "v1SystemAwsStsAccount": { - "description": "System AWS Gov account specifications", + "v1ClusterWorkloadStatefulSetStatus": { + "description": "Cluster workload statefulset status", + "type": "object", "properties": { - "accessKey": { - "type": "string" - }, - "accountId": { - "type": "string" - }, - "secretKey": { - "type": "string" + "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 + } + } } } }, - "v1SystemAzureAccount": { - "description": "SystemAdmin", + "v1ClusterWorkloadStatefulSets": { + "description": "Cluster workload statefulsets summary", + "type": "object", "properties": { - "spec": { - "$ref": "#/definitions/v1SystemAzureSpec" + "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 + } + } + } + } + } + } + } } - }, - "type": "object" + } }, - "v1SystemAzureSpec": { - "description": "system azure account specifications", + "v1ClusterWorkloadsFilter": { + "description": "Cluster workloads filter", + "type": "object", "properties": { - "clientId": { - "type": "string" - }, - "clientSecret": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "tenantId": { - "type": "string" + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } } } }, - "v1SystemAzureStorage": { - "description": "SystemAdmin", + "v1ClusterWorkloadsSpec": { + "description": "Cluster workloads spec", + "type": "object", "properties": { - "spec": { - "$ref": "#/definitions/v1SystemAzureStorageSpec" + "filter": { + "description": "Cluster workloads filter", + "type": "object", + "properties": { + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } } - }, - "type": "object" + } }, - "v1SystemAzureStorageSpec": { - "description": "system aws account specifications", + "v1ClustersInfo": { + "description": "Active clusters information", + "type": "object", "properties": { - "accessKey": { - "type": "string" + "clustersMeta": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Active cluster meta", + "type": "object", + "properties": { + "cloudType": { + "type": "string" + }, + "clusterType": { + "type": "string" + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "duration": { + "type": "string" + }, + "name": { + "type": "string" + }, + "projectName": { + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "Pending", + "Provisioning", + "Running", + "Deleting", + "Deleted", + "Error", + "Importing" + ] + }, + "uid": { + "type": "string" + } + } + } }, - "container": { - "type": "string" + "totalActiveClusters": { + "type": "number", + "format": "int64" }, - "storageName": { - "type": "string" - } - } - }, - "v1SystemBackupConfigSpec": { - "description": "system backup config spec", - "properties": { - "ftp": { - "$ref": "#/definitions/v1SystemFtpSpec" + "totalActiveGreenFieldClusters": { + "type": "number", + "format": "int64" }, - "hourOfTheDay": { - "type": "integer", - "x-omitempty": false + "totalActiveImportedClusters": { + "type": "number", + "format": "int64" }, - "interval": { - "type": "integer", - "x-omitempty": false + "totalClustersDeleted": { + "type": "number", + "format": "int64" }, - "retentionPeriod": { - "type": "integer", - "x-omitempty": false + "totalClustersDeployed": { + "type": "number", + "format": "int64" } - }, - "type": "object" + } }, - "v1SystemBackupFtpConfigSpec": { - "description": "system backup config spec", + "v1ComplianceScanConfig": { + "description": "Compliance Scan config", "properties": { - "backupSpec": { - "$ref": "#/definitions/v1SystemBackupSpec" - }, - "ftp": { - "$ref": "#/definitions/v1SystemFtpSpec" + "schedule": { + "description": "Cluster feature schedule", + "properties": { + "scheduledRunTime": { + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1SystemBackupS3ConfigSpec": { - "description": "system backup config spec", + "v1ComplianceScanDriverSpec": { + "description": "Compliance Scan driver spec", "properties": { - "backupSpec": { - "$ref": "#/definitions/v1SystemBackupSpec" + "config": { + "description": "Compliance Scan config", + "properties": { + "schedule": { + "description": "Cluster feature schedule", + "properties": { + "scheduledRunTime": { + "type": "string" + } + } + } + } }, - "s3": { - "$ref": "#/definitions/v1SystemS3Spec" + "isClusterConfig": { + "type": "boolean" } - }, - "type": "object" + } }, - "v1SystemBackupSpec": { - "description": "system backup config spec", + "v1ComputeMetrics": { + "description": "Compute metrics", + "type": "object", "properties": { - "hourOfTheDay": { - "type": "integer", - "x-omitempty": false + "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" }, - "interval": { - "type": "integer", + "limit": { + "type": "number", "x-omitempty": false }, - "retentionPeriod": { - "type": "integer", + "request": { + "type": "number", "x-omitempty": false - } - }, - "type": "object" - }, - "v1SystemCertificateSpec": { - "description": "system smtp config spec", - "properties": { - "caCert": { - "type": "string" - }, - "crt": { - "type": "string" }, - "insecureSkipVerify": { - "type": "boolean" + "total": { + "type": "number", + "x-omitempty": false }, - "key": { + "unit": { "type": "string" - } - }, - "type": "object" - }, - "v1SystemConfigAuth": { - "description": "System config auth", - "properties": { - "enforceServiceAuthToken": { - "type": "boolean", - "x-omitempty": false }, - "enforceTlsVerify": { - "type": "boolean", + "usage": { + "type": "number", "x-omitempty": false } } }, - "v1SystemConfigCluster": { - "description": "System config cluster", + "v1ComputeRate": { + "description": "Compute estimated rate information", + "type": "object", "properties": { - "stableEndpointAccess": { - "type": "boolean", + "rate": { + "type": "number", + "format": "float64", "x-omitempty": false + }, + "type": { + "type": "string" } } }, - "v1SystemConfigDomainSpec": { - "description": "system domain config spec", + "v1ConfigReverseProxy": { + "description": "Describes the reverse proxy configuration", "properties": { - "apiServer": { - "type": "string" - }, - "derivedApiServer": { + "caCert": { + "description": "Describes the ca certificate for system's reverse proxy", "type": "string" }, - "derivedRootDomain": { + "clientCert": { + "description": "Describes the client certificate for system's reverse proxy", "type": "string" }, - "rootDomain": { + "clientKey": { + "description": "Describes the client certificate key for system's reverse proxy", "type": "string" }, - "urlProtocol": { - "type": "string" - } - }, - "type": "object" - }, - "v1SystemConfigStoreEntity": { - "properties": { - "key": { - "type": "string", - "x-omitempty": false + "port": { + "description": "Describes the system's reverse proxy server port", + "type": "integer" }, - "value": { + "protocol": { + "description": "Describes the system's reverse proxy server protocol. Possible values [https, http]", "type": "string", - "x-omitempty": false - } - }, - "required": [ - "key", - "value" - ], - "type": "object" - }, - "v1SystemCryptoData": { - "description": "SystemAdmin", - "properties": { - "input": { - "type": "string" - }, - "result": { - "type": "string" - } - }, - "type": "object" - }, - "v1SystemCryptoInput": { - "description": "SystemAdmin", - "properties": { - "input": { - "type": "string" - } - }, - "type": "object" - }, - "v1SystemEdgeImage": { - "description": "SystemAdmin", - "properties": { - "spec": { - "$ref": "#/definitions/v1SystemEdgeImageSpec" - } - }, - "type": "object" - }, - "v1SystemEdgeImageSpec": { - "description": "system edge account specifications", - "properties": { - "caCert": { - "type": "string" + "enum": [ + "http", + "https" + ] }, - "imagesHostEndpoint": { + "server": { + "description": "Describes the system's reverse proxy server", "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" } } }, - "v1SystemEdgeNativeImage": { - "description": "SystemAdmin", - "properties": { - "spec": { - "$ref": "#/definitions/v1SystemEdgeNativeImageSpec" - } - }, - "type": "object" - }, - "v1SystemEdgeNativeImageSpec": { - "description": "system edge-native account specifications", + "v1ConstraintError": { + "type": "object", "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { + "code": { "type": "string" }, - "insecureSkipVerify": { - "type": "boolean" - }, - "stylusImagesEndpoint": { + "message": { "type": "string" } } }, - "v1SystemFtpSpec": { - "description": "system ftp config spec", - "properties": { - "dir": { - "type": "string", - "x-omitempty": false - }, - "password": { - "type": "string", - "x-omitempty": false - }, - "server": { - "type": "string", - "x-omitempty": false - }, - "username": { - "type": "string", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1SystemGcpAccount": { - "description": "SystemAdmin", - "properties": { - "spec": { - "$ref": "#/definitions/v1SystemGcpSpec" - } - }, - "type": "object" - }, - "v1SystemGcpImage": { - "description": "SystemAdmin", - "properties": { - "spec": { - "$ref": "#/definitions/v1SystemGcpImageSpec" - } - }, - "type": "object" - }, - "v1SystemGcpImageSpec": { - "description": "system gcp account specifications", + "v1ConstraintValidatorResponse": { + "description": "Constraint validator response", + "type": "object", "properties": { - "imageProject": { - "type": "string" + "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" + } + } + } } } }, - "v1SystemGcpSpec": { - "description": "system gcp account specifications", + "v1ConstraintValidatorResult": { + "description": "Constraint validator result", + "type": "object", "properties": { - "json": { + "displayName": { + "type": "string" + }, + "errors": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "name": { "type": "string" } } }, - "v1SystemGitAuthSpec": { - "description": "system git auth account specifications", + "v1ControlPlaneEndPoint": { + "type": "object", "properties": { - "_type": { + "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" }, - "password": { + "host": { + "description": "IP or FQDN(External/DDNS)", "type": "string" }, - "token": { + "type": { + "description": "VIP or External", + "type": "string", + "enum": [ + "VIP", + "External", + "DDNS" + ] + } + } + }, + "v1ControlPlaneHealthCheckTimeoutEntity": { + "type": "object", + "properties": { + "controlPlaneHealthCheckTimeout": { + "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes", "type": "string" - }, - "username": { - "$ref": "#/definitions/v1SystemGitAuthSpec" } } }, - "v1SystemGithubSsoSpec": { - "description": "system sso github config spec", + "v1CoxEdgeAccount": { + "description": "CoxEdge cloud account information", + "type": "object", "properties": { - "clientId": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - "clientSecretKey": { + "kind": { + "description": "Deprecated. Cloud type of the account.", "type": "string" }, - "isEnabled": { - "type": "boolean" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "logoUrl": { - "type": "string", - "x-omitempty": false + "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" + } }, - "v1SystemKubectlSpec": { - "description": "system web kubectl config spec", + "v1CoxEdgeAccounts": { + "type": "object", + "required": [ + "items" + ], "properties": { - "endpoint": { - "type": "string" + "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" + } + } + } + } + } }, - "isEnabled": { - "type": "boolean" + "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" + } }, - "v1SystemLibvirtImage": { - "description": "SystemAdmin", + "v1CoxEdgeBaseUrls": { + "description": "List of CoxEdge base urls", + "type": "object", + "required": [ + "baseUrls" + ], "properties": { - "spec": { - "$ref": "#/definitions/v1SystemLibvirtImageSpec" + "baseUrls": { + "type": "array", + "items": { + "type": "string" + } } - }, - "type": "object" + } }, - "v1SystemLibvirtImageSpec": { - "description": "system libvirt account specifications", + "v1CoxEdgeCloudAccount": { + "description": "CoxEdge cloud account", + "type": "object", + "required": [ + "apiBaseUrl", + "apiKey" + ], "properties": { - "caCert": { + "apiBaseUrl": { + "description": "The base url - used to make api calls", "type": "string" }, - "imagesHostEndpoint": { + "apiKey": { + "description": "CoxEdge cloud account ApiKey", "type": "string" }, - "insecureSkipVerify": { - "type": "boolean" - } - } - }, - "v1SystemLoggerSpec": { - "description": "system logger config spec", - "properties": { - "format": { + "environment": { + "description": "The environment belonging to the organization", "type": "string" }, - "level": { + "organizationId": { + "description": "The Id of organization", + "type": "string" + }, + "service": { + "description": "The service for which the organization is allowed to provision resources", "type": "string" } - }, - "type": "object" + } }, - "v1SystemMaasImage": { - "description": "SystemAdmin", + "v1CoxEdgeCloudClusterConfigEntity": { + "description": "CoxEdge cloud cluster config entity", + "type": "object", "properties": { - "spec": { - "$ref": "#/definitions/v1SystemMaasImageSpec" + "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": "object" + } }, - "v1SystemMaasImageSpec": { - "description": "system maas account specifications", + "v1CoxEdgeCloudConfig": { + "description": "CoxEdgeCloudConfig is the Schema for the coxedgecloudconfigs API", + "type": "object", "properties": { - "caCert": { + "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" }, - "imagesHostEndpoint": { + "kind": { + "description": "Cloud type of the cloud config", "type": "string" }, - "insecureSkipVerify": { - "type": "boolean" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "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" + } + } } } }, - "v1SystemOciImageRegistry": { - "description": "system web kubectl config spec", + "v1CoxEdgeCloudConfigSpec": { + "description": "CoxEdgeCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "type": "object", "properties": { - "baseContentPath": { - "type": "string" - }, - "caCert": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - }, - "mirrorRegistries": { - "type": "string" - }, - "name": { - "type": "string" + "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" + } + } }, - "password": { - "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" + } + } + } }, - "username": { - "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" + } + } + } } - }, - "type": "object" + } }, - "v1SystemOidcClaims": { + "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", + "type": "object", "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false + "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" + } + } + } }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false + "imageID": { + "description": "For mold controller to identify if is there any changes in Pack", + "type": "string" } - }, - "type": "object" + } }, - "v1SystemOidcClientSpec": { - "description": "system sso oidc config spec", + "v1CoxEdgeClusterConfig": { + "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools", + "type": "object", + "required": [ + "sshAuthorizedKeys", + "coxEdgeLoadBalancerConfig" + ], "properties": { - "callbackUrl": { - "type": "string", - "x-omitempty": false - }, - "clientId": { - "type": "string", - "x-omitempty": false - }, - "clientSecret": { - "type": "string", - "x-omitempty": false - }, - "isEnabled": { - "type": "boolean", - "x-omitempty": false + "coxEdgeLoadBalancerConfig": { + "description": "CoxEdge loadbalancer config", + "type": "object", + "properties": { + "pops": { + "description": "CoxEdge PoPs - geographical location for the loadbalancer", + "type": "array", + "items": { + "type": "string" + } + } + } }, - "issuerUrl": { - "description": "the issuer is the URL identifier for the service", - "type": "string", - "x-omitempty": false + "coxEdgeWorkerLoadBalancerConfig": { + "description": "CoxEdge loadbalancer config", + "type": "object", + "properties": { + "pops": { + "description": "CoxEdge PoPs - geographical location for the loadbalancer", + "type": "array", + "items": { + "type": "string" + } + } + } }, - "logoUrl": { - "type": "string", - "x-omitempty": false + "environment": { + "type": "string" }, - "requiredClaims": { - "$ref": "#/definitions/v1SystemOidcClaims" + "organizationId": { + "type": "string" }, - "scopes": { + "sshAuthorizedKeys": { + "description": "CoxEdge ssh authorized keys", + "type": "array", "items": { "type": "string" - }, - "type": "array", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1SystemOpenstackImage": { - "description": "SystemAdmin", - "properties": { - "spec": { - "$ref": "#/definitions/v1SystemOpenstackImageSpec" + } } - }, - "type": "object" + } }, - "v1SystemOpenstackImageSpec": { - "description": "system openstack account specifications", + "v1CoxEdgeCredentials": { + "description": "CoxEdge credentials to get organizations", + "type": "object", "properties": { - "imagesHostEndpoint": { + "apiBaseUrl": { + "description": "CoxEdge baseUrl - for api calls", + "type": "string" + }, + "apiKey": { + "description": "CoxEdge ApiKey - secret for api calls", "type": "string" } } }, - "v1SystemPasswordPolicySpec": { - "description": "system password policy", + "v1CoxEdgeDeployment": { "properties": { - "creationTimestamp": { - "$ref": "#/definitions/v1Time" - }, - "expiryDurationInDays": { - "type": "integer" - }, - "firstReminderInDays": { - "type": "integer" + "cpuUtilization": { + "type": "integer", + "format": "int32" }, - "isRegex": { + "enableAutoScaling": { "type": "boolean" }, - "minLength": { - "type": "integer" - }, - "minNumOfBlockLetters": { - "type": "integer" - }, - "minNumOfDigits": { - "type": "integer" + "instancesPerPop": { + "type": "integer", + "format": "int32" }, - "minNumOfSmallLetters": { - "type": "integer" + "maxInstancesPerPop": { + "type": "integer", + "format": "int32" }, - "minNumOfSpecialCharacters": { - "type": "integer" + "minInstancesPerPop": { + "type": "integer", + "format": "int32" }, - "regex": { + "name": { "type": "string" }, - "reminderFrequency": { - "type": "integer" - }, - "updateTimestamp": { - "$ref": "#/definitions/v1Time" - } - }, - "type": "object" - }, - "v1SystemPlan": { - "description": "system plan", - "properties": { - "freeCredits": { - "items": { - "$ref": "#/definitions/v1SystemPlanCredit" - }, - "type": "array" - }, - "planLimit": { - "$ref": "#/definitions/v1SystemPlanLimit" - }, - "slaCredits": { + "pops": { + "type": "array", "items": { - "$ref": "#/definitions/v1SystemPlanCredit" - }, - "type": "array" - }, - "systemStartDate": { - "$ref": "#/definitions/v1Time" + "type": "string" + } } } }, - "v1SystemPlanCredit": { - "description": "Plan Credit", + "v1CoxEdgeEnvironment": { + "description": "CoxEdge environment entity", + "type": "object", "properties": { - "cpuCoreHours": { - "format": "int64", - "type": "number", - "x-omitempty": false - }, - "creditUid": { + "id": { + "description": "CoxEdge environment id", "type": "string" }, - "expiry": { - "$ref": "#/definitions/v1Time", - "description": "credit expiry time" + "isDeleted": { + "description": "CoxEdge environment state", + "type": "boolean" }, "name": { - "type": "string" - }, - "start": { - "$ref": "#/definitions/v1Time", - "description": "credit start time" - }, - "type": { - "enum": [ - "Pure", - "Alloy" - ], + "description": "CoxEdge environment name", "type": "string" } - }, + } + }, + "v1CoxEdgeEnvironments": { + "description": "List of CoxEdge environments", + "type": "object", "required": [ - "type" - ] + "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" + } + } + } + } + } }, - "v1SystemPlanLimit": { - "description": "System Monthly Plan Limit", + "v1CoxEdgeEnvironmentsRequest": { + "description": "Request payload to get CoxEdge environments", + "type": "object", "properties": { - "alloy": { - "$ref": "#/definitions/v1SystemPlanLimitSpec" - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false + "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" + } + } }, - "pure": { - "$ref": "#/definitions/v1SystemPlanLimitSpec" + "organizationId": { + "description": "CoxEdge organizationId", + "type": "string" } } }, - "v1SystemPlanLimitSpec": { - "description": "Monthly Plan Limit spec", + "v1CoxEdgeInstanceTypes": { + "description": "List of CoxEdge instance types", + "type": "object", "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "format": "int64", - "type": "integer", - "x-omitempty": false - }, - "overageLimitPercentage": { - "default": 25, - "description": "overage limit in percentage", - "format": "int8", - "type": "integer", - "x-omitempty": false + "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" + } + } + } + } + } + }, + "v1CoxEdgeLoadBalancerConfig": { + "description": "CoxEdge loadbalancer config", + "type": "object", + "properties": { + "pops": { + "description": "CoxEdge PoPs - geographical location for the loadbalancer", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1CoxEdgeLoadPersistentStorage": { + "description": "CoxEdge load persistent storage", + "type": "object", + "properties": { + "path": { + "description": "Coxedge load persistent storage path", + "type": "string" }, - "warnLimitPercentage": { - "default": 90, - "description": "warning limit in percentage", - "format": "int8", + "size": { + "description": "Coxedge load persistent storage size", "type": "integer", - "x-omitempty": false + "format": "int64" } } }, - "v1SystemPlanLimitUpdate": { - "description": "System Plan limit change update entity", + "v1CoxEdgeMachine": { + "description": "CoxEdge cloud VM definition", + "type": "object", "properties": { - "planLimit": { - "$ref": "#/definitions/v1SystemPlanLimit" + "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" + } + } + } + } } } }, - "v1SystemProductUsage": { - "description": "Yearly usage", + "v1CoxEdgeMachinePoolCloudConfigEntity": { + "type": "object", "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "format": "int64", - "type": "number" + "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" + } + } + } + } }, - "breachedCredits": { - "description": "Credits exceeded the allocated and free credits", - "format": "float64", - "type": "number" + "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" + } + } + } }, - "freeSlaCredits": { - "description": "Free allocated SLA credits", - "format": "int64", - "type": "number" + "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" + } + } + } }, - "usedCredits": { - "description": "Used credits", - "format": "float64", - "type": "number" + "spec": { + "type": "string" } } }, - "v1SystemProxySpec": { - "description": "system proxy config spec", + "v1CoxEdgeMachinePoolConfig": { + "type": "object", + "required": [ + "isControlPlane" + ], "properties": { - "httpProxy": { + "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" }, - "httpsProxy": { - "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" }, - "noProxy": { + "spec": { "type": "string" - } - }, - "type": "object" - }, - "v1SystemRateLimit": { - "description": "system rate-limit", - "properties": { - "isActive": { + }, + "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" } } }, - "v1SystemRegistry": { - "description": "Registry configuration", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1RegistryConf" - } - }, - "type": "object" - }, - "v1SystemResourceLimit": { + "v1CoxEdgeMachinePoolConfigEntity": { + "type": "object", + "required": [ + "cloudConfig" + ], "properties": { - "kind": { - "$ref": "#/definitions/v1ResourceLimitType", - "type": "string", - "x-omitempty": false + "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" + } + } }, - "limit": { - "format": "int64", - "type": "number", - "x-omitempty": false + "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 + } + } } } }, - "v1SystemResourceLimits": { - "description": "System resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.", + "v1CoxEdgeMachineSpec": { + "description": "CoxEdge cloud VM definition spec", + "type": "object", "properties": { - "resources": { - "items": { - "$ref": "#/definitions/v1SystemResourceLimit" - }, + "addAnycastIpAddress": { + "type": "boolean" + }, + "deployments": { "type": "array", - "uniqueItems": true - } - } - }, - "v1SystemRetentionPolicy": { - "description": "system retention policy", - "properties": { - "retentionPeriod": { - "type": "integer", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1SystemReverseProxy": { - "description": "system config reverse proxy", - "properties": { - "caCert": { - "type": "string" + "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" + } + } + } + } }, - "clientCert": { + "image": { "type": "string" }, - "clientKey": { - "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" + } + } + } }, - "port": { - "type": "integer" + "ports": { + "type": "array", + "items": { + "description": "CoxEdge network port", + "type": "object", + "properties": { + "protocol": { + "type": "string" + }, + "publicPort": { + "type": "string" + }, + "publicPortDesc": { + "type": "string" + } + } + } }, - "protocol": { - "enum": [ - "http", - "https" - ], + "providerId": { "type": "string" }, - "server": { + "specs": { "type": "string" }, - "vHostPort": { - "type": "integer" + "sshAuthorizedKeys": { + "type": "array", + "items": { + "type": "string" + } } } }, - "v1SystemS3Spec": { - "description": "system backup s3 storage config spec", + "v1CoxEdgeMachines": { + "description": "CoxEdge machine list", + "type": "object", + "required": [ + "items" + ], "properties": { - "accessKey": { - "type": "string", - "x-omitempty": false - }, - "bucket": { - "type": "string", - "x-omitempty": false - }, - "folder": { - "type": "string", - "x-omitempty": false - }, - "region": { - "type": "string", - "x-omitempty": false + "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" + } + } + } + } + } + } + } }, - "secretKey": { - "type": "string", - "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 + } + } } - }, - "type": "object" + } }, - "v1SystemScarSpec": { - "description": "system scar config spec", + "v1CoxEdgeOrganization": { + "description": "CoxEdge Organization entity", + "type": "object", "properties": { - "baseContentPath": { - "type": "string" - }, - "caCert": { - "type": "string" - }, - "endpoint": { + "id": { + "description": "CoxEdge organization id", "type": "string" }, - "insecureVerify": { + "isDeleted": { + "description": "CoxEdge organization state", "type": "boolean" }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - } - }, - "type": "object" - }, - "v1SystemScarValidationResponse": { - "description": "system proxy config spec", - "properties": { - "spectroVersion": { + "name": { + "description": "CoxEdge organization name", "type": "string" } - }, - "type": "object" + } }, - "v1SystemSecurityMode": { - "description": "System service mode", + "v1CoxEdgeOrganizations": { + "description": "List of CoxEdge organizations", + "type": "object", + "required": [ + "organizations" + ], "properties": { - "securityMode": { - "type": "string" + "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" + } + } + } } } }, - "v1SystemServiceLogin": { - "description": "System service login input", + "v1CoxEdgePort": { + "description": "CoxEdge network port", + "type": "object", "properties": { - "authToken": { - "description": "authToken helps in two step verification for the authorization.", - "type": "string" - }, - "isSystem": { - "type": "boolean" - }, - "overlordUid": { - "type": "string" - }, - "serviceName": { - "type": "string" - }, - "serviceVersion": { + "protocol": { "type": "string" }, - "spectroClusterUid": { + "publicPort": { "type": "string" }, - "tenantUid": { + "publicPortDesc": { "type": "string" } - }, - "type": "object" + } }, - "v1SystemSmtpSpec": { - "description": "system smtp config spec", + "v1CoxEdgeRegion": { + "description": "CoxEdge region entity", + "type": "object", "properties": { - "fromEmailId": { - "type": "string" - }, - "insecureSkipVerifyTls": { - "type": "boolean" - }, - "password": { + "code": { + "description": "Code of the CoxEdge region", "type": "string" }, - "smtpPort": { - "type": "integer" - }, - "smtpServer": { - "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" + } + } }, - "userName": { + "name": { + "description": "Name of the CoxEdge region", "type": "string" } - }, - "type": "object" + } }, - "v1SystemSsoAuthSpec": { - "description": "system sso config spec", + "v1CoxEdgeRegions": { + "description": "List of CoxEdge regions", + "type": "object", + "required": [ + "regions" + ], "properties": { - "github": { - "$ref": "#/definitions/v1SystemGithubSsoSpec" - }, - "oidcAuthSpecs": { - "additionalProperties": { - "$ref": "#/definitions/v1SystemOidcClientSpec" - }, - "type": "object" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1SystemSsoSpec": { - "description": "system sso config spec", + "v1CoxEdgeSecurityGroupRule": { "properties": { - "acsUrlRoot": { - "type": "string" - }, - "acsUrlScheme": { - "type": "string" - }, - "apiVersion": { - "type": "string" + "action": { + "type": "string", + "enum": [ + "block", + "allow" + ] }, - "audienceUrl": { + "description": { "type": "string" }, - "authSpec": { - "$ref": "#/definitions/v1SystemSsoAuthSpec" - }, - "entityId": { + "portRange": { "type": "string" - } - }, - "type": "object" - }, - "v1SystemStartDate": { - "description": "system start date", - "properties": { - "systemStartDate": { - "$ref": "#/definitions/v1Time" - } - } - }, - "v1SystemStorageS3ConfigSpec": { - "description": "system storage s3 config spec", - "properties": { - "isEnabled": { - "type": "boolean" }, - "retentionPolicy": { - "$ref": "#/definitions/v1SystemRetentionPolicy" + "protocol": { + "type": "string", + "enum": [ + "TCP", + "UDP", + "TCP_UDP", + "ESP", + "AH", + "ICMP", + "GRE" + ] }, - "s3": { - "$ref": "#/definitions/v1SystemS3Spec" - } - }, - "type": "object" - }, - "v1SystemTencentAccount": { - "description": "SystemAdmin", - "properties": { - "spec": { - "$ref": "#/definitions/v1SystemTencentSpec" - } - }, - "type": "object" - }, - "v1SystemTencentSpec": { - "description": "system tencent account specifications", - "properties": { - "secretId": { + "source": { "type": "string" }, - "secretKey": { + "type": { "type": "string" } } }, - "v1SystemTimeseriesMetrics": { - "description": "system timeseries metrics config", + "v1CoxEdgeService": { + "description": "CoxEdge service entity", + "type": "object", "properties": { - "archivalInterval": { - "type": "integer" - }, - "batchInterval": { - "type": "integer" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false + "code": { + "description": "CoxEdge service code", + "type": "string" }, - "retentionPeriod": { - "type": "integer" - } - }, - "type": "object" - }, - "v1SystemTimeseriesSpec": { - "description": "system timeseries config spec", - "properties": { - "machine": { - "$ref": "#/definitions/v1SystemTimeseriesMetrics" + "id": { + "description": "CoxEdge service id", + "type": "string" }, - "pod": { - "$ref": "#/definitions/v1SystemTimeseriesMetrics" + "name": { + "description": "CoxEdge service name", + "type": "string" } - }, - "type": "object" + } }, - "v1SystemUsage": { - "description": "System usage billing object", + "v1CoxEdgeServices": { + "description": "List of CoxEdge services", + "type": "object", + "required": [ + "services" + ], "properties": { - "planLimit": { - "$ref": "#/definitions/v1PlanLimit" - }, - "usageBillingPeriod": { - "$ref": "#/definitions/v1InvoiceBillingPeriod" - }, - "yearlyUsages": { - "description": "List of every year system usage", - "items": { - "$ref": "#/definitions/v1YearlyUsage" - }, + "services": { "type": "array", - "uniqueItems": true + "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" + } + } + } } } }, - "v1SystemUserMe": { - "description": "User information wrt permissions", + "v1CustomAccount": { + "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": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1SystemUserSpec" + "type": "object", + "required": [ + "credentials" + ], + "properties": { + "credentials": { + "description": "Cloud account credentials", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } }, "status": { - "$ref": "#/definitions/v1SystemUserMeStatus" + "description": "Status of the account", + "type": "object", + "properties": { + "state": { + "description": "Cloud account status", + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1SystemUserMeStatus": { - "description": "User status with permissions", + "v1CustomAccountEntity": { + "description": "Custom account information", + "type": "object", "properties": { - "isEmailSet": { - "type": "boolean", - "x-omitempty": false - }, - "isEmailVerified": { - "type": "boolean", - "x-omitempty": false - }, - "isMfaEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "isPasswordReset": { - "type": "boolean", - "x-omitempty": false - }, - "lastEmailUpdateTime": { - "$ref": "#/definitions/v1Time" - }, - "lastEmailVerifiedTime": { - "$ref": "#/definitions/v1Time" - }, - "lastLoginTime": { - "$ref": "#/definitions/v1Time" + "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" + } + } }, - "lastPasswordUpdateTime": { - "$ref": "#/definitions/v1Time" + "spec": { + "type": "object", + "required": [ + "credentials" + ], + "properties": { + "credentials": { + "description": "Cloud account credentials", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } } } }, - "v1SystemUserSpec": { - "description": "User specifications", + "v1CustomAccounts": { + "type": "object", + "required": [ + "items" + ], "properties": { - "emailId": { - "description": "System User's email id", - "type": "string" + "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 + } + } } } }, - "v1SystemVersionInfo": { - "description": "system version info", + "v1CustomCloudAccount": { + "type": "object", + "required": [ + "credentials" + ], "properties": { - "version": { - "type": "string" + "credentials": { + "description": "Cloud account credentials", + "type": "object", + "additionalProperties": { + "type": "string" + } } - }, - "type": "object" + } }, - "v1SystemVsphereImage": { - "description": "SystemAdmin", + "v1CustomCloudClusterConfigEntity": { + "description": "Custom cloud cluster config entity", + "type": "object", "properties": { - "spec": { - "$ref": "#/definitions/v1SystemVsphereImageSpec" + "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": "object" + } }, - "v1SystemVsphereImageSpec": { - "description": "system vsphere account specifications", + "v1CustomCloudConfig": { + "description": "CustomCloudConfig is the Schema for the custom cloudconfigs API", + "type": "object", "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { + "kind": { + "description": "Cloud type of the cloud config", "type": "string" }, - "insecureSkipVerify": { - "type": "boolean" - }, - "overlordOvaLocation": { - "type": "string" - } - } - }, - "v1TagFilter": { - "description": "Tag Filter create spec", - "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1TagFilterSpec" - } - }, - "type": "object" - }, - "v1TagFilterGroup": { - "properties": { - "conjunction": { - "$ref": "#/definitions/v1SearchFilterConjunctionOperator" - }, - "filters": { - "items": { - "$ref": "#/definitions/v1TagFilterItem" - }, - "type": "array", - "uniqueItems": true + "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" + } + } + } + } + } } } }, - "v1TagFilterItem": { + "v1CustomCloudConfigSpec": { + "description": "CustomCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "type": "object", "properties": { - "key": { - "type": "string" - }, - "negation": { - "type": "boolean" + "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" + } + } }, - "operator": { - "$ref": "#/definitions/v1SearchFilterKeyValueOperator" + "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" + } + } }, - "values": { - "items": { - "type": "string" - }, + "machinePoolConfig": { "type": "array", - "uniqueItems": true + "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" + } + } + } } } }, - "v1TagFilterSpec": { - "description": "Filter create spec", - "properties": { - "filterGroup": { - "$ref": "#/definitions/v1TagFilterGroup" - } - }, - "type": "object" - }, - "v1TagFilterSummary": { - "description": "Filter summary object", + "v1CustomCloudMetaEntity": { + "description": "Custom cloud meta entity", + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1TagFilterSpec" + "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" + } + } } - }, - "type": "object" + } }, - "v1Taint": { - "description": "Taint", + "v1CustomCloudMetaSpecEntity": { + "description": "Custom cloud spec response entity", + "type": "object", "properties": { - "effect": { + "cloudCategory": { + "description": "Cloud category description", + "type": "string", + "default": "cloud", "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ], - "type": "string" + "datacenter", + "cloud", + "edge" + ] }, - "key": { - "description": "The taint key to be applied to a node", + "displayName": { + "description": "Custom cloud displayName", "type": "string" }, - "timeAdded": { - "$ref": "#/definitions/v1Time" + "isManaged": { + "description": "If the custom cloud is a managed cluster", + "type": "boolean" }, - "value": { - "description": "The taint value corresponding to the taint key.", + "logo": { + "description": "Custom cloud logo", "type": "string" } - }, - "type": "object" + } }, - "v1Team": { - "description": "Team information", + "v1CustomCloudRateConfig": { + "description": "Private cloud rate config", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1TeamSpec" + "cloudType": { + "type": "string" }, - "status": { - "$ref": "#/definitions/v1TeamStatus" + "rateConfig": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } } - }, - "type": "object" - }, - "v1TeamPatch": { - "items": { - "$ref": "#/definitions/v1HttpPatch" - }, - "type": "array" + } }, - "v1TeamRoleMap": { + "v1CustomCloudRequestEntity": { + "description": "Custom cloud request entity", + "type": "object", "properties": { - "roles": { - "items": { - "type": "string" - }, - "type": "array" + "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" + } + } }, - "teamId": { - "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" + } + } } } }, - "v1TeamSpec": { - "description": "Team specifications", + "v1CustomCloudSpecEntity": { + "description": "Custom cloud request entity spec", + "type": "object", "properties": { - "roles": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "cloudCategory": { + "description": "Cloud category description", + "type": "string", + "default": "cloud", + "enum": [ + "datacenter", + "cloud", + "edge" + ] }, - "sources": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "displayName": { + "description": "Custom cloud displayName", + "type": "string" }, - "users": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "isControlPlaneManaged": { + "description": "If the custom cloud is a managed cluster", + "type": "boolean" + }, + "logo": { + "description": "Custom cloud logo", + "type": "string" } } }, - "v1TeamSpecSummary": { + "v1CustomCloudType": { + "type": "object", "properties": { - "emailId": { + "cloudCategory": { + "description": "Cloud category description", + "type": "string", + "default": "cloud", + "enum": [ + "datacenter", + "cloud", + "edge" + ] + }, + "cloudFamily": { + "description": "Cloud grouping as family", "type": "string" }, - "projects": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" + "displayName": { + "description": "Custom cloudtype displayName", + "type": "string" }, - "roles": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" + "isCustom": { + "description": "If it is a custom cloudtype", + "type": "boolean", + "x-omitempty": false }, - "users": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1TeamStatus": { - "description": "Team status", - "type": "object" - }, - "v1TeamSummary": { - "description": "Team summary", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "isManaged": { + "description": "If custom cloudtype is managed", + "type": "boolean", + "x-omitempty": false }, - "spec": { - "$ref": "#/definitions/v1TeamSpecSummary" + "isVertex": { + "description": "If cloud is support for Vertex env", + "type": "boolean", + "x-omitempty": false }, - "status": { - "$ref": "#/definitions/v1TeamStatus" - } - }, - "type": "object" - }, - "v1TeamSummarySortFields": { - "enum": [ - "name", - "creationTimestamp" - ], - "type": "string", - "x-nullable": true - }, - "v1TeamSummarySortSpec": { - "properties": { - "field": { - "$ref": "#/definitions/v1TeamSummarySortFields" + "logo": { + "description": "Custom cloudtype logo", + "type": "string" }, - "order": { - "$ref": "#/definitions/v1SortOrder" + "name": { + "description": "Custom cloudtype name", + "type": "string" } } }, - "v1TeamTenantRolesEntity": { - "properties": { - "roles": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1TeamTenantRolesUpdate": { + "v1CustomCloudTypeCloudAccountKeys": { + "description": "Custom cloudType custom cloud account keys", + "type": "object", "properties": { - "roles": { + "keys": { + "description": "Array of custom cloud type cloud account keys", + "type": "array", "items": { "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1Teams": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1Team" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + } } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1TeamsBatch": { - "items": { - "$ref": "#/definitions/v1Team" - }, - "type": "array", - "uniqueItems": true + } }, - "v1TeamsFilterSpec": { - "description": "Teams filter spec", + "v1CustomCloudTypeContentResponse": { + "description": "Custom cloudType content response", + "type": "object", "properties": { - "name": { - "$ref": "#/definitions/v1FilterString" + "yaml": { + "description": "custom cloud type content", + "type": "string" } } }, - "v1TeamsMetadata": { + "v1CustomCloudTypes": { + "description": "Custom cloudType content response", + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1ObjectEntity" - }, + "cloudTypes": { + "description": "Array of custom cloud types", "type": "array", - "uniqueItems": true - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1TeamsSummary": { - "description": "Deprecated, Use v1UsersSummaryList - Returns User summary", - "properties": { - "items": { "items": { - "$ref": "#/definitions/v1TeamSummary" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "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" + } + } + } } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1TeamsSummaryList": { - "description": "Returns Team summary", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1TeamSummary" - }, - "type": "array", - "uniqueItems": true - } - }, + "v1CustomClusterConfig": { + "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools", + "type": "object", "required": [ - "items" + "values" ], - "type": "object" - }, - "v1TeamsSummarySpec": { - "description": "Teams filter summary spec", "properties": { - "filter": { - "$ref": "#/definitions/v1TeamsFilterSpec" - }, - "sort": { - "items": { - "$ref": "#/definitions/v1TeamSummarySortSpec" - }, - "type": "array", - "uniqueItems": true + "values": { + "description": "YAML string for Cluster and CloudCluster", + "type": "string" } } }, - "v1Tenant": { - "description": "Tenant", + "v1CustomClusterConfigEntity": { + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "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" + } + } }, - "spec": { - "$ref": "#/definitions/v1TenantSpec" + "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" + } + } + } + } }, - "status": { - "$ref": "#/definitions/v1TenantStatus" + "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" + } + } + } + } + } + } + } + } + } } - }, - "type": "object" + } }, - "v1TenantActivate": { - "description": "Activate/Deactivate tenant", + "v1CustomInstanceType": { + "type": "object", "properties": { - "isActive": { - "default": true, - "type": "boolean" + "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" } - }, - "type": "object" + } }, - "v1TenantActivity": { - "description": "Active tenant and clusters data", + "v1CustomMachine": { + "description": "Custom cloud VM definition", + "type": "object", "properties": { - "clustersInfo": { - "$ref": "#/definitions/v1ClustersInfo" - }, - "org": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - "planType": { + "kind": { + "description": "Deprecated. Cloud type of the machine.", "type": "string" }, - "totalProjects": { - "format": "int64", - "type": "number" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "totalUsers": { - "format": "int64", - "type": "number" + "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" + } + } }, - "uid": { - "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" + } + } + } + } + } + } + }, + "v1CustomMachinePoolBaseConfigEntity": { + "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" + } }, - "users": { - "items": { - "$ref": "#/definitions/v1UserActivityInfo" - }, + "isControlPlane": { + "description": "Whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false + }, + "taints": { + "description": "Master or worker taints", "type": "array", - "uniqueItems": true + "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": "object" + } }, - "v1TenantAddressPatch": { - "description": "Tenant Address", + "v1CustomMachinePoolCloudConfigEntity": { + "type": "object", "properties": { - "address": { - "$ref": "#/definitions/v1Address" + "values": { + "description": "Machine pool configuration as yaml content", + "type": "string" } - }, - "type": "object" + } }, - "v1TenantAssetCert": { - "description": "tenant cert", + "v1CustomMachinePoolConfig": { + "type": "object", + "required": [ + "isControlPlane" + ], "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "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 }, - "spec": { - "$ref": "#/definitions/v1Cert" + "values": { + "description": "YAML string for machine", + "type": "string" } - }, - "type": "object" + } }, - "v1TenantAssetCerts": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1TenantAssetCert" - }, - "type": "array", - "uniqueItems": true - } - }, + "v1CustomMachinePoolConfigEntity": { + "type": "object", "required": [ - "items" + "cloudConfig" ], - "type": "object" - }, - "v1TenantBasicEntity": { - "description": "Tenant Basic param", "properties": { - "emailId": { - "type": "string" + "cloudConfig": { + "type": "object", + "properties": { + "values": { + "description": "Machine pool configuration as yaml content", + "type": "string" + } + } }, - "orgName": { - "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": "object" + } }, - "v1TenantCleanUpStatus": { - "description": "Tenant CleanUp Status", + "v1CustomMachineSpec": { + "description": "Custom cloud VM definition spec", "properties": { - "cleanUpError": { + "cloudType": { "type": "string" }, - "cleanUpStages": { + "hostName": { "type": "string" }, - "cleanUpTimestamp": { - "$ref": "#/definitions/v1Time" + "imageId": { + "type": "string" }, - "cleanedResources": { - "items": { - "type": "string" - }, - "type": "array" + "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" + } + } }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false + "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" + } + } + } }, - "isInProgress": { - "type": "boolean", - "x-omitempty": false - } - }, - "type": "object" - }, - "v1TenantClusterSettings": { - "properties": { - "nodesAutoRemediationSetting": { - "$ref": "#/definitions/v1NodesAutoRemediationSettings" + "sshKeyName": { + "type": "string" } } }, - "v1TenantContractSpec": { - "description": "Tenant contract settings", - "properties": { - "acceptedTime": { - "$ref": "#/definitions/v1Time", - "description": "If the contract is accepted offline, set the accepted time" - }, - "isAccepted": { - "description": "If the contract is accepted offline, then set this field to true", - "type": "boolean" - }, - "isRequired": { - "description": "Is the contract required, for on-prem installation it will be false", - "type": "boolean" - } - }, + "v1CustomMachines": { + "description": "List of Custom machines", + "type": "object", "required": [ - "isRequired", - "isAccepted" + "items" ], - "type": "object" - }, - "v1TenantDomains": { - "description": "Tenant domains", "properties": { - "domains": { - "items": { - "type": "string" - }, + "items": { "type": "array", - "uniqueItems": true + "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" + } }, - "v1TenantEmailPatch": { - "description": "Tenant EmailId", + "v1CustomNic": { + "description": "Custom network interface", + "type": "object", "properties": { - "emailId": { + "index": { + "type": "integer", + "format": "int8" + }, + "networkName": { "type": "string" - } - }, - "type": "object" - }, - "v1TenantEnableClusterGroup": { - "description": "Enable or Disable cluster group for a tenant", - "properties": { - "hideSystemClusterGroups": { - "type": "boolean", - "x-omitempty": false }, - "isClusterGroupEnabled": { - "description": "Deprecated. Use hideSystemClusterGroups field", - "type": "boolean", - "x-omitempty": false + "privateIPs": { + "type": "array", + "items": { + "type": "string" + } + }, + "publicIp": { + "type": "string" } } }, - "v1TenantEntity": { - "description": "Tenant Entity", + "v1DashboardWorkspace": { + "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": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1TenantSpecEntity" - } - }, - "type": "object" - }, - "v1TenantFreemium": { - "description": "Tenant freemium configuration", - "properties": { - "activeClustersLimit": { - "type": "integer", - "x-omitempty": false - }, - "isFreemium": { - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "type": "boolean", - "x-omitempty": false - }, - "overageUsageLimit": { - "format": "float64", - "type": "number", - "x-omitempty": false + "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 + } + } + } + } + } + } }, - "totalUsageLimit": { - "format": "float64", - "type": "number", - "x-omitempty": false + "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 + } + } + } + } + } + } } } }, - "v1TenantFreemiumUsage": { + "v1DashboardWorkspaceAllocation": { + "description": "Workspace allocation", "properties": { - "isFreemium": { - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "type": "boolean", - "x-omitempty": false - }, - "limit": { - "$ref": "#/definitions/v1FreemiumUsageLimit" + "cpu": { + "description": "Workspace resource allocation", + "properties": { + "allocated": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "usage": { + "type": "number", + "format": "float64", + "x-omitempty": false + } + } }, - "usage": { - "$ref": "#/definitions/v1FreemiumUsage" + "memory": { + "description": "Workspace resource allocation", + "properties": { + "allocated": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "usage": { + "type": "number", + "format": "float64", + "x-omitempty": false + } + } } - }, - "type": "object" + } }, - "v1TenantOidcClaims": { + "v1DashboardWorkspaceClusterRef": { + "description": "Workspace cluster reference", "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false + "name": { + "type": "string" }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false + "uid": { + "type": "string" } - }, - "type": "object" + } }, - "v1TenantOidcClientSpec": { - "description": "Tenant", + "v1DashboardWorkspaceMeta": { + "description": "Deprecated. Workspace meta data", "properties": { - "callbackUrl": { - "type": "string", - "x-omitempty": false - }, - "clientId": { - "type": "string", - "x-omitempty": false - }, - "clientSecret": { - "type": "string", - "x-omitempty": false - }, - "defaultTeams": { + "clusterNames": { + "description": "Deprecated. Use clusterRefs", + "type": "array", + "uniqueItems": true, "items": { "type": "string" - }, - "type": "array", - "x-omitempty": false - }, - "isSsoEnabled": { - "type": "boolean", - "x-omitempty": false + } }, - "issuerUrl": { - "description": "the issuer is the URL identifier for the service", - "type": "string", - "x-omitempty": false + "clusterRefs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster reference", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } }, - "logoutUrl": { + "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", - "x-omitempty": false + "format": "date-time" }, - "requiredClaims": { - "$ref": "#/definitions/v1TenantOidcClaims" + "name": { + "type": "string" }, - "scopes": { + "namespaces": { + "type": "array", + "uniqueItems": true, "items": { "type": "string" - }, - "type": "array", - "x-omitempty": false - }, - "scopesDelimiter": { - "type": "string", - "x-omitempty": false + } }, - "syncSsoTeams": { - "type": "boolean", - "x-omitempty": false + "uid": { + "type": "string" } - }, - "type": "object" + } }, - "v1TenantPasswordPolicyEntity": { - "description": "Tenant Password Policy Entity", + "v1DashboardWorkspaceNamespaceAllocation": { + "description": "Workspace namespace allocation", "properties": { - "creationTimestamp": { - "$ref": "#/definitions/v1Time" - }, - "expiryDurationInDays": { - "type": "integer" - }, - "firstReminderInDays": { - "type": "integer" - }, - "isRegex": { - "type": "boolean" - }, - "minLength": { - "type": "integer" - }, - "minNumOfBlockLetters": { - "type": "integer" - }, - "minNumOfDigits": { - "type": "integer" - }, - "minNumOfSmallLetters": { - "type": "integer" - }, - "minNumOfSpecialCharacters": { - "type": "integer" - }, - "regex": { + "name": { "type": "string" }, - "updateTimestamp": { - "$ref": "#/definitions/v1Time" + "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 + } + } + } + } } - }, - "type": "object" + } }, - "v1TenantResourceLimit": { + "v1DashboardWorkspaceQuota": { + "description": "Workspace resource quota", "properties": { - "kind": { - "$ref": "#/definitions/v1ResourceLimitType", - "type": "string" - }, - "label": { - "type": "string" + "resourceAllocation": { + "description": "Workspace quota resource allocation", + "properties": { + "cpu": { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true + }, + "memory": { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true + } + } + } + } + }, + "v1DashboardWorkspaceQuotaResourceAllocation": { + "description": "Workspace quota resource allocation", + "properties": { + "cpu": { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true }, - "limit": { - "format": "int64", + "memory": { "type": "number", - "x-omitempty": false + "minimum": 0, + "exclusiveMinimum": true } } }, - "v1TenantResourceLimitEntity": { + "v1DashboardWorkspaceResourceAllocation": { + "description": "Workspace resource allocation", "properties": { - "kind": { - "$ref": "#/definitions/v1ResourceLimitType", - "type": "string", + "allocated": { + "type": "number", + "format": "float64", "x-omitempty": false }, - "limit": { - "format": "int64", + "usage": { "type": "number", + "format": "float64", "x-omitempty": false } } }, - "v1TenantResourceLimits": { - "description": "Tenant resource limits", + "v1DashboardWorkspaceSpec": { + "description": "Workspace spec summary", "properties": { - "resources": { + "clusterRefs": { + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1TenantResourceLimit" - }, + "description": "Workspace cluster reference", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "namespaces": { "type": "array", - "uniqueItems": true + "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 + } + } + } + } } } }, - "v1TenantResourceLimitsEntity": { - "description": "Tenant resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.", + "v1DashboardWorkspaceStatus": { + "description": "Workspace status", "properties": { - "resources": { - "items": { - "$ref": "#/definitions/v1TenantResourceLimitEntity" - }, + "namespaces": { "type": "array", - "uniqueItems": true + "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 + } + } + } + } } } }, - "v1TenantSamlRequestSpec": { - "description": "Tenant", + "v1DashboardWorkspaces": { + "type": "object", + "required": [ + "items" + ], "properties": { - "attributes": { - "items": { - "$ref": "#/definitions/v1TenantSamlSpecAttribute" - }, - "type": "array" - }, - "defaultTeams": { - "items": { - "type": "string" - }, - "type": "array" - }, - "federationMetadata": { - "type": "string" - }, - "identityProvider": { + "cpuUnit": { "type": "string" }, - "isSingleLogoutEnabled": { - "type": "boolean" - }, - "isSsoEnabled": { - "type": "boolean" + "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 + } + } + } + } + } + } + } + } + } }, - "nameIdFormat": { + "memoryUnit": { "type": "string" - }, - "syncSsoTeams": { - "type": "boolean" } - }, - "type": "object" + } }, - "v1TenantSamlSpec": { - "description": "Tenant", + "v1DataSinkConfig": { + "description": "Data sink", + "type": "object", "properties": { - "acsUrl": { - "type": "string" - }, - "attributes": { - "items": { - "$ref": "#/definitions/v1TenantSamlSpecAttribute" - }, - "type": "array" - }, - "audienceUrl": { - "description": "same as entity id", - "type": "string" - }, - "certificate": { - "description": "certificate for slo", - "type": "string" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "defaultTeams": { + "spec": { + "type": "object", + "properties": { + "auditDataSinks": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "cloudWatch": { + "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": { + "type": "string" + }, + "region": { + "type": "string" + }, + "stream": { + "type": "string" + } + } + }, + "type": { + "type": "string", + "enum": [ + "cloudwatch" + ] + } + } + } + } + } + } + } + }, + "v1DataSinkSpec": { + "type": "object", + "properties": { + "auditDataSinks": { + "type": "array", + "uniqueItems": true, "items": { - "type": "string" - }, - "type": "array" - }, - "entityId": { - "type": "string" - }, - "federationMetadata": { - "type": "string" - }, - "identityProvider": { - "type": "string" - }, - "isSingleLogoutEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "isSsoEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "issuer": { - "description": "same as entity id", - "type": "string" - }, - "nameIdFormat": { - "type": "string" - }, - "serviceProviderMetadata": { - "type": "string" - }, - "singleLogoutUrl": { - "description": "slo url", - "type": "string", - "x-omitempty": false - }, - "syncSsoTeams": { - "type": "boolean", - "x-omitempty": false + "type": "object", + "properties": { + "cloudWatch": { + "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": { + "type": "string" + }, + "region": { + "type": "string" + }, + "stream": { + "type": "string" + } + } + }, + "type": { + "type": "string", + "enum": [ + "cloudwatch" + ] + } + } + } } - }, - "type": "object" + } }, - "v1TenantSamlSpecAttribute": { + "v1DataSinkableSpec": { + "type": "object", "properties": { - "attributeValue": { - "type": "string" - }, - "mappedAttribute": { - "type": "string" - }, - "name": { - "type": "string" + "cloudWatch": { + "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": { + "type": "string" + }, + "region": { + "type": "string" + }, + "stream": { + "type": "string" + } + } }, - "nameFormat": { - "type": "string" + "type": { + "type": "string", + "enum": [ + "cloudwatch" + ] } - }, - "type": "object" + } }, - "v1TenantSelfSignUpSpec": { - "description": "Tenant sign up data", + "v1DatabaseTransferJob": { + "description": "database transfer job details", + "type": "object", "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" + "backupStatus": { + "description": "transfer job details", + "type": "object", + "properties": { + "finishTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "folder": { + "type": "string" + }, + "isCompleted": { + "type": "boolean" + }, + "message": { + "type": "array", + "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" + }, + "state": { + "type": "string" + }, + "status": { + "type": "array", + "items": { + "type": "string" + } + } + } }, - "lastName": { + "backupUid": { "type": "string" }, - "loginMode": { - "default": "devops", + "mode": { + "type": "string", "enum": [ - "dev", - "devops" - ], - "type": "string" + "FileSystem", + "Ftp" + ] + } + } + }, + "v1DatabaseTransferStatus": { + "description": "database transfer status", + "type": "object", + "properties": { + "backups": { + "type": "array", + "items": { + "description": "database transfer job details", + "type": "object", + "properties": { + "backupStatus": { + "description": "transfer job details", + "type": "object", + "properties": { + "finishTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "folder": { + "type": "string" + }, + "isCompleted": { + "type": "boolean" + }, + "message": { + "type": "array", + "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" + }, + "state": { + "type": "string" + }, + "status": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "backupUid": { + "type": "string" + }, + "mode": { + "type": "string", + "enum": [ + "FileSystem", + "Ftp" + ] + } + } + } }, - "notifyTenantAdmin": { + "isActive": { "type": "boolean" - }, - "orgName": { - "type": "string" } - }, - "required": [ - "firstName", - "lastName", - "emailId", - "orgName" - ], - "type": "object" + } }, - "v1TenantSpec": { - "description": "Tenant Spec", + "v1DeleteMeta": { + "description": "Properties to send back after deletion operation", "properties": { - "address": { - "$ref": "#/definitions/v1Address" - }, - "authType": { - "type": "string" - }, - "defaultLoginMode": { - "type": "string" - }, - "orgEmailId": { - "type": "string" - }, - "orgName": { - "type": "string" + "count": { + "type": "integer", + "format": "int64" }, - "planUid": { - "type": "string" + "items": { + "type": "object", + "additionalProperties": { + "type": "string" + } } - }, - "type": "object" + } }, - "v1TenantSpecEntity": { - "description": "Tenant Entity input", + "v1DeletedMsg": { + "description": "Deleted response with message", "properties": { - "address": { - "$ref": "#/definitions/v1Address" - }, - "authType": { - "type": "string" - }, - "emailId": { + "msg": { "type": "string" + } + } + }, + "v1DeveloperCredit": { + "description": "Credits allocated for each tenant/user", + "properties": { + "cpu": { + "description": "cpu in cores", + "type": "number", + "format": "int32", + "x-omitempty": false }, - "firstName": { - "type": "string" + "memoryGiB": { + "description": "memory in GiB", + "type": "number", + "format": "int32", + "x-omitempty": false }, - "lastName": { - "type": "string" + "storageGiB": { + "description": "storage in GiB", + "type": "integer", + "format": "int32", + "x-omitempty": false }, - "loginMode": { - "default": "devops", + "virtualClustersLimit": { + "description": "number of active virtual clusters", + "type": "number", + "format": "int32", + "x-omitempty": false + } + } + }, + "v1DeviceSpec": { + "description": "DeviceSpec defines the desired state of Device", + "type": "object", + "properties": { + "archType": { + "description": "Architecture type of the edge host", + "type": "string", + "default": "amd64", "enum": [ - "dev", - "devops" - ], - "type": "string" + "arm64", + "amd64" + ] }, - "orgEmailId": { - "type": "string" + "cpu": { + "type": "object", + "properties": { + "cores": { + "description": "number of cpu cores", + "type": "integer", + "format": "int32" + } + } }, - "orgName": { - "type": "string" + "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" + } + } + } }, - "roles": { + "gpus": { + "type": "array", "items": { - "type": "string" - }, + "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", - "uniqueItems": true + "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" + } + } + } }, - "ssoApp": { - "type": "string" + "os": { + "type": "object", + "properties": { + "family": { + "type": "string" + }, + "version": { + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1TenantSsoAuthProvidersEntity": { + "v1Disk": { + "type": "object", "properties": { - "isEnabled": { - "type": "boolean", - "x-omitempty": false + "controller": { + "type": "string" }, - "ssoLogins": { - "items": { - "type": "string" - }, + "partitions": { "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "v1TenantStatus": { - "description": "Tenant Status", - "properties": { - "cleanUpStatus": { - "$ref": "#/definitions/v1TenantCleanUpStatus" + "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" + } + } + } }, - "isActive": { - "type": "boolean", - "x-omitempty": false + "size": { + "description": "Size in GB", + "type": "integer", + "format": "int32" }, - "toBeDeleted": { - "type": "boolean", - "x-omitempty": false + "vendor": { + "type": "string" } - }, - "type": "object" + } }, - "v1TenantUpgradeSettingsEntity": { + "v1DomainHost": { + "description": "update domain host for application. RootDomain gets dervied from domain host url", + "type": "object", "properties": { - "enableLock": { - "type": "boolean", - "x-omitempty": false - }, - "supportedVersionsRange": { - "type": "integer", - "x-omitempty": false + "host": { + "type": "string" } } }, - "v1TenantUsage": { - "description": "Tenant usage object", + "v1EcrAuthorizationRequestEntity": { + "description": "Ecr registry credentials entity", + "type": "object", "properties": { - "orgName": { - "description": "Organization name", - "type": "string" + "awsCloudAccount": { + "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" + } + } + } + } }, - "tenantUid": { - "description": "Tenant uid", + "endpoint": { + "description": "Endpoint url to make the request", "type": "string" }, - "usedAlloyCredits": { - "description": "Credits used by imported clusters", - "format": "float64", - "type": "number" + "isPrivate": { + "description": "If it is public or private", + "type": "boolean" }, - "usedPureCredits": { - "description": "Credits used by managed clusters", - "format": "float64", - "type": "number" + "region": { + "description": "Name of the region", + "type": "string" } } }, - "v1Tenants": { - "description": "Tenants list", + "v1EcrImageEntity": { + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1Tenant" - }, - "type": "array", - "uniqueItems": true + "name": { + "description": "Image name", + "type": "string" }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "tag": { + "description": "Image tag", + "type": "string" } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1TenantsAccountsNas": { + "v1EcrImageValidateEntity": { + "description": "Ecr registry image meta", + "type": "object", "properties": { - "failures": { - "items": { - "type": "string" - }, - "type": "array" + "authEntity": { + "description": "Ecr registry credentials entity", + "type": "object", + "properties": { + "awsCloudAccount": { + "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" + } + } + } + } + }, + "endpoint": { + "description": "Endpoint url to make the request", + "type": "string" + }, + "isPrivate": { + "description": "If it is public or private", + "type": "boolean" + }, + "region": { + "description": "Name of the region", + "type": "string" + } + } }, - "success": { + "imageTag": { + "description": "Name of the image tag", + "type": "string" + }, + "images": { + "description": "Ecr Image Entity", + "type": "array", "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1TenantsActivities": { - "description": "Active tenants and clusters data", - "properties": { - "tenants": { - "additionalProperties": { - "$ref": "#/definitions/v1TenantActivity" - }, - "type": "object" + "type": "object", + "properties": { + "name": { + "description": "Image name", + "type": "string" + }, + "tag": { + "description": "Image tag", + "type": "string" + } + } + } + }, + "repoName": { + "description": "Name of the repo", + "type": "string" } - }, - "type": "object" + } }, - "v1TencentAccount": { - "description": "Tencent cloud account information", + "v1EcrRegistry": { + "description": "Ecr registry information", + "type": "object", "properties": { "kind": { - "description": "Cloud account kind", "type": "string" }, "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1TencentCloudAccount" - }, - "status": { - "$ref": "#/definitions/v1CloudAccountStatus" + "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": "object" + } }, - "v1TencentAccounts": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1TencentAccount" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, + "v1EcrRegistrySpec": { + "description": "Ecr registry spec", + "type": "object", "required": [ - "items" + "endpoint", + "isPrivate" ], - "type": "object" - }, - "v1TencentAvailabilityZone": { - "description": "Tencent availability zone", "properties": { - "name": { - "description": "Tencent availability zone name", + "baseContentPath": { + "description": "OCI ecr registry content base path", "type": "string" }, - "state": { - "description": "Tencent availability zone state", - "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" + } + } + } + } }, - "zoneId": { - "description": "Tencent availability zone id", - "type": "string" - } - }, - "type": "object" - }, - "v1TencentAvailabilityZones": { - "description": "List of Tencent Availability zones", - "properties": { - "zones": { - "items": { - "$ref": "#/definitions/v1TencentAvailabilityZone" - }, - "type": "array" - } - }, - "required": [ - "zones" - ], - "type": "object" - }, - "v1TencentCloudAccount": { - "properties": { - "secretId": { - "description": "Tencent api secretID", + "defaultRegion": { "type": "string" }, - "secretKey": { - "description": "Tencent api secret key", + "endpoint": { "type": "string" - } - }, - "required": [ - "secretId", - "secretKey" - ], - "type": "object" - }, - "v1TencentCloudClusterConfigEntity": { - "description": "Tencent cloud cluster config entity", - "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1TencentClusterConfig" - } - }, - "type": "object" - }, - "v1TencentCloudConfig": { - "description": "TencentCloudConfig is the Schema for the tencentcloudconfigs API", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1TencentCloudConfigSpec" - } - }, - "type": "object" - }, - "v1TencentCloudConfigSpec": { - "description": "TencentCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "properties": { - "cloudAccountRef": { - "$ref": "#/definitions/v1ObjectReference", - "description": "cloudAccountRef should point to the secret which contains TencentCloudAccount" }, - "clusterConfig": { - "$ref": "#/definitions/v1TencentClusterConfig" + "isPrivate": { + "type": "boolean" }, - "machinePoolConfig": { - "items": { - "$ref": "#/definitions/v1TencentMachinePoolConfig" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1TencentClusterConfig": { - "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools", - "properties": { - "endpointAccess": { - "$ref": "#/definitions/v1TkeEndpointAccess", - "description": "Endpoints specifies access to this cluster's control plane endpoints" + "providerType": { + "type": "string", + "default": "helm", + "enum": [ + "helm", + "pack" + ] }, - "region": { + "registryUid": { + "description": "Ecr registry uid", "type": "string" }, - "sshKeyIDs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "vpcID": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", + "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" + } + } } - }, - "required": [ - "region" - ], - "type": "object" + } }, - "v1TencentInstanceTypes": { - "description": "List of Tencent instance types", + "v1EdgeCloudClusterConfigEntity": { + "description": "Edge cloud cluster config entity", + "type": "object", "properties": { - "instanceTypes": { - "items": { - "$ref": "#/definitions/v1InstanceType" - }, - "type": "array" + "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": "object" + } }, - "v1TencentKeypair": { - "description": "Tencent Keypair entity", + "v1EdgeCloudConfig": { + "description": "EdgeCloudConfig is the Schema for the Edgecloudconfigs API", + "type": "object", "properties": { - "id": { - "description": "Tencent keypair id", - "type": "string" - }, - "name": { - "description": "Tencent keypair name", + "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" }, - "publickey": { - "description": "Tencent public key", - "type": "string" - } - }, - "type": "object" - }, - "v1TencentKeypairs": { - "description": "List of Tencent keypairs", - "properties": { - "keypairs": { - "items": { - "$ref": "#/definitions/v1TencentKeypair" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1TencentMachine": { - "description": "Tencent cloud VM definition", - "properties": { "kind": { + "description": "Cloud type of the cloud config", "type": "string" }, "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1TencentMachineSpec" + "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": { - "$ref": "#/definitions/v1CloudMachineStatus" + "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" + } }, - "v1TencentMachinePoolCloudConfigEntity": { + "v1EdgeCloudConfigSpec": { + "description": "EdgeCloudConfigSpec defines the desired state of EdgeCloudConfig", + "type": "object", + "required": [ + "clusterConfig", + "machinePoolConfig" + ], "properties": { - "azs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "format": "int64", - "maximum": 2000, - "minimum": 1, - "type": "integer" + "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" + } + } + } }, - "subnetIds": { - "additionalProperties": { - "type": "string" - }, - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", - "type": "object" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1TencentMachinePoolConfig": { + "v1EdgeCloudConfigStatus": { + "type": "object", "properties": { - "additionalLabels": { - "additionalProperties": { - "type": "string" - }, - "description": "AdditionalLabels", - "type": "object" - }, - "additionalTags": { - "additionalProperties": { - "type": "string" - }, - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object" - }, - "azs": { - "description": "AZs is only used for dynamic placement", + "conditions": { + "type": "array", "items": { - "type": "string" - }, - "type": "array" - }, - "instanceConfig": { - "$ref": "#/definitions/v1InstanceConfig" + "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" + } + } + } }, - "instanceType": { - "description": "instance type", + "nodeImage": { "type": "string" }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: master/worker, gpu, windows", - "items": { - "type": "string" - }, - "type": "array" - }, - "machinePoolProperties": { - "$ref": "#/definitions/v1MachinePoolProperties" - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "format": "int32", - "type": "integer" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "format": "int32", - "type": "integer" - }, - "name": { + "sourceImageId": { + "description": "SourceImageId can be from packref's annotations or from pack.json", "type": "string" }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "format": "int32", - "type": "integer" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "format": "int64", - "type": "integer" - }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", - "type": "integer" - }, - "subnetIds": { - "additionalProperties": { - "type": "string" - }, - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", - "type": "object" - }, - "taints": { - "description": "master or worker taints", - "items": { - "$ref": "#/definitions/v1Taint" - }, - "type": "array" - }, - "updateStrategy": { - "$ref": "#/definitions/v1UpdateStrategy", - "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "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" + } }, - "v1TencentMachinePoolConfigEntity": { + "v1EdgeClusterConfig": { + "description": "EdgeClusterConfig defines Edge Cluster specific Spec", + "type": "object", "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1TencentMachinePoolCloudConfigEntity" - }, - "poolConfig": { - "$ref": "#/definitions/v1MachinePoolConfigEntity" + "sshKeys": { + "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", + "type": "array", + "items": { + "type": "string" + } } - }, + } + }, + "v1EdgeHost": { + "description": "EdgeHost is the underlying appliance", + "type": "object", "required": [ - "cloudConfig" + "hostUid", + "hostAddress" ], - "type": "object" - }, - "v1TencentMachineSpec": { - "description": "Tencent cloud VM definition spec", "properties": { - "dnsName": { - "type": "string" + "disableAutoRegister": { + "description": "Set to true if auto register is disabled for the device", + "type": "boolean", + "x-omitempty": false }, - "imageId": { + "hostAddress": { + "description": "HostAddress is a FQDN or IP address of the Host", "type": "string" }, - "instanceType": { - "type": "string" + "hostAuthToken": { + "description": "HostAuthToken to authorize auto registration", + "type": "string", + "x-omitempty": false }, - "nics": { - "items": { - "$ref": "#/definitions/v1TencentNic" - }, - "type": "array" + "hostChecksum": { + "description": "HostChecksum is the checksum provided by the edge host, to be persisted in SaaS", + "type": "string", + "x-omitempty": false }, - "securityGroups": { - "items": { - "type": "string" - }, - "type": "array" + "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" + } + } + } + } }, - "subnetId": { - "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 }, - "type": { + "hostUid": { + "description": "HostUid is the ID of the EdgeHost", "type": "string" }, - "vpcId": { - "type": "string" + "macAddress": { + "description": "Mac address of edgehost", + "type": "string", + "x-omitempty": false }, - "zoneId": { - "type": "string" + "project": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } } - }, - "required": [ - "nics", - "instanceType", - "imageId" - ], - "type": "object" + } }, - "v1TencentMachines": { - "description": "Tencent machine list", + "v1EdgeHostCloudProperties": { + "description": "Additional cloud properties of the edge host (applicable based on the cloud type)", + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1TencentMachine" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "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" + } + } + } + } + } } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1TencentNic": { - "description": "Tencent network interface", + "v1EdgeHostClusterEntity": { + "type": "object", "properties": { - "index": { - "format": "int8", - "type": "integer" - }, - "privateIPs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "publicIp": { + "clusterUid": { "type": "string" } - }, - "type": "object" + } }, - "v1TencentRegion": { - "description": "Tencent region entity", + "v1EdgeHostDevice": { "properties": { - "name": { - "description": "Name of tencent region", - "type": "string" + "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" + } + } }, - "state": { - "description": "State of tencent region", - "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": "object" + } }, - "v1TencentRegions": { - "description": "List of tencent regions", + "v1EdgeHostDeviceEntity": { + "description": "Edge host device information", + "type": "object", "properties": { - "regions": { - "description": "Tencent regions entity", - "items": { - "$ref": "#/definitions/v1TencentRegion" - }, - "type": "array" + "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" + } + } } - }, - "required": [ - "regions" - ], - "type": "object" + } }, - "v1TencentSecurityGroup": { - "description": "Tencent Security Group. A security group is a virtual firewall that features stateful data packet filtering", + "v1EdgeHostDeviceHostCheckSum": { + "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", + "hostCheckSum": { "type": "string" } - }, - "type": "object" + } }, - "v1TencentSecurityGroups": { - "description": "List of Tencent security groups", + "v1EdgeHostDeviceHostPairingKey": { + "type": "object", "properties": { - "groups": { - "items": { - "$ref": "#/definitions/v1TencentSecurityGroup" - }, - "type": "array" + "hostPairingKey": { + "type": "string", + "format": "password" } - }, - "type": "object" + } }, - "v1TencentStorageTypes": { - "description": "List of Tencent storage types", + "v1EdgeHostDeviceMetaUpdateEntity": { + "description": "Edge host device uid and name", + "type": "object", "properties": { - "storageTypes": { - "items": { - "$ref": "#/definitions/v1StorageType" - }, - "type": "array" + "metadata": { + "description": "Object identity meta with tags", + "type": "object", + "properties": { + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1TencentSubnet": { - "description": "Tencent Subnet entity", + "v1EdgeHostDeviceSpec": { + "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice", + "type": "object", "properties": { - "az": { - "description": "Availability zone associated with tencent subnet", - "type": "string" + "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" + } + } + } + } + } + } + } }, - "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" + "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" + } + } + } }, - "name": { - "description": "Tencent subnet name", - "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" + } + } + } + } }, - "subnetId": { - "description": "Tencent subnet id", - "type": "string" - } - }, - "type": "object" - }, - "v1TencentVpc": { - "description": "Tencent VPC entity", - "properties": { - "cidrBlock": { - "description": "Tencent VPC CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32", - "type": "string" + "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" + } + } + } + } }, - "name": { - "description": "Tencent VPC name", - "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" + } + } + } + } + } }, - "subnets": { - "items": { - "$ref": "#/definitions/v1TencentSubnet" - }, - "type": "array" + "service": { + "description": "ServiceSpec defines the specification of service registering edge", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + } }, - "vpcId": { - "description": "Tencent VPC id", + "type": { + "description": "Cloudtype of the provisioned edge host", + "type": "string", + "enum": [ + "libvirt", + "vsphere", + "edge-native" + ] + }, + "version": { "type": "string" } - }, - "required": [ - "vpcId" - ], - "type": "object" - }, - "v1TencentVpcs": { - "description": "List of Tencent VPCs", - "properties": { - "vpcs": { - "items": { - "$ref": "#/definitions/v1TencentVpc" - }, - "type": "array" - } - }, - "required": [ - "vpcs" - ], - "type": "object" + } }, - "v1TierPrice": { - "description": "tier price", + "v1EdgeHostDeviceSpecEntity": { + "description": "Edge host device spec", + "type": "object", "properties": { - "alloyPricing": { - "items": { - "$ref": "#/definitions/v1PriceRange" - }, - "type": "array", - "uniqueItems": true + "archType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] }, - "purePricing": { - "items": { - "$ref": "#/definitions/v1PriceRange" - }, - "type": "array", - "uniqueItems": true + "hostPairingKey": { + "type": "string", + "format": "password" } } }, - "v1Time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "format": "date-time", - "type": "string" - }, - "v1TkeEndpointAccess": { - "description": "TKEEndpointAccess specifies how control plane endpoints are accessible", + "v1EdgeHostDeviceStatus": { + "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice", + "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" + "health": { + "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", + "properties": { + "agentVersion": { + "type": "string" + }, + "message": { + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "healthy", + "unhealthy" + ] + } + } }, - "publicCIDRs": { - "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint", + "inUseClusters": { + "type": "array", "items": { - "type": "string" - }, - "type": "array" - }, - "securityGroup": { - "description": "Tencent security group", - "type": "string" - }, - "subnetId": { - "description": "Tencent Subnet", - "type": "string" - } - }, - "type": "object" - }, - "v1TlsConfiguration": { - "description": "TLS configuration", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } }, - "enabled": { - "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" + } + } + } }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false + "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 + } + } }, - "key": { + "serviceAuthToken": { "type": "string" - } - }, - "type": "object" - }, - "v1TotalClusterRate": { - "description": "Cluster total estimated rate information", - "properties": { - "compute": { - "format": "float64", - "type": "number", - "x-omitempty": false }, - "storage": { - "format": "float64", - "type": "number", - "x-omitempty": false - }, - "total": { - "format": "float64", - "type": "number", - "x-omitempty": false + "state": { + "type": "string", + "enum": [ + "ready", + "unpaired", + "in-use" + ] } - }, - "type": "object" + } }, - "v1TotalResourceUsage": { - "description": "Total Resource Usage", + "v1EdgeHostDevices": { + "type": "object", + "required": [ + "items" + ], "properties": { - "projects": { - "items": { - "$ref": "#/definitions/v1ProjectResourceUsage" - }, + "items": { "type": "array", - "uniqueItems": true - }, - "totalAlloyCpuCoreHours": { - "type": "number", - "x-omitempty": false + "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" + ] + } + } + } + } + } }, - "totalPureCpuCoreHours": { - "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 + } + } } } }, - "v1TransferJob": { - "description": "transfer job details", + "v1EdgeHostHealth": { + "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", "properties": { - "finishTime": { - "$ref": "#/definitions/v1Time" - }, - "folder": { + "agentVersion": { "type": "string" }, - "isCompleted": { - "type": "boolean" - }, "message": { - "items": { - "type": "string" - }, - "type": "array" - }, - "startTime": { - "$ref": "#/definitions/v1Time" - }, - "state": { "type": "string" }, - "status": { - "items": { - "type": "string" - }, - "type": "array" + "state": { + "type": "string", + "enum": [ + "healthy", + "unhealthy" + ] } - }, - "type": "object" + } }, - "v1Uid": { + "v1EdgeHostIdentity": { "properties": { - "uid": { + "caCert": { + "description": "CACert is the client CA certificate", "type": "string" - } - }, - "required": [ - "uid" - ], - "type": "object" - }, - "v1UidRoleSummary": { - "properties": { - "inheritedRoles": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" }, - "name": { + "mode": { + "description": "Mode indicates a system or session connection to the host", "type": "string" }, - "roles": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" - }, - "uid": { - "type": "string" - } - }, - "type": "object" - }, - "v1UidSummary": { - "properties": { - "name": { + "socketPath": { + "description": "SocketPath is an optional path to the socket on the host, if not using defaults", "type": "string" }, - "uid": { - "type": "string" + "sshSecret": { + "type": "object", + "properties": { + "name": { + "description": "SSH secret name", + "type": "string" + }, + "privateKey": { + "description": "Private Key to access the host", + "type": "string" + } + } } - }, - "type": "object" - }, - "v1Uids": { - "items": { - "$ref": "#/definitions/v1Uid" - }, - "type": "array", - "uniqueItems": true + } }, - "v1UpdateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut => maxSurge=1, maxUnavailable=0 ScaleIn => maxSurge=0, maxUnavailable=1", + "v1EdgeHostMeta": { + "type": "object", "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", + "archType": { + "type": "string", + "default": "amd64", "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ], + "amd64", + "arm64" + ] + }, + "edgeHostType": { + "type": "string", + "enum": [ + "libvirt", + "edge-native", + "vsphere" + ] + }, + "healthState": { "type": "string" - } - }, - "type": "object" - }, - "v1UpdateTenantStatus": { - "description": "Update tenant status", - "properties": { - "errorMessage": { + }, + "name": { "type": "string" }, - "kind": { + "state": { "type": "string" }, - "stage": { + "uid": { "type": "string" } - }, - "type": "object" - }, - "v1Updated": { - "description": "The resource was updated successfully" + } }, - "v1UpdatedMsg": { - "description": "Update response with message", + "v1EdgeHostNetwork": { + "description": "Network defines the network configuration for a virtual machine", + "type": "object", + "required": [ + "networkName", + "networkType" + ], "properties": { - "msg": { + "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" + ] } } }, - "v1Upgrades": { - "description": "Upgrades represent the reason of the last upgrade that took place", + "v1EdgeHostProperties": { + "description": "Additional properties of edge host", "properties": { - "reason": { + "networks": { + "type": "array", "items": { - "type": "string" - }, - "type": "array" - }, - "timestamp": { - "$ref": "#/definitions/v1Time" - } - }, - "type": "object" - }, - "v1User": { - "description": "User", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1UserSpec" + "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" + ] + } + } + } }, - "status": { - "$ref": "#/definitions/v1UserStatus" - } - }, - "type": "object" - }, - "v1UserActivateInfo": { - "properties": { - "passwordToken": { - "type": "string" - } - }, - "type": "object" - }, - "v1UserActivateLink": { - "properties": { - "activationLink": { - "type": "string" + "storagePools": { + "type": "array", + "items": { + "description": "StoragePool is the storage pool for the vm image", + "properties": { + "name": { + "type": "string" + } + } + } } - }, - "type": "object" + } }, - "v1UserActivityInfo": { - "description": "Active user data", + "v1EdgeHostSSHSecret": { + "type": "object", "properties": { - "lastLogin": { - "type": "string" - }, - "lastLoginTimestamp": { - "$ref": "#/definitions/v1Time" - }, "name": { + "description": "SSH secret name", "type": "string" }, - "uid": { + "privateKey": { + "description": "Private Key to access the host", "type": "string" } - }, - "type": "object" - }, - "v1UserAssetSsh": { - "description": "SSH key information", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1UserAssetSshSpec" - } - }, - "type": "object" - }, - "v1UserAssetSshEntity": { - "description": "SSH Key request payload", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" - }, - "spec": { - "$ref": "#/definitions/v1UserAssetSshSpec" - } - }, - "type": "object" + } }, - "v1UserAssetSshSpec": { - "description": "SSH key specification", + "v1EdgeHostSpecHost": { + "description": "Host specifications", "properties": { - "publicKey": { + "hostAddress": { + "description": "HostAddress is a FQDN or IP address of the Host", "type": "string" - } - }, - "type": "object" - }, - "v1UserAssetsLocation": { - "description": "Location object", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" }, - "spec": { - "$ref": "#/definitions/v1UserAssetsLocationSpec" + "macAddress": { + "type": "string" } - }, - "type": "object" + } }, - "v1UserAssetsLocationAzure": { - "description": "Azure location object", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" - }, - "spec": { - "$ref": "#/definitions/v1UserAssetsLocationAzureSpec" - } - }, - "type": "object" + "v1EdgeHostState": { + "type": "string", + "enum": [ + "ready", + "unpaired", + "in-use" + ] }, - "v1UserAssetsLocationAzureSpec": { - "description": "Azure location specification", + "v1EdgeHostStoragePool": { + "description": "StoragePool is the storage pool for the vm image", "properties": { - "config": { - "$ref": "#/definitions/v1AzureStorageConfig" - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "Azure location type [azure]", + "name": { "type": "string" } - }, - "required": [ - "config" - ], - "type": "object" + } }, - "v1UserAssetsLocationGcp": { - "description": "GCP location object", + "v1EdgeHostVsphereCloudProperties": { + "description": "Vsphere cloud properties of edge host", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" - }, - "spec": { - "$ref": "#/definitions/v1UserAssetsLocationGcpSpec" + "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": "object" + } }, - "v1UserAssetsLocationGcpSpec": { - "description": "GCP location specification", + "v1EdgeHostsMeta": { + "type": "object", "properties": { - "config": { - "$ref": "#/definitions/v1GcpStorageConfig" - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "GCP location type [gcp]", - "type": "string" + "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" + } + } + } } - }, - "required": [ - "config" - ], - "type": "object" + } }, - "v1UserAssetsLocationS3": { - "description": "S3 location object", + "v1EdgeHostsMetadata": { + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1UserAssetsLocationS3Spec" - } - }, - "type": "object" - }, - "v1UserAssetsLocationS3Spec": { - "description": "S3 location specification", - "properties": { - "config": { - "$ref": "#/definitions/v1S3StorageConfig" - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" + "type": "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" + } + } }, - "type": { - "description": "S3 location type [s3/minio]", - "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" + ] + } + } } - }, - "required": [ - "config" - ], - "type": "object" + } }, - "v1UserAssetsLocationSpec": { - "description": "Location specification", + "v1EdgeHostsMetadataFilter": { + "description": "Edge host metadata spec", "properties": { - "isDefault": { - "type": "boolean" - }, - "storage": { - "$ref": "#/definitions/v1LocationType" + "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" + ] + } + } + } }, - "type": { - "type": "string" - } - }, - "type": "object" - }, - "v1UserAssetsLocations": { - "properties": { - "items": { - "description": "List of locations", - "items": { - "$ref": "#/definitions/v1UserAssetsLocation" - }, + "sort": { "type": "array", - "uniqueItems": true + "uniqueItems": true, + "items": { + "properties": { + "field": { + "type": "string", + "enum": [ + "name", + "state", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true + }, + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } + } + } } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1UserAssetsSsh": { + "v1EdgeHostsMetadataFilterSpec": { + "description": "Edge hosts metadata filter spec", "properties": { - "items": { - "description": "List of SSH keys", - "items": { - "$ref": "#/definitions/v1UserAssetSsh" - }, + "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 + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "ready", + "unpaired", + "in-use" + ] + } } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1UserAuthenticatedUrl": { - "description": "Returns the Authenticated redirect Url for the palette oidc", - "properties": { - "redirectUrl": { - "description": "authenticated redirect Url for the palette oidc", - "type": "string" - } - }, - "type": "object" + "v1EdgeHostsMetadataSortFields": { + "type": "string", + "enum": [ + "name", + "state", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true }, - "v1UserEntity": { - "description": "User", + "v1EdgeHostsMetadataSortSpec": { "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "field": { + "type": "string", + "enum": [ + "name", + "state", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true }, - "spec": { - "$ref": "#/definitions/v1UserSpecEntity" + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] } - }, - "type": "object" + } }, - "v1UserInfoResponse": { + "v1EdgeHostsMetadataSpec": { + "type": "object", "properties": { - "address": { - "description": "End-User's preferred postal address", - "type": "string" - }, - "birthdate": { - "description": "End-User's birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format", - "type": "string" - }, - "email": { - "description": "End-User's preferred e-mail address", - "type": "string" - }, - "email_verified": { - "description": "User at the time the verification was performed", - "type": "boolean" - }, - "family_name": { - "description": "Surname(s) or last name(s) of the End-User", - "type": "string" - }, - "gender": { - "description": "End-User's gender", - "type": "string" - }, - "given_name": { - "description": "Given name(s) or first name(s) of the End-User", - "type": "string" - }, - "locale": { - "description": "End-User's locale, represented as a BCP47 [RFC5646] language tag", - "type": "string" - }, - "middle_name": { - "description": "Middle name(s) of the End-User", - "type": "string" - }, - "name": { - "description": "End-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences", - "type": "string" - }, - "nickname": { - "description": "Casual name of the End-User that may or may not be the same as the given_name", - "type": "string" - }, - "phone_number": { - "description": "End-User's preferred telephone number", - "type": "string" - }, - "phone_number_verified": { - "description": "User at the time the verification was performed", - "type": "boolean" - }, - "picture": { - "description": "URL of the End-User's profile picture", - "type": "string" - }, - "preferred_username": { - "description": "Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe", - "type": "string" - }, - "profile": { - "description": "URL of the End-User's profile page", - "type": "string" + "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" + } + } + } }, - "sub": { - "description": "Subject - Identifier for the End-User at the Issuer", - "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" + } + } + } + } }, - "updated_at": { - "description": "Time the End-User's information was last updated", - "type": "integer" + "host": { + "description": "Host specifications", + "properties": { + "hostAddress": { + "description": "HostAddress is a FQDN or IP address of the Host", + "type": "string" + }, + "macAddress": { + "type": "string" + } + } }, - "website": { - "description": "URL of the End-User's Web page or blog", - "type": "string" + "projectMeta": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, - "zoneinfo": { - "description": "String from zoneinfo [zoneinfo] time zone database representing the End-User's time zone", + "type": { "type": "string" } - }, - "type": "object" + } }, - "v1UserKubectlSession": { + "v1EdgeHostsMetadataStatus": { + "type": "object", "properties": { - "clusterUid": { - "type": "string" - }, - "creationTime": { - "type": "string" - }, - "isActive": { - "type": "boolean" - }, - "podIp": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "port": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "sessionUid": { - "type": "string" - }, - "shellyCluster": { - "type": "string" - }, - "tenantClusterEndpoint": { - "type": "string" + "health": { + "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", + "properties": { + "agentVersion": { + "type": "string" + }, + "message": { + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "healthy", + "unhealthy" + ] + } + } }, - "userName": { - "type": "string" + "inUseClusters": { + "type": "array", + "items": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } }, - "userUid": { - "type": "string" + "state": { + "type": "string", + "enum": [ + "ready", + "unpaired", + "in-use" + ] } - }, - "type": "object" + } }, - "v1UserMe": { - "description": "User information wrt permissions", + "v1EdgeHostsMetadataSummary": { + "type": "object", + "required": [ + "items" + ], "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1UserSpec" - }, - "status": { - "$ref": "#/definitions/v1UserMeStatus" + "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" + ] + } + } + } + } + } } - }, - "type": "object" + } }, - "v1UserMeStatus": { - "description": "User status with permissions", + "v1EdgeHostsSearchSummary": { + "type": "object", + "required": [ + "items" + ], "properties": { - "activationLink": { - "description": "Contains activation link for the user", - "type": "string" - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean" - }, - "isContractAccepted": { - "description": "Specifies if user account has accepted the contract", - "type": "boolean", - "x-omitempty": false - }, - "loginMode": { - "description": "User's login Mode", - "type": "string" + "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" + ] + } + } + } + } + } }, - "projectPermissions": { - "additionalProperties": { - "items": { - "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 }, - "type": "array" - }, - "type": "object" - }, - "tenant": { - "$ref": "#/definitions/v1UserMeTenant", - "description": "users's tenant information" - }, - "tenantPermissions": { - "additionalProperties": { - "items": { - "type": "string" + "count": { + "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", + "type": "integer", + "x-omitempty": false }, - "type": "array" - }, - "type": "object" + "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 + } + } } } }, - "v1UserMeTenant": { - "properties": { - "orgName": { - "type": "string" - }, - "tenantUid": { - "type": "string" - } - }, - "type": "object" - }, - "v1UserMeta": { + "v1EdgeInstanceType": { + "description": "EdgeInstanceType defines the instance configuration for a docker container node", + "type": "object", + "required": [ + "numCPUs", + "memoryInMB" + ], "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "org": { - "type": "string" + "memoryInMB": { + "description": "MemoryinMB is the memory in megabytes", + "type": "integer", + "format": "int32" }, - "uid": { - "type": "string" + "numCPUs": { + "description": "NumCPUs is the number of CPUs", + "type": "integer", + "format": "int32" } - }, - "type": "object" + } }, - "v1UserMetaEntity": { - "description": "User meta entity", + "v1EdgeMachine": { + "description": "Edge cloud VM definition", + "type": "object", "properties": { - "emailId": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - "name": { + "kind": { + "description": "Deprecated. Cloud type of the machine.", "type": "string" }, - "uid": { - "type": "string" - } - }, - "type": "object" - }, - "v1UserPatch": { - "items": { - "$ref": "#/definitions/v1HttpPatch" - }, - "type": "array" - }, - "v1UserProfile": { - "description": "User Profile", - "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1UserProfileSpec" - }, - "status": { - "$ref": "#/definitions/v1UserProfileStatus" - } - }, - "type": "object" - }, - "v1UserProfileSpec": { - "description": "User Profile specifications", - "properties": { - "emailId": { - "description": "User's email id", - "type": "string" - }, - "firstName": { - "type": "string" + "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" + } + } + } + } + } }, - "lastName": { - "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" + } + } + } + } } } }, - "v1UserProfileStatus": { - "description": "User Profile status", + "v1EdgeMachinePoolCloudConfigEntity": { + "required": [ + "edgeHosts" + ], "properties": { - "lastPasswordPolicyMail": { - "$ref": "#/definitions/v1Time", - "description": "user's last password policy time" - }, - "lastPasswordUpdate": { - "$ref": "#/definitions/v1Time", - "description": "user's last password update time" + "edgeHosts": { + "type": "array", + "uniqueItems": true, + "items": { + "required": [ + "hostUid" + ], + "properties": { + "hostUid": { + "type": "string" + } + } + } } } }, - "v1UserProfiles": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1UserProfile" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, + "v1EdgeMachinePoolConfig": { + "type": "object", "required": [ - "items" + "hosts" ], - "type": "object" - }, - "v1UserRoleMap": { "properties": { - "roles": { - "items": { + "additionalLabels": { + "description": "additionalLabels", + "type": "object", + "additionalProperties": { "type": "string" - }, - "type": "array" + } }, - "userId": { - "type": "string" - } - } - }, - "v1UserRoleUIDs": { - "properties": { - "roles": { - "items": { + "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" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1UserRolesEntity": { - "properties": { - "inheritedRoles": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" + } }, - "roles": { + "hosts": { + "type": "array", "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1UserRsaToken": { - "description": "Rsa Auth token response", - "properties": { - "token": { - "type": "string" - } - }, - "type": "object" - }, - "v1UserSpec": { - "description": "User specifications", - "properties": { - "emailId": { - "description": "User's email id", - "type": "string" - }, - "firstName": { - "type": "string" + "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" + } + } + } }, - "lastName": { - "type": "string" + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" }, - "roles": { - "items": { - "type": "string" - }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", "type": "array", - "uniqueItems": true - } - } - }, - "v1UserSpecEntity": { - "description": "User Entity input", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "loginMode": { - "type": "string" - }, - "roles": { "items": { "type": "string" - }, - "type": "array", - "uniqueItems": true + } }, - "teams": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "v1UserSpecSummary": { - "properties": { - "emailId": { - "type": "string" + "machinePoolProperties": { + "description": "Machine pool specific properties", + "type": "object", + "properties": { + "archType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] + } + } }, - "firstName": { - "type": "string" + "maxSize": { + "description": "max size of the pool, for scaling", + "type": "integer", + "format": "int32" }, - "lastName": { - "type": "string" + "minSize": { + "description": "min size of the pool, for scaling", + "type": "integer", + "format": "int32" }, - "projects": { - "description": "Deprecated.", - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" + "name": { + "type": "string" }, - "projectsCount": { - "format": "int32", + "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", - "x-omitempty": false + "format": "int32" }, - "roles": { - "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" + "size": { + "description": "size of the pool, number of machines", + "type": "integer", + "format": "int32" }, - "teams": { + "taints": { + "description": "master or worker taints", + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1UidSummary" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1UserStatus": { - "description": "User status", - "properties": { - "activationLink": { - "description": "provides the link to activate or reset the user password", - "type": "string", - "x-omitempty": false - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean", - "x-omitempty": false + "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" + } + } + } }, - "isPasswordResetting": { - "description": "Specifies if user in multi org requested password reset", - "type": "boolean", - "x-omitempty": false + "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" + ] + } + } }, - "lastSignIn": { - "$ref": "#/definitions/v1Time", - "description": "user's last sign in time" + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" } } }, - "v1UserStatusLoginMode": { + "v1EdgeMachinePoolConfigEntity": { + "type": "object", "properties": { - "loginMode": { - "enum": [ - "dev", - "devops" + "cloudConfig": { + "required": [ + "edgeHosts" ], - "type": "string" - } - }, - "type": "object" - }, - "v1UserSummary": { - "description": "User summary", - "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1UserSpecSummary" + "properties": { + "edgeHosts": { + "type": "array", + "uniqueItems": true, + "items": { + "required": [ + "hostUid" + ], + "properties": { + "hostUid": { + "type": "string" + } + } + } + } + } }, - "status": { - "$ref": "#/definitions/v1UserStatus" + "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": "object" + } }, - "v1UserSummarySortFields": { - "enum": [ - "name", - "creationTimestamp" + "v1EdgeMachinePoolHost": { + "description": "EdgeHost of Edge clusters", + "type": "object", + "required": [ + "hostUid", + "hostAddress" ], - "type": "string", - "x-nullable": true - }, - "v1UserSummarySortSpec": { "properties": { - "field": { - "$ref": "#/definitions/v1UserSummarySortFields" + "hostAddress": { + "description": "HostAddress is a FQDN or IP address of the Host", + "type": "string" }, - "order": { - "$ref": "#/definitions/v1SortOrder" + "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" } } }, - "v1UserToken": { - "description": "Returns the Authorization token. To be used for further api calls", + "v1EdgeMachinePoolHostEntity": { + "required": [ + "hostUid" + ], "properties": { - "Authorization": { - "description": "Describes the authentication token in jwt format.", + "hostUid": { "type": "string" - }, - "isMfa": { - "description": "Indicates the authentication flow using MFA", - "type": "boolean", - "x-omitempty": false } - }, - "type": "object" + } }, - "v1UserUpdateEntity": { - "description": "User", + "v1EdgeMachinePoolHostIdentity": { + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "caCert": { + "description": "CACert is the client CA certificate", + "type": "string" }, - "spec": { - "$ref": "#/definitions/v1UserUpdateSpecEntity" + "socketPath": { + "description": "SocketPath is an optional path to the socket on the host, if not using defaults", + "type": "string" } - }, - "type": "object" + } }, - "v1UserUpdateSpecEntity": { - "description": "User Entity input", + "v1EdgeMachineSpec": { + "description": "Edge cloud VM definition spec", + "type": "object", "properties": { - "emailId": { - "type": "string" + "bootstrapped": { + "type": "boolean" }, - "firstName": { + "customImage": { "type": "string" }, - "lastName": { + "edgeHostUid": { "type": "string" }, - "roles": { - "description": "Deprecated. Use 'v1/users/{uid}/roles' API to assign roles.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "v1Users": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1User" - }, - "type": "array", - "uniqueItems": true + "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" + } + } }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1UsersFilterSpec": { - "description": "Users filter spec", - "properties": { - "emailId": { - "$ref": "#/definitions/v1FilterString" + "loadBalancerConfigured": { + "type": "boolean" }, - "name": { - "$ref": "#/definitions/v1FilterString" - } - } - }, - "v1UsersMetadata": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1UserMetaEntity" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1UsersSummary": { - "description": "Deprecated, Use v1UsersSummaryList - Returns User summary", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1UserSummary" - }, + "mounts": { "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1UsersSummaryList": { - "properties": { - "items": { + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1UserSummary" - }, - "type": "array", - "uniqueItems": true + "description": "Edge mounts", + "type": "object", + "properties": { + "containerPath": { + "type": "string" + }, + "hostPath": { + "type": "string" + }, + "readonly": { + "type": "boolean" + } + } + } } - }, + } + }, + "v1EdgeMachines": { + "description": "Edge machine list", + "type": "object", "required": [ "items" ], - "type": "object" - }, - "v1UsersSummarySpec": { - "description": "Users filter summary spec", "properties": { - "filter": { - "$ref": "#/definitions/v1UsersFilterSpec" - }, - "sort": { - "items": { - "$ref": "#/definitions/v1UserSummarySortSpec" - }, + "items": { "type": "array", - "uniqueItems": true + "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" + } + } + } + } + } + } + } } } }, - "v1V1SystemAdminEmail": { - "description": "SystemAdmin", - "properties": { - "email": { - "type": "string" - }, - "insecureVerify": { - "type": "boolean" - }, - "password": { - "type": "string" - } - }, - "type": "object" - }, - "v1V1SystemAdminPasswordResetEntity": { - "description": "SystemAdmin", + "v1EdgeMount": { + "description": "Edge mounts", + "type": "object", "properties": { - "email": { + "containerPath": { "type": "string" }, - "newPassword": { + "hostPath": { "type": "string" }, - "oldPassword": { - "type": "string" + "readonly": { + "type": "boolean" } - }, - "type": "object" + } }, - "v1VMAddVolumeEntity": { + "v1EdgeNativeCloudClusterConfigEntity": { + "description": "EdgeNative cloud cluster config entity", + "type": "object", "properties": { - "addVolumeOptions": { - "$ref": "#/definitions/v1VmAddVolumeOptions", - "description": "Parameters required to add volume to virtual machine/virtual machine instance" - }, - "dataVolumeTemplate": { - "$ref": "#/definitions/v1VmDataVolumeTemplateSpec", - "description": "dataVolumeTemplates is a list of dataVolumes that the VirtualMachineInstance template can reference. DataVolumes in this list are dynamically created for the VirtualMachine and are tied to the VirtualMachine's life-cycle." - }, - "persist": { - "description": "If 'true' add the disk to the Virtual Machine & Virtual Machine Instance, else add the disk to the Virtual Machine Instance only", - "type": "boolean" + "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" + } + } } - }, - "required": [ - "addVolumeOptions" - ], - "type": "object" + } }, - "v1VMCluster": { - "description": "VM Dashboard enabled Spectro cluster", + "v1EdgeNativeCloudConfig": { + "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": { - "name": { - "type": "string" + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "projectUid": { + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", "type": "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", + "description": "EdgeNativeCloudConfigSpec defines the desired state of EdgeNativeCloudConfig", + "type": "object", + "required": [ + "clusterConfig", + "machinePoolConfig" + ], "properties": { - "cloudType": { - "type": "string" + "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" + } + } + } } - }, - "type": "object" + } }, "status": { - "description": "Spectro cluster status", + "description": "EdgeNativeCloudConfigStatus defines the observed state of EdgeNativeCloudConfig", + "type": "object", "properties": { - "clusterState": { + "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" + } }, - "v1VMClusters": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1VMCluster" - }, - "type": "array", - "uniqueItems": true - } - }, + "v1EdgeNativeCloudConfigSpec": { + "description": "EdgeNativeCloudConfigSpec defines the desired state of EdgeNativeCloudConfig", + "type": "object", "required": [ - "items" + "clusterConfig", + "machinePoolConfig" ], - "type": "object" - }, - "v1VMRemoveVolumeEntity": { "properties": { - "persist": { - "description": "If 'true' remove the disk from the Virtual Machine & Virtual Machine Instance, else remove the disk from the Virtual Machine Instance only", - "type": "boolean" + "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" + } + } }, - "removeVolumeOptions": { - "$ref": "#/definitions/v1VmRemoveVolumeOptions", - "description": "Parameters required to remove volume from virtual machine/virtual machine instance" + "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" + } + } + } } - }, - "required": [ - "removeVolumeOptions" - ], - "type": "object" + } }, - "v1Virtual": { + "v1EdgeNativeCloudConfigStatus": { + "description": "EdgeNativeCloudConfigStatus defines the observed state of EdgeNativeCloudConfig", + "type": "object", "properties": { - "appDeployments": { - "description": "list of apps deployed on the virtual cluster", + "conditions": { + "type": "array", "items": { - "$ref": "#/definitions/v1ObjectResReference" - }, - "type": "array" - }, - "clusterGroup": { - "$ref": "#/definitions/v1ObjectResReference", - "description": "cluster group details of virtual cluster" - }, - "hostCluster": { - "$ref": "#/definitions/v1ObjectResReference", - "description": "host cluster reference" - }, - "lifecycleStatus": { - "$ref": "#/definitions/v1LifecycleStatus", - "description": "cluster life cycle status of virtual cluster" + "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" + } + } + } }, - "state": { - "description": "cluster virtual host status", + "nodeImage": { "type": "string" }, - "virtualClusters": { - "description": "list of virtual clusters deployed on the cluster", - "items": { - "$ref": "#/definitions/v1ObjectResReference" - }, - "type": "array" + "sourceImageId": { + "description": "SourceImageId can be from packref's annotations or from pack.json", + "type": "string" } } }, - "v1VirtualCloudClusterConfigEntity": { - "description": "Virtual cloud cluster config entity", - "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1VirtualClusterConfig" - } - }, - "type": "object" - }, - "v1VirtualCloudConfig": { - "description": "VirtualCloudConfig is the Schema for the virtual cloudconfigs API", + "v1EdgeNativeClusterConfig": { + "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec", + "type": "object", "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" + "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" + } + } }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "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": "" + } }, - "spec": { - "$ref": "#/definitions/v1VirtualCloudConfigSpec" + "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 + } + } }, - "status": { - "$ref": "#/definitions/v1NestedCloudConfigStatus" + "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" + } }, - "v1VirtualCloudConfigSpec": { - "description": "VirtualCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec for cluster-api.", + "v1EdgeNativeControlPlaneEndPoint": { + "type": "object", "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1VirtualClusterConfig" + "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" }, - "hostClusterUid": { + "host": { + "description": "Host is FQDN(DDNS) or IP", "type": "string" }, - "machinePoolConfig": { - "items": { - "$ref": "#/definitions/v1VirtualMachinePoolConfig" - }, - "type": "array" + "type": { + "description": "Type indicates DDNS or VIP", + "type": "string" } - }, + } + }, + "v1EdgeNativeHost": { + "description": "EdgeNativeHost is the underlying appliance", + "type": "object", "required": [ - "clusterConfig", - "hostClusterUid", - "machinePoolConfig" + "hostUid", + "hostAddress" ], - "type": "object" - }, - "v1VirtualClusterConfig": { - "description": "Cluster level configuration for virtual cluster", "properties": { - "controlPlaneEndpoint": { - "$ref": "#/definitions/v1APIEndpoint" - }, - "helmRelease": { - "$ref": "#/definitions/v1VirtualClusterHelmRelease" + "IsCandidateCaption": { + "description": "Is Edge host nominated as candidate", + "type": "boolean", + "default": false, + "x-omitempty": false }, - "kubernetesVersion": { - "default": "", - "type": "string" - } - }, - "type": "object" - }, - "v1VirtualClusterHelmChart": { - "properties": { - "name": { - "default": "", + "caCert": { + "description": "CACert for TLS connections", "type": "string" }, - "repo": { - "default": "", - "type": "string" + "hostAddress": { + "description": "HostAddress is a FQDN or IP address of the Host", + "type": "string", + "default": "" }, - "version": { - "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" - } - }, - "type": "object" - }, - "v1VirtualClusterHelmRelease": { - "properties": { - "chart": { - "$ref": "#/definitions/v1VirtualClusterHelmChart" }, - "values": { - "default": "", + "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" + ] } - }, - "type": "object" - }, - "v1VirtualClusterResize": { - "properties": { - "instanceType": { - "$ref": "#/definitions/v1VirtualInstanceType" - } - }, - "required": [ - "instanceType" - ], - "type": "object" + } }, - "v1VirtualInstanceType": { + "v1EdgeNativeInstanceType": { + "description": "EdgeNativeInstanceType defines the instance configuration for a docker container node", + "type": "object", "properties": { - "maxCPU": { - "description": "Maximum CPU cores", - "format": "int32", - "type": "integer" - }, - "maxMemInMiB": { - "description": "Maximum memory in MiB", - "format": "int32", - "type": "integer" - }, - "maxStorageGiB": { - "description": "Maximum storage in GiB", - "format": "int32", - "type": "integer" + "diskGiB": { + "description": "DiskGiB is the size of a virtual machine's disk", + "type": "integer", + "format": "int32" }, - "minCPU": { - "description": "Minimum CPU cores", - "format": "int32", - "type": "integer" + "memoryMiB": { + "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", + "type": "integer", + "format": "int32" }, - "minMemInMiB": { - "description": "Minimum memory in MiB", - "format": "int32", - "type": "integer" + "name": { + "description": "Name is the instance name", + "type": "string" }, - "minStorageGiB": { - "description": "Minimum storage in GiB", - "format": "int32", - "type": "integer" - } - }, - "type": "object" + "numCPUs": { + "description": "NumCPUs is the number of CPUs", + "type": "integer", + "format": "int32" + } + } }, - "v1VirtualMachine": { - "description": "Virtual cloud machine definition", + "v1EdgeNativeMachine": { + "description": "EdgeNative cloud VM definition", "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, "kind": { + "description": "Deprecated. Cloud type of the machine.", "type": "string" }, "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1VirtualMachineSpec" + "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": { - "$ref": "#/definitions/v1CloudMachineStatus" + "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" + } }, - "v1VirtualMachinePoolCloudConfigEntity": { + "v1EdgeNativeMachinePoolCloudConfigEntity": { + "required": [ + "edgeHosts" + ], "properties": { - "instanceType": { - "$ref": "#/definitions/v1VirtualInstanceType" + "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" + ] + } + } + } } - }, + } + }, + "v1EdgeNativeMachinePoolConfig": { + "type": "object", "required": [ - "instanceType" + "hosts" ], - "type": "object" - }, - "v1VirtualMachinePoolConfig": { "properties": { "additionalLabels": { + "description": "AdditionalLabels", + "type": "object", "additionalProperties": { - "type": "string" - }, - "description": "additionalLabels", - "type": "object" + "type": "string", + "default": "" + } }, "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" + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } }, - "azs": { + "hosts": { + "type": "array", "items": { - "type": "string" - }, - "type": "array" - }, - "instanceType": { - "$ref": "#/definitions/v1VirtualInstanceType", - "description": "InstanceType defines the required CPU, Memory" + "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", @@ -33501,50576 +286836,128298 @@ }, "labels": { "description": "labels for this pool, example: master/worker, gpu, windows", + "type": "array", "items": { - "type": "string" - }, - "type": "array" + "type": "string", + "default": "" + } }, "machinePoolProperties": { - "$ref": "#/definitions/v1MachinePoolProperties" + "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", - "format": "int32", - "type": "integer" + "type": "integer", + "format": "int32" }, "minSize": { "description": "min size of the pool, for scaling", - "format": "int32", - "type": "integer" + "type": "integer", + "format": "int32" }, "name": { "type": "string" }, - "resourcePool": { + "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", - "format": "int32", - "type": "integer" + "type": "integer", + "format": "int32" }, "taints": { "description": "master or worker taints", - "items": { - "$ref": "#/definitions/v1Taint" - }, "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": { - "$ref": "#/definitions/v1UpdateStrategy", - "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + "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" } - }, - "required": [ - "instanceType" - ], - "type": "object" - }, - "v1VirtualMachinePoolConfigEntity": { - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1VirtualMachinePoolCloudConfigEntity" - } - }, - "required": [ - "cloudConfig" - ], - "type": "object" - }, - "v1VirtualMachineSnapshot": { - "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1VmObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1VirtualMachineSnapshotSpec" - }, - "status": { - "$ref": "#/definitions/v1VirtualMachineSnapshotStatus" - } - }, - "required": [ - "spec" - ], - "type": "object" - }, - "v1VirtualMachineSnapshotList": { - "description": "VirtualMachineSnapshotList is a list of VirtualMachineSnapshot resources", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "items": { - "items": { - "$ref": "#/definitions/v1VirtualMachineSnapshot" - }, - "type": "array" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1VmListMeta" - } - }, - "required": [ - "metadata", - "items" - ], - "type": "object" - }, - "v1VirtualMachineSnapshotSpec": { - "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", - "properties": { - "deletionPolicy": { - "type": "string" - }, - "failureDeadline": { - "$ref": "#/definitions/v1VmDuration" - }, - "source": { - "$ref": "#/definitions/v1VmTypedLocalObjectReference" - } - }, - "required": [ - "source" - ], - "type": "object" + } }, - "v1VirtualMachineSnapshotStatus": { - "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", - "properties": { - "conditions": { - "items": { - "$ref": "#/definitions/v1VmCondition" - }, - "type": "array" - }, - "creationTime": { - "$ref": "#/definitions/v1Time" - }, - "error": { - "$ref": "#/definitions/v1VmError" - }, - "indications": { - "items": { - "type": "string" - }, - "type": "array", - "x-kubernetes-list-type": "set" - }, - "phase": { - "type": "string" - }, - "readyToUse": { - "type": "boolean" - }, - "snapshotVolumes": { - "$ref": "#/definitions/v1VmSnapshotVolumesLists" - }, - "sourceUID": { - "type": "string" - }, - "virtualMachineSnapshotContentName": { - "type": "string" - } - }, + "v1EdgeNativeMachinePoolConfigEntity": { "type": "object", - "x-nullable": true - }, - "v1VirtualMachineSpec": { - "description": "Virtual cloud machine definition spec", - "properties": { - "hostname": { - "type": "string" - } - }, - "type": "object" - }, - "v1VirtualMachines": { - "description": "List of virtual machines", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1VirtualMachine" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1VirtualNetwork": { - "description": "Azure virtual network is the fundamental building block for your private network in Azure.", - "properties": { - "addressSpaces": { - "description": "Location of the virtual network", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "id": { - "description": "The ID of the resource group", - "type": "string" - }, - "location": { - "description": "Location of the virtual network", - "type": "string" - }, - "name": { - "description": "Name of the virtual network", - "type": "string" - }, - "subnets": { - "description": "List of subnets associated with Azure VPC", - "items": { - "$ref": "#/definitions/v1Subnet" - }, - "type": "array" - }, - "type": { - "description": "Type of the virtual network", - "type": "string" - } - }, - "type": "object" - }, - "v1VmAccessCredential": { - "description": "AccessCredential represents a credential source that can be used to authorize remote access to the vm guest Only one of its members may be specified.", - "properties": { - "sshPublicKey": { - "$ref": "#/definitions/v1VmSshPublicKeyAccessCredential" - }, - "userPassword": { - "$ref": "#/definitions/v1VmUserPasswordAccessCredential" - } - }, - "type": "object" - }, - "v1VmAccessCredentialSecretSource": { - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - }, - "required": [ - "secretName" - ], - "type": "object" - }, - "v1VmAddVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "properties": { - "disk": { - "$ref": "#/definitions/v1VmDisk" - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "items": { - "type": "string" - }, - "type": "array", - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "$ref": "#/definitions/v1VmHotplugVolumeSource" - } - }, - "required": [ - "name", - "disk", - "volumeSource" - ], - "type": "object" - }, - "v1VmAffinity": { - "description": "Affinity is a group of affinity scheduling rules.", - "properties": { - "nodeAffinity": { - "$ref": "#/definitions/v1VmNodeAffinity" - }, - "podAffinity": { - "$ref": "#/definitions/v1VmPodAffinity" - }, - "podAntiAffinity": { - "$ref": "#/definitions/v1PodAntiAffinity" - } - }, - "type": "object" - }, - "v1VmBIOS": { - "description": "If set (default), BIOS will be used.", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - }, - "type": "object" - }, - "v1VmBlockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "properties": { - "custom": { - "$ref": "#/definitions/v1VmCustomBlockSize" - }, - "matchVolume": { - "$ref": "#/definitions/v1VmFeatureState" - } - }, - "type": "object" - }, - "v1VmBootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", "properties": { - "bios": { - "$ref": "#/definitions/v1VmBIOS" + "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" + ] + } + } + } + } + } }, - "efi": { - "$ref": "#/definitions/v1VmEFI" + "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": "object" + } }, - "v1VmCDRomTarget": { + "v1EdgeNativeMachinePoolHostEntity": { + "required": [ + "hostUid" + ], "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", + "hostName": { + "description": "Edge host name", "type": "string" }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - }, - "type": "object" - }, - "v1VmChassis": { - "description": "Chassis specifies the chassis info passed to the domain.", - "properties": { - "asset": { + "hostUid": { + "description": "Edge host id", "type": "string" }, - "manufacturer": { - "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" + } + } }, - "serial": { + "nicName": { + "description": "Deprecated - Edge host nic name", "type": "string" }, - "sku": { + "staticIP": { + "description": "Deprecated - Edge host static IP", "type": "string" }, - "version": { - "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" + ] } - }, - "type": "object" - }, - "v1VmClientPassthroughDevices": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" + } }, - "v1VmClock": { - "description": "Represents the clock and timers of a vmi.", + "v1EdgeNativeMachineSpec": { + "description": "EdgeNative cloud VM definition spec", + "type": "object", "properties": { - "timer": { - "$ref": "#/definitions/v1VmTimer" - }, - "timezone": { - "description": "Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').", + "edgeHostUid": { "type": "string" }, - "utc": { - "$ref": "#/definitions/v1VmClockOffsetUTC" - } - }, - "type": "object" - }, - "v1VmClockOffsetUTC": { - "description": "UTC sets the guest clock to UTC on each boot.", - "properties": { - "offsetSeconds": { - "description": "OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.", - "format": "int32", - "type": "integer" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1VmCloudInitConfigDriveSource": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", + "v1EdgeNativeMachines": { + "description": "EdgeNative machine list", + "type": "object", + "required": [ + "items" + ], "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "$ref": "#/definitions/v1VmLocalObjectReference" - }, - "secretRef": { - "$ref": "#/definitions/v1VmLocalObjectReference" - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" + "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" + } }, - "v1VmCloudInitNoCloudSource": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", + "v1EdgeNativeNic": { + "description": "Generic network interface", + "type": "object", "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" + "index": { + "type": "integer", + "format": "int8" }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", + "networkName": { "type": "string" }, - "networkDataSecretRef": { - "$ref": "#/definitions/v1VmLocalObjectReference" - }, - "secretRef": { - "$ref": "#/definitions/v1VmLocalObjectReference" - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" + "privateIPs": { + "type": "array", + "items": { + "type": "string" + } }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", + "publicIp": { "type": "string" } - }, - "type": "object" + } }, - "v1VmCondition": { - "description": "Condition defines conditions", + "v1EdgeNativeOverlayNetworkConfiguration": { + "type": "object", "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { + "cidr": { + "description": "CIDR is the CIDR of the overlay network", "type": "string" }, - "type": { - "type": "string" + "enable": { + "description": "Enable is a flag to enable overlay network", + "type": "boolean", + "x-omitempty": false } - }, - "required": [ - "type", - "status" - ], - "type": "object" - }, - "v1VmConfigDriveSshPublicKeyAccessCredentialPropagation": { - "type": "object" + } }, - "v1VmConfigMapVolumeSource": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", + "v1EdgeNativeTwoNodeCandidateEntity": { + "type": "object", "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "primaryEdgeHost": { "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).", + "secondaryEdgeHost": { "type": "string" } - }, - "type": "object" + } }, - "v1VmContainerDiskSource": { - "description": "Represents a docker image with an embedded disk.", + "v1EdgeServiceLogin": { + "description": "System service login input", + "type": "object", "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", + "authToken": { + "description": "authToken helps in two step verification for the authorization.", "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", + "edgeHostUid": { "type": "string" }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", + "serviceName": { "type": "string" }, - "path": { - "description": "Path defines the path to disk file in the container", + "serviceVersion": { "type": "string" - } - }, - "required": [ - "image" - ], - "type": "object" - }, - "v1VmCoreDataVolumeSource": { - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", + "spectroClusterUid": { "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "v1VmCoreResourceRequirements": { - "description": "ResourceRequirements describes the compute resource requirements.", - "properties": { - "limits": { - "additionalProperties": { - "$ref": "#/definitions/v1VmQuantity" - }, - "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "type": "object" - }, - "requests": { - "additionalProperties": { - "$ref": "#/definitions/v1VmQuantity" - }, - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "type": "object" - } - }, - "type": "object" - }, - "v1VmCpu": { - "description": "CPU allows specifying the CPU topology.", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "format": "int64", - "type": "integer" }, - "dedicatedCpuPlacement": { - "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", - "type": "boolean" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "items": { - "$ref": "#/definitions/v1VmCpuFeature" - }, - "type": "array" - }, - "isolateEmulatorThread": { - "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", - "type": "boolean" - }, - "model": { - "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", + "tenantUid": { "type": "string" - }, - "numa": { - "$ref": "#/definitions/v1VmNUMA" - }, - "realtime": { - "$ref": "#/definitions/v1VmRealtime" - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "format": "int64", - "type": "integer" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "format": "int64", - "type": "integer" } - }, - "type": "object" + } }, - "v1VmCpuFeature": { - "description": "CPUFeature allows specifying a CPU feature.", + "v1EdgeToken": { + "description": "Edge token information", + "type": "object", "properties": { - "name": { - "description": "Name of the CPU feature", - "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" + } + } }, - "policy": { - "description": "Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "v1VmCustomBlockSize": { - "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", - "properties": { - "logical": { - "format": "int32", - "type": "integer" + "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" + } + } }, - "physical": { - "format": "int32", - "type": "integer" + "status": { + "description": "Edge token status", + "type": "object", + "properties": { + "isActive": { + "description": "Set to 'true', if the token is active", + "type": "boolean", + "x-omitempty": false + } + } } - }, - "required": [ - "logical", - "physical" - ], - "type": "object" + } }, - "v1VmDHCPOptions": { - "description": "Extra DHCP options to use in the interface.", + "v1EdgeTokenActiveState": { + "description": "Edge token active state", "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "items": { - "type": "string" - }, - "type": "array" - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "items": { - "$ref": "#/definitions/v1VmDHCPPrivateOptions" - }, - "type": "array" - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" + "isActive": { + "description": "Set to 'true', if the token is active", + "type": "boolean" } - }, - "type": "object" + } }, - "v1VmDHCPPrivateOptions": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", + "v1EdgeTokenEntity": { + "description": "Edge token request payload", + "type": "object", "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "format": "int32", - "type": "integer" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - }, - "required": [ - "option", - "value" - ], - "type": "object" - }, - "v1VmDataVolumeBlankImage": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" + "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" + } + } + } + } }, - "v1VmDataVolumeCheckpoint": { - "description": "DataVolumeCheckpoint defines a stage in a warm migration.", + "v1EdgeTokenProject": { + "description": "Edge token project information", + "type": "object", "properties": { - "current": { - "description": "Current is the identifier of the snapshot created for this checkpoint.", + "name": { + "description": "Project name", "type": "string" }, - "previous": { - "description": "Previous is the identifier of the snapshot from the previous checkpoint.", + "uid": { + "description": "Project uid", "type": "string" } - }, - "required": [ - "previous", - "current" - ], - "type": "object" + } }, - "v1VmDataVolumeSource": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", + "v1EdgeTokenSpec": { + "description": "Edge token specification", + "type": "object", "properties": { - "blank": { - "$ref": "#/definitions/v1VmDataVolumeBlankImage" - }, - "http": { - "$ref": "#/definitions/v1VmDataVolumeSourceHttp" - }, - "imageio": { - "$ref": "#/definitions/v1VmDataVolumeSourceImageIO" - }, - "pvc": { - "$ref": "#/definitions/v1VmDataVolumeSourcePVC" - }, - "registry": { - "$ref": "#/definitions/v1VmDataVolumeSourceRegistry" - }, - "s3": { - "$ref": "#/definitions/v1VmDataVolumeSourceS3" + "defaultProject": { + "description": "Edge token project information", + "type": "object", + "properties": { + "name": { + "description": "Project name", + "type": "string" + }, + "uid": { + "description": "Project uid", + "type": "string" + } + } }, - "upload": { - "$ref": "#/definitions/v1VmDataVolumeSourceUpload" + "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" }, - "vddk": { - "$ref": "#/definitions/v1VmDataVolumeSourceVDDK" + "token": { + "description": "Edge token", + "type": "string" } - }, - "type": "object" + } }, - "v1VmDataVolumeSourceHttp": { - "description": "DataVolumeSourceHTTP can be either an http or https endpoint, with an optional basic auth user name and password, and an optional configmap containing additional CAs", + "v1EdgeTokenSpecEntity": { + "description": "Edge token specification", + "type": "object", "properties": { - "certConfigMap": { - "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate", - "type": "string" - }, - "extraHeaders": { - "description": "ExtraHeaders is a list of strings containing extra headers to include with HTTP transfer requests", - "items": { - "type": "string" - }, - "type": "array" - }, - "secretExtraHeaders": { - "description": "SecretExtraHeaders is a list of Secret references, each containing an extra HTTP header that may include sensitive information", - "items": { - "type": "string" - }, - "type": "array" - }, - "secretRef": { - "description": "SecretRef A Secret reference, the secret should contain accessKeyId (user name) base64 encoded, and secretKey (password) also base64 encoded", + "defaultProjectUid": { + "description": "Default project where the edgehost will be placed on the token authorization", "type": "string" }, - "url": { - "description": "URL is the URL of the http(s) endpoint", - "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" } - }, - "required": [ - "url" - ], - "type": "object" + } }, - "v1VmDataVolumeSourceImageIO": { - "description": "DataVolumeSourceImageIO provides the parameters to create a Data Volume from an imageio source", + "v1EdgeTokenSpecUpdate": { + "description": "Edge token spec to be updated", "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", + "defaultProjectUid": { + "description": "Default project where the edgehost will be placed on the token authorization", "type": "string" }, - "url": { - "description": "URL is the URL of the ovirt-engine", - "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" } - }, - "required": [ - "url", - "diskId" - ], - "type": "object" + } }, - "v1VmDataVolumeSourcePVC": { - "description": "DataVolumeSourcePVC provides the parameters to create a Data Volume from an existing PVC", + "v1EdgeTokenStatus": { + "description": "Edge token status", + "type": "object", "properties": { - "name": { - "description": "The name of the source PVC", - "type": "string" - }, - "namespace": { - "description": "The namespace of the source PVC", - "type": "string" + "isActive": { + "description": "Set to 'true', if the token is active", + "type": "boolean", + "x-omitempty": false } - }, - "required": [ - "namespace", - "name" - ], - "type": "object" + } }, - "v1VmDataVolumeSourceRef": { - "description": "DataVolumeSourceRef defines an indirect reference to the source of data for the DataVolume", + "v1EdgeTokenUpdate": { + "description": "Edge token update request payload", + "type": "object", "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" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "namespace": { - "description": "The namespace of the source reference, defaults to the DataVolume namespace", - "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" + } + } } - }, + } + }, + "v1EdgeTokens": { + "type": "object", "required": [ - "kind", - "name" + "items" ], - "type": "object" - }, - "v1VmDataVolumeSourceRegistry": { - "description": "DataVolumeSourceRegistry provides the parameters to create a Data Volume from an registry source", "properties": { - "certConfigMap": { - "description": "CertConfigMap provides a reference to the Registry certs", - "type": "string" - }, - "imageStream": { - "description": "ImageStream is the name of image stream for import", - "type": "string" - }, - "pullMethod": { - "description": "PullMethod can be either \"pod\" (default import), or \"node\" (node docker cache based import)", - "type": "string" - }, - "secretRef": { - "description": "SecretRef provides the secret reference needed to access the Registry source", - "type": "string" - }, - "url": { - "description": "URL is the url of the registry source (starting with the scheme: docker, oci-archive)", - "type": "string" + "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 + } + } + } + } + } } - }, - "type": "object" + } }, - "v1VmDataVolumeSourceS3": { - "description": "DataVolumeSourceS3 provides the parameters to create a Data Volume from an S3 source", - "properties": { - "certConfigMap": { - "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate", - "type": "string" - }, - "secretRef": { - "description": "SecretRef provides the secret reference needed to access the S3 source", - "type": "string" - }, - "url": { - "description": "URL is the url of the S3 source", - "type": "string" - } - }, + "v1EksAddon": { + "description": "EksAddon represents a EKS addon", + "type": "object", "required": [ - "url" + "name", + "version" ], - "type": "object" - }, - "v1VmDataVolumeSourceUpload": { - "description": "DataVolumeSourceUpload provides the parameters to create a Data Volume by uploading the source", - "type": "object" - }, - "v1VmDataVolumeSourceVDDK": { - "description": "DataVolumeSourceVDDK provides the parameters to create a Data Volume from a Vmware source", "properties": { - "backingFile": { - "description": "BackingFile is the path to the virtual hard disk to migrate from vCenter/ESXi", - "type": "string" - }, - "initImageURL": { - "description": "InitImageURL is an optional URL to an image containing an extracted VDDK library, overrides v2v-vmware config map", - "type": "string" - }, - "secretRef": { - "description": "SecretRef provides a reference to a secret containing the username and password needed to access the vCenter or ESXi host", + "conflictResolution": { + "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.", "type": "string" }, - "thumbprint": { - "description": "Thumbprint is the certificate thumbprint of the vCenter or ESXi host", + "name": { + "description": "Name is the name of the addon", "type": "string" }, - "url": { - "description": "URL is the URL of the vCenter or ESXi host with the VM to migrate", + "serviceAccountRoleARN": { + "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account", "type": "string" }, - "uuid": { - "description": "UUID is the UUID of the virtual machine that the backing file is attached to in vCenter/ESXi", + "version": { + "description": "Version is the version of the addon to use", "type": "string" } - }, - "type": "object" + } }, - "v1VmDataVolumeSpec": { - "description": "DataVolumeSpec defines the DataVolume type specification", + "v1EksCloudClusterConfigEntity": { + "description": "EKS cloud cluster config entity", + "type": "object", "properties": { - "checkpoints": { - "description": "Checkpoints is a list of DataVolumeCheckpoints, representing stages in a multistage import.", - "items": { - "$ref": "#/definitions/v1VmDataVolumeCheckpoint" - }, - "type": "array" - }, - "contentType": { - "description": "DataVolumeContentType options: \"kubevirt\", \"archive\"", - "type": "string" - }, - "finalCheckpoint": { - "description": "FinalCheckpoint indicates whether the current DataVolumeCheckpoint is the final checkpoint.", - "type": "boolean" - }, - "preallocation": { - "description": "Preallocation controls whether storage for DataVolumes should be allocated in advance.", - "type": "boolean" - }, - "priorityClassName": { - "description": "PriorityClassName for Importer, Cloner and Uploader pod", - "type": "string" - }, - "pvc": { - "$ref": "#/definitions/v1VmPersistentVolumeClaimSpec" - }, - "source": { - "$ref": "#/definitions/v1VmDataVolumeSource" - }, - "sourceRef": { - "$ref": "#/definitions/v1VmDataVolumeSourceRef" - }, - "storage": { - "$ref": "#/definitions/v1VmStorageSpec" + "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": "object" + } }, - "v1VmDataVolumeTemplateSpec": { + "v1EksCloudConfig": { + "description": "EksCloudConfig is the Schema for the ekscloudconfigs API", + "type": "object", "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.", + "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": "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.", + "description": "Cloud type of the cloud config", "type": "string" }, "metadata": { - "$ref": "#/definitions/v1VmObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1VmDataVolumeSpec" + "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 + } + } + } + } + } } - }, - "required": [ - "spec" - ], - "type": "object" + } }, - "v1VmDevices": { + "v1EksCloudConfigSpec": { + "description": "EksCloudConfigSpec defines the cloud configuration input by user", + "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": { - "$ref": "#/definitions/v1VmClientPassthroughDevices" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" + "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" + } + } }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "items": { - "$ref": "#/definitions/v1VmDisk" - }, - "type": "array" + "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" + } + } }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "items": { - "$ref": "#/definitions/v1VmFilesystem" - }, + "fargateProfiles": { "type": "array", - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", "items": { - "$ref": "#/definitions/v1VmGPU" - }, - "type": "array", - "x-kubernetes-list-type": "atomic" + "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" + } + } + } + } }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "items": { - "$ref": "#/definitions/v1VmHostDevice" - }, + "machinePoolConfig": { "type": "array", - "x-kubernetes-list-type": "atomic" - }, - "inputs": { - "description": "Inputs describe input devices", - "items": { - "$ref": "#/definitions/v1VmInput" - }, - "type": "array" - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", "items": { - "$ref": "#/definitions/v1VmInterface" - }, - "type": "array" - }, - "networkInterfaceMultiqueue": { - "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", - "type": "boolean" - }, - "rng": { - "$ref": "#/definitions/v1VmRng" - }, - "sound": { - "$ref": "#/definitions/v1VmSoundDevice" - }, - "tpm": { - "$ref": "#/definitions/v1VmTPMDevice" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "$ref": "#/definitions/v1VmWatchdog" + "type": "object", + "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 + } + } + } } - }, - "type": "object" + } }, - "v1VmDisk": { + "v1EksClusterConfig": { + "description": "EksClusterConfig defines EKS specific config", + "type": "object", + "required": [ + "region" + ], "properties": { - "blockSize": { - "$ref": "#/definitions/v1VmBlockSize" - }, - "bootOrder": { - "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "format": "int32", - "type": "integer" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "$ref": "#/definitions/v1VmCDRomTarget" + "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" + } + } + } }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", + "bastionDisabled": { + "description": "BastionDisabled is the option to disable bastion node", "type": "boolean" }, - "disk": { - "$ref": "#/definitions/v1VmDiskTarget" - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "$ref": "#/definitions/v1VmLunTarget" - }, - "name": { - "description": "Name is the device name", + "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" }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "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" + } + } + } }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" + "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" + } + } + } }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "v1VmDiskTarget": { - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", + "region": { + "description": "The AWS Region the cluster lives in.", "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", + "sshKeyName": { + "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.", "type": "string" }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - }, - "type": "object" - }, - "v1VmDomainSpec": { - "properties": { - "chassis": { - "$ref": "#/definitions/v1VmChassis" - }, - "clock": { - "$ref": "#/definitions/v1VmClock" - }, - "cpu": { - "$ref": "#/definitions/v1VmCpu" - }, - "devices": { - "$ref": "#/definitions/v1VmDevices" - }, - "features": { - "$ref": "#/definitions/v1VmFeatures" - }, - "firmware": { - "$ref": "#/definitions/v1VmFirmware" - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", + "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" - }, - "launchSecurity": { - "$ref": "#/definitions/v1VmLaunchSecurity" - }, - "machine": { - "$ref": "#/definitions/v1VmMachine" - }, - "memory": { - "$ref": "#/definitions/v1VmMemory" - }, - "resources": { - "$ref": "#/definitions/v1VmResourceRequirements" } - }, - "required": [ - "devices" - ], - "type": "object" + } }, - "v1VmDownwardApiVolumeFile": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", + "v1EksClusterConfigEndpointAccess": { + "description": "EndpointAccess specifies how control plane endpoints are accessible", + "type": "object", "properties": { - "fieldRef": { - "$ref": "#/definitions/v1VmObjectFieldSelector" - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "format": "int32", - "type": "integer" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" + "private": { + "description": "Private points VPC-internal control plane access to the private endpoint", + "type": "boolean" }, - "resourceFieldRef": { - "$ref": "#/definitions/v1VmResourceFieldSelector" - } - }, - "required": [ - "path" - ], - "type": "object" - }, - "v1VmDownwardApiVolumeSource": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", + "privateCIDRs": { + "description": "PrivateCIDRs specifies which blocks can access the private endpoint", + "type": "array", "items": { - "$ref": "#/definitions/v1VmDownwardApiVolumeFile" - }, - "type": "array" + "type": "string" + } }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - }, - "type": "object" - }, - "v1VmDownwardMetricsVolumeSource": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "v1VmDuration": { - "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", - "type": "string" - }, - "v1VmEFI": { - "description": "If set, EFI will be used instead of BIOS.", - "properties": { - "secureBoot": { - "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", + "public": { + "description": "Public controls whether control plane endpoints are publicly accessible", "type": "boolean" - } - }, - "type": "object" - }, - "v1VmEmptyDiskSource": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "properties": { - "capacity": { - "$ref": "#/definitions/v1VmQuantity" - } - }, - "required": [ - "capacity" - ], - "type": "object" - }, - "v1VmEphemeralVolumeSource": { - "properties": { - "persistentVolumeClaim": { - "$ref": "#/definitions/v1VmPersistentVolumeClaimVolumeSource" - } - }, - "type": "object" - }, - "v1VmError": { - "description": "Error is the last error encountered during the snapshot/restore", - "properties": { - "message": { - "type": "string" }, - "time": { - "$ref": "#/definitions/v1Time" - } - }, - "type": "object" - }, - "v1VmExecAction": { - "description": "ExecAction describes a \"run in container\" action.", - "properties": { - "command": { - "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", + "publicCIDRs": { + "description": "PublicCIDRs specifies which blocks can access the public endpoint", + "type": "array", "items": { "type": "string" - }, - "type": "array" + } } - }, - "type": "object" + } }, - "v1VmFeatureApiC": { + "v1EksFargateProfiles": { + "description": "Fargate profiles", + "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" + "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": "object" + } }, - "v1VmFeatureHyperv": { - "description": "Hyperv specific features.", + "v1EksMachineCloudConfigEntity": { "properties": { - "evmcs": { - "$ref": "#/definitions/v1VmFeatureState" - }, - "frequencies": { - "$ref": "#/definitions/v1VmFeatureState" + "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" + } + } + } + } }, - "ipi": { - "$ref": "#/definitions/v1VmFeatureState" + "azs": { + "type": "array", + "items": { + "type": "string" + } }, - "reenlightenment": { - "$ref": "#/definitions/v1VmFeatureState" + "capacityType": { + "description": "EC2 instance capacity type", + "type": "string", + "default": "on-demand", + "enum": [ + "on-demand", + "spot" + ] }, - "relaxed": { - "$ref": "#/definitions/v1VmFeatureState" + "enableAwsLaunchTemplate": { + "description": "flag to know if aws launch template is enabled", + "type": "boolean" }, - "reset": { - "$ref": "#/definitions/v1VmFeatureState" + "instanceType": { + "description": "instance type", + "type": "string" }, - "runtime": { - "$ref": "#/definitions/v1VmFeatureState" + "rootDeviceSize": { + "description": "rootDeviceSize in GBs", + "type": "integer", + "format": "int64", + "maximum": 2000, + "minimum": 1 }, - "spinlocks": { - "$ref": "#/definitions/v1VmFeatureSpinlocks" + "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" + } + } }, - "synic": { - "$ref": "#/definitions/v1VmFeatureState" + "subnets": { + "type": "array", + "items": { + "properties": { + "az": { + "type": "string" + }, + "id": { + "type": "string" + } + } + } + } + } + }, + "v1EksMachinePoolConfig": { + "type": "object", + "required": [ + "isControlPlane" + ], + "properties": { + "additionalLabels": { + "description": "additionalLabels", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "synictimer": { - "$ref": "#/definitions/v1VmSyNICTimer" + "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" + } }, - "tlbflush": { - "$ref": "#/definitions/v1VmFeatureState" + "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" + } + } + } + } }, - "vapic": { - "$ref": "#/definitions/v1VmFeatureState" + "azs": { + "description": "AZs is only used for dynamic placement", + "type": "array", + "items": { + "type": "string" + } }, - "vendorid": { - "$ref": "#/definitions/v1VmFeatureVendorId" + "capacityType": { + "description": "EC2 instance capacity type", + "type": "string", + "default": "on-demand", + "enum": [ + "on-demand", + "spot" + ] }, - "vpindex": { - "$ref": "#/definitions/v1VmFeatureState" - } - }, - "type": "object" - }, - "v1VmFeatureKVm": { - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - }, - "type": "object" - }, - "v1VmFeatureSpinlocks": { - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "enableAwsLaunchTemplate": { + "description": "flag to know if aws launch template is enabled", "type": "boolean" }, - "spinlocks": { - "description": "Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.", - "format": "int64", - "type": "integer" - } - }, - "type": "object" - }, - "v1VmFeatureState": { - "description": "Represents if a feature is enabled or disabled.", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - }, - "type": "object" - }, - "v1VmFeatureVendorId": { - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + "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" + } + } }, - "vendorid": { - "description": "VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.", + "instanceType": { + "description": "instance type", "type": "string" - } - }, - "type": "object" - }, - "v1VmFeatures": { - "properties": { - "acpi": { - "$ref": "#/definitions/v1VmFeatureState" }, - "apic": { - "$ref": "#/definitions/v1VmFeatureApiC" + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false }, - "hyperv": { - "$ref": "#/definitions/v1VmFeatureHyperv" + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "type": "array", + "items": { + "type": "string" + } }, - "kvm": { - "$ref": "#/definitions/v1VmFeatureKVm" + "machinePoolProperties": { + "description": "Machine pool specific properties", + "type": "object", + "properties": { + "archType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] + } + } }, - "pvspinlock": { - "$ref": "#/definitions/v1VmFeatureState" + "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" }, - "smm": { - "$ref": "#/definitions/v1VmFeatureState" - } - }, - "type": "object" - }, - "v1VmFieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:\\', where \\ is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "properties": { - "Raw": { - "items": { - "format": "byte", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1VmFilesystem": { - "properties": { "name": { - "description": "Name is the device name", "type": "string" }, - "virtiofs": { - "$ref": "#/definitions/v1VmFilesystemVirtiofs" - } - }, - "required": [ - "name", - "virtiofs" - ], - "type": "object" - }, - "v1VmFilesystemVirtiofs": { - "type": "object" - }, - "v1VmFirmware": { - "properties": { - "bootloader": { - "$ref": "#/definitions/v1VmBootloader" + "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" }, - "kernelBoot": { - "$ref": "#/definitions/v1VmKernelBoot" + "rootDeviceSize": { + "description": "rootDeviceSize in GBs", + "type": "integer", + "format": "int64" }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" + "size": { + "description": "size of the pool, number of machines", + "type": "integer", + "format": "int32" }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - }, - "type": "object" - }, - "v1VmGPU": { - "properties": { - "deviceName": { - "type": "string" + "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" + } + } }, - "name": { - "description": "Name of the GPU device as exposed by a device plugin", - "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" + } }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "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" + } + } + } }, - "virtualGPUOptions": { - "$ref": "#/definitions/v1VmVGPUOptions" + "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 } - }, - "required": [ - "name", - "deviceName" - ], - "type": "object" - }, - "v1VmGuestAgentPing": { - "description": "GuestAgentPing configures the guest-agent based ping probe", - "type": "object" + } }, - "v1VmHPETTimer": { + "v1EksMachinePoolConfigEntity": { "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" + "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" + } + } + } + } + } }, - "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" + "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": "object" + } }, - "v1VmHostDevice": { + "v1EksSubnetEntity": { "properties": { - "deviceName": { - "description": "DeviceName is the resource name of the host device exposed by a device plugin", - "type": "string" - }, - "name": { + "az": { "type": "string" }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "id": { "type": "string" } - }, - "required": [ - "name", - "deviceName" - ], - "type": "object" + } }, - "v1VmHostDisk": { - "description": "Represents a disk created on the cluster level", + "v1EncryptionConfig": { + "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.", + "type": "object", "properties": { - "capacity": { - "$ref": "#/definitions/v1VmQuantity" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", + "isEnabled": { + "description": "Is encryption configuration enabled for the cluster", "type": "boolean" }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "provider": { + "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)", "type": "string" - } - }, - "required": [ - "path", - "type" - ], - "type": "object" - }, - "v1VmHotplugVolumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "properties": { - "dataVolume": { - "$ref": "#/definitions/v1VmCoreDataVolumeSource" }, - "persistentVolumeClaim": { - "$ref": "#/definitions/v1VmPersistentVolumeClaimVolumeSource" + "resources": { + "description": "Resources specifies the resources to be encrypted", + "type": "array", + "items": { + "type": "string" + } } - }, - "type": "object" + } }, - "v1VmHttpGetAction": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", + "v1Event": { + "description": "Describes the component event details", + "type": "object", "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", + "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" }, - "httpHeaders": { - "description": "Custom headers to set in the request. HTTP allows repeated headers.", - "items": { - "$ref": "#/definitions/v1VmHttpHeader" - }, - "type": "array" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "path": { - "description": "Path to access on the HTTP server.", + "reason": { + "description": "Describes the reason for the event", "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.", + "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" + } + } } - }, - "required": [ - "port" - ], - "type": "object" + } }, - "v1VmHttpHeader": { - "description": "HTTPHeader describes a custom header to be used in HTTP probes", + "v1EventRelatedObject": { + "description": "Object for which the event is related", + "type": "object", "properties": { + "kind": { + "type": "string", + "enum": [ + "spectrocluster", + "edgehost" + ] + }, "name": { - "description": "The header field name", "type": "string" }, - "value": { - "description": "The header field value", + "uid": { "type": "string" } - }, - "required": [ - "name", - "value" - ], - "type": "object" + } }, - "v1VmHugepages": { - "description": "Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.", + "v1EventSource": { + "description": "Describes the origin for the event", + "type": "object", "properties": { - "pageSize": { - "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", + "component": { + "description": "Describes the component where event originated", "type": "string" - } - }, - "type": "object" - }, - "v1VmHypervTimer": { - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - } - }, - "type": "object" - }, - "v1VmI6300ESBWatchdog": { - "description": "i6300esb watchdog device.", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", + }, + "host": { + "description": "Describes the host where event originated", "type": "string" } - }, - "type": "object" + } }, - "v1VmInput": { + "v1Events": { + "description": "An array of component events items", + "type": "object", + "required": [ + "items" + ], "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" + "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" + } + } + } + } + } }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "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 + } + } } - }, + } + }, + "v1EventsRelatedObjectsEntity": { + "type": "object", "required": [ - "type", - "name" + "relatedObjectUids" ], - "type": "object" - }, - "v1VmInstancetypeMatcher": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI template.", "properties": { - "inferFromVolume": { - "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the instancetype to be used through known annotations on the underlying resource. Once applied to the InstancetypeMatcher this field is removed.", - "type": "string" - }, - "kind": { - "description": "Kind specifies which instancetype resource is referenced. Allowed values are: \"VirtualMachineInstancetype\" and \"VirtualMachineClusterInstancetype\". If not specified, \"VirtualMachineClusterInstancetype\" is used by default.", - "type": "string" - }, - "name": { - "description": "Name is the name of the VirtualMachineInstancetype or VirtualMachineClusterInstancetype", - "type": "string" - }, - "revisionName": { - "description": "RevisionName specifies a ControllerRevision containing a specific copy of the VirtualMachineInstancetype or VirtualMachineClusterInstancetype to be used. This is initially captured the first time the instancetype is applied to the VirtualMachineInstance.", - "type": "string" + "relatedObjectUids": { + "description": "List of uids of the related object", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } } - }, - "type": "object" + } }, - "v1VmInterface": { + "v1FargateProfile": { + "description": "FargateProfile defines the desired state of FargateProfile", + "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).", - "format": "int32", - "type": "integer" - }, - "bootOrder": { - "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", - "format": "int32", - "type": "integer" - }, - "bridge": { - "$ref": "#/definitions/v1VmInterfaceBridge" - }, - "dhcpOptions": { - "$ref": "#/definitions/v1VmDHCPOptions" - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "$ref": "#/definitions/v1VmInterfaceMacvtap" - }, - "masquerade": { - "$ref": "#/definitions/v1VmInterfaceMasquerade" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" + "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": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "$ref": "#/definitions/v1VmInterfacePasst" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", + "description": "name specifies the profile name.", "type": "string" }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", + "selectors": { + "description": "Selectors specify fargate pod selectors.", + "type": "array", "items": { - "$ref": "#/definitions/v1VmPort" - }, - "type": "array" - }, - "slirp": { - "$ref": "#/definitions/v1VmInterfaceSlirp" - }, - "sriov": { - "$ref": "#/definitions/v1VmInterfaceSRIOV" + "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" + } + } + } }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" + "subnetIds": { + "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.", + "type": "array", + "items": { + "type": "string" + } } - }, + } + }, + "v1FargateSelector": { + "description": "FargateSelector specifies a selector for pods that should run on this fargate pool", + "type": "object", "required": [ - "name" + "namespace" ], - "type": "object" - }, - "v1VmInterfaceBridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "v1VmInterfaceMacvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "v1VmInterfaceMasquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "v1VmInterfacePasst": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "v1VmInterfaceSRIOV": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "v1VmInterfaceSlirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "v1VmKVmTimer": { - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - } - }, - "type": "object" - }, - "v1VmKernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", "properties": { - "container": { - "$ref": "#/definitions/v1VmKernelBootContainer" + "labels": { + "description": "Labels specifies which pod labels this selector should match.", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", + "namespace": { + "description": "Namespace specifies which namespace this selector should match.", "type": "string" } - }, - "type": "object" + } }, - "v1VmKernelBootContainer": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", + "v1FileUploadResponse": { + "description": "File upload response", + "type": "object", "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", + "name": { "type": "string" }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", + "uid": { "type": "string" } - }, - "required": [ - "image" - ], - "type": "object" + } }, - "v1VmLabelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", + "v1FilterArray": { + "type": "object", "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "beginsWith": { + "type": "array", "items": { - "$ref": "#/definitions/v1VmLabelSelectorRequirement" + "type": "string" }, - "type": "array" + "x-nullable": true }, - "matchLabels": { - "additionalProperties": { + "eq": { + "type": "array", + "items": { "type": "string" }, - "description": "matchLabels is a map of key-value pairs. A single key-value in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": "object" - } - }, - "type": "object" - }, - "v1VmLabelSelectorRequirement": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" + "x-nullable": true }, - "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" + "ignoreCase": { + "type": "boolean", + "default": true }, - "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.", + "ne": { + "type": "array", "items": { "type": "string" }, - "type": "array" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "v1VmLaunchSecurity": { - "properties": { - "sev": { - "$ref": "#/definitions/v1VmSEV" + "x-nullable": true } - }, - "type": "object" + } }, - "v1VmListMeta": { - "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", + "v1FilterIntRange": { + "type": "object", "properties": { - "continue": { - "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", - "type": "string" + "eq": { + "type": "integer", + "format": "int32", + "x-nullable": true }, - "remainingItemCount": { - "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", - "format": "int64", - "type": "integer" + "gt": { + "type": "integer", + "format": "int32", + "x-nullable": true }, - "resourceVersion": { - "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", - "type": "string" + "gte": { + "type": "integer", + "format": "int32", + "x-nullable": true }, - "selfLink": { - "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" + "lt": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "lte": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "ne": { + "type": "integer", + "format": "int32", + "x-nullable": true } - }, - "type": "object" + } }, - "v1VmLocalObjectReference": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", + "v1FilterMetadata": { + "description": "Filter metadata object", + "type": "object", "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "filterType": { "type": "string" - } - }, - "type": "object" - }, - "v1VmLunTarget": { - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", + }, + "name": { "type": "string" }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - }, - "type": "object" - }, - "v1VmMachine": { - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", + "uid": { "type": "string" } - }, - "type": "object" + } }, - "v1VmManagedFieldsEntry": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", + "v1FilterNumberRange": { + "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": { - "$ref": "#/definitions/v1VmFieldsV1" + "eq": { + "type": "number", + "x-nullable": true }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" + "gt": { + "type": "number", + "x-nullable": true }, - "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" + "gte": { + "type": "number", + "x-nullable": true }, - "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" + "lt": { + "type": "number", + "x-nullable": true }, - "time": { - "$ref": "#/definitions/v1Time" - } - }, - "type": "object" - }, - "v1VmMemory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "properties": { - "guest": { - "$ref": "#/definitions/v1VmQuantity" + "lte": { + "type": "number", + "x-nullable": true }, - "hugepages": { - "$ref": "#/definitions/v1VmHugepages" + "ne": { + "type": "number", + "x-nullable": true } - }, - "type": "object" + } }, - "v1VmMemoryDumpVolumeSource": { + "v1FilterString": { + "type": "object", "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" + "beginsWith": { + "type": "string", + "x-nullable": true }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" + "contains": { + "type": "string", + "x-nullable": true }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" + "eq": { + "type": "string", + "x-nullable": true + }, + "ignoreCase": { + "type": "boolean", + "default": true + }, + "ne": { + "type": "string", + "x-nullable": true } - }, - "required": [ - "claimName" - ], - "type": "object" + } }, - "v1VmMultusNetwork": { - "description": "Represents the multus cni network.", + "v1FilterSummary": { + "description": "Filter summary object", + "type": "object", "properties": { - "default": { - "description": "Select the default network and add it to the multus-cni.io/default-network annotation.", - "type": "boolean" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "networkName": { - "description": "References to a NetworkAttachmentDefinition CRD object. Format: , /. If namespace is not specified, VMI namespace is assumed.", - "type": "string" + "spec": { + "properties": { + "filterType": { + "type": "string" + } + } } - }, - "required": [ - "networkName" - ], - "type": "object" + } }, - "v1VmNUMA": { + "v1FilterSummarySpec": { "properties": { - "guestMappingPassthrough": { - "$ref": "#/definitions/v1VmNUMAGuestMappingPassthrough" + "filterType": { + "type": "string" } - }, - "type": "object" - }, - "v1VmNUMAGuestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" + } }, - "v1VmNetwork": { - "description": "Network represents a network type and a resource that should be connected to the vm.", + "v1FilterVersionString": { + "type": "object", "properties": { - "multus": { - "$ref": "#/definitions/v1VmMultusNetwork" + "beginsWith": { + "type": "string", + "x-nullable": true }, - "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" + "eq": { + "type": "string", + "x-nullable": true }, - "pod": { - "$ref": "#/definitions/v1VmPodNetwork" + "gt": { + "type": "string", + "x-nullable": true + }, + "lt": { + "type": "string", + "x-nullable": true + }, + "ne": { + "type": "string", + "x-nullable": true } - }, + } + }, + "v1FiltersMetadata": { + "type": "object", "required": [ - "name" + "items" ], - "type": "object" - }, - "v1VmNodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", "properties": { - "preferredDuringSchedulingIgnoredDuringExecution": { - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", + "items": { + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1VmPreferredSchedulingTerm" - }, - "type": "array" - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "$ref": "#/definitions/v1VmNodeSelector" + "description": "Filter metadata object", + "type": "object", + "properties": { + "filterType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } } - }, - "type": "object" + } }, - "v1VmNodeSelector": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", + "v1FiltersSummary": { + "type": "object", + "required": [ + "items" + ], "properties": { - "nodeSelectorTerms": { - "description": "Required. A list of node selector terms. The terms are ORed.", + "items": { + "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/v1VmNodeSelectorTerm" - }, - "type": "array" + "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 + } + } } - }, - "required": [ - "nodeSelectorTerms" - ], - "type": "object" + } }, - "v1VmNodeSelectorRequirement": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "v1FipsSettings": { + "description": "FIPS configuration", "properties": { - "key": { - "description": "The label key that the selector applies to.", - "type": "string" + "fipsClusterFeatureConfig": { + "description": "Non-FIPS configuration", + "properties": { + "mode": { + "description": "enable or disable the non FIPS complaint", + "type": "string", + "default": "nonFipsDisabled", + "enum": [ + "nonFipsEnabled", + "nonFipsDisabled" + ] + } + } }, - "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", - "type": "string" + "fipsClusterImportConfig": { + "description": "Non-FIPS configuration", + "properties": { + "mode": { + "description": "enable or disable the non FIPS complaint", + "type": "string", + "default": "nonFipsDisabled", + "enum": [ + "nonFipsEnabled", + "nonFipsDisabled" + ] + } + } }, - "values": { - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", - "items": { - "type": "string" - }, - "type": "array" + "fipsPackConfig": { + "description": "Non-FIPS configuration", + "properties": { + "mode": { + "description": "enable or disable the non FIPS complaint", + "type": "string", + "default": "nonFipsDisabled", + "enum": [ + "nonFipsEnabled", + "nonFipsDisabled" + ] + } + } } - }, - "required": [ - "key", - "operator" - ], - "type": "object" + } }, - "v1VmNodeSelectorTerm": { - "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", + "v1FreemiumUsage": { + "type": "object", "properties": { - "matchExpressions": { - "description": "A list of node selector requirements by node's labels.", - "items": { - "$ref": "#/definitions/v1VmNodeSelectorRequirement" - }, - "type": "array" - }, - "matchFields": { - "description": "A list of node selector requirements by node's fields.", - "items": { - "$ref": "#/definitions/v1VmNodeSelectorRequirement" - }, - "type": "array" + "usage": { + "type": "number", + "format": "float64", + "x-omitempty": false } - }, - "type": "object" + } }, - "v1VmObjectFieldSelector": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", + "v1FreemiumUsageLimit": { + "type": "object", "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" + "activeClusters": { + "type": "integer", + "x-omitempty": false }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" + "overageUsage": { + "type": "number", + "x-omitempty": false + }, + "usage": { + "type": "number", + "format": "float64", + "x-omitempty": false } - }, - "required": [ - "fieldPath" - ], - "type": "object" + } }, - "v1VmObjectMeta": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "v1GPUConfig": { + "type": "object", "properties": { - "annotations": { + "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" - }, - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object" - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" + } }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "deviceModel": { + "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", "type": "string" }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "format": "int64", - "type": "integer" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "format": "date-time", - "type": "string", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "items": { - "type": "string" - }, - "type": "array", - "x-kubernetes-patch-strategy": "merge" + "numGPUs": { + "description": "NumGPUs is the number of GPUs", + "type": "integer", + "format": "int32" }, - "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.", + "vendorName": { + "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "format": "int64", - "type": "integer" - }, - "labels": { + } + } + }, + "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" - }, - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object" - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "items": { - "$ref": "#/definitions/v1VmManagedFieldsEntry" - }, - "type": "array" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "items": { - "$ref": "#/definitions/v1VmOwnerReference" - }, - "type": "array", - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" + } }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "model": { + "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", "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.", + "vendor": { + "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", "type": "string" } - }, - "type": "object" + } }, - "v1VmOwnerReference": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", + "v1GcpAccount": { + "description": "GCP account information", + "type": "object", "properties": { "apiVersion": { - "description": "API version of the referent.", + "description": "Deprecated. Not used for the resource info.", "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.", + "description": "Deprecated. Cloud type of the account.", "type": "string" }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "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" + } + } }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - }, - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "type": "object" - }, - "v1VmPITTimer": { - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" + "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" + } + } }, - "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" + "status": { + "description": "Status of the account", + "type": "object", + "properties": { + "state": { + "description": "Cloud account status", + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1VmPersistentVolumeClaimSpec": { - "description": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", + "v1GcpAccountEntity": { + "description": "GCP account information", + "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", - "items": { - "type": "string" - }, - "type": "array" - }, - "dataSource": { - "$ref": "#/definitions/v1VmTypedLocalObjectReference" - }, - "dataSourceRef": { - "$ref": "#/definitions/v1VmTypedLocalObjectReference" + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" }, - "resources": { - "$ref": "#/definitions/v1VmCoreResourceRequirements" + "kind": { + "description": "Deprecated. Cloud type of the account.", + "type": "string" }, - "selector": { - "$ref": "#/definitions/v1VmLabelSelector" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "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" + "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" + } + } }, - "volumeMode": { - "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", + "status": { + "description": "Status of the account", + "type": "object", + "properties": { + "state": { + "description": "Cloud account status", + "type": "string" + } + } + } + } + }, + "v1GcpAccountEntitySpec": { + "type": "object", + "properties": { + "jsonCredentials": { + "description": "Gcp cloud account json credentials", "type": "string" }, - "volumeName": { - "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", + "jsonCredentialsFileUid": { + "description": "Reference of the credentials stored in the file", "type": "string" } - }, - "type": "object" + } }, - "v1VmPersistentVolumeClaimVolumeSource": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "v1GcpAccountNameValidateSpec": { + "description": "Gcp cloud account name validate spec", + "type": "object", + "required": [ + "credentials", + "bucketName" + ], "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", + "bucketName": { + "description": "Bucket name in the GCP", "type": "string" }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" + "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" + } + } }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" + "projectId": { + "description": "ProjectId in the GCP", + "type": "string" } - }, - "required": [ - "claimName" - ], - "type": "object" + } }, - "v1VmPodAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", + "v1GcpAccountSpec": { + "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.", - "items": { - "$ref": "#/definitions/v1VmWeightedPodAffinityTerm" - }, - "type": "array" + "jsonCredentials": { + "description": "Gcp cloud account json credentials", + "type": "string" }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", - "items": { - "$ref": "#/definitions/v1VmPodAffinityTerm" - }, - "type": "array" + "jsonCredentialsFileName": { + "description": "Reference of the credentials stored in the file", + "type": "string" } - }, - "type": "object" + } }, - "v1VmPodAffinityTerm": { - "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", + "v1GcpAccountValidateSpec": { + "description": "Gcp cloud account entity which takes json credentials or reference to the file where credentials are stored", + "type": "object", "properties": { - "labelSelector": { - "$ref": "#/definitions/v1VmLabelSelector" - }, - "namespaceSelector": { - "$ref": "#/definitions/v1VmLabelSelector" - }, - "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"", - "items": { - "type": "string" - }, - "type": "array" + "jsonCredentials": { + "description": "Gcp cloud account json credentials", + "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.", + "jsonCredentialsFileUid": { + "description": "Reference of the credentials stored in the file", "type": "string" } - }, + } + }, + "v1GcpAccounts": { + "type": "object", "required": [ - "topologyKey" + "items" ], - "type": "object" - }, - "v1VmPodDnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", "properties": { - "nameservers": { - "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.", - "items": { - "type": "string" - }, - "type": "array" - }, - "options": { - "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.", - "items": { - "$ref": "#/definitions/v1VmPodDnsConfigOption" - }, - "type": "array" - }, - "searches": { - "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.", + "items": { + "type": "array", + "uniqueItems": true, "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1VmPodDnsConfigOption": { - "description": "PodDNSConfigOption defines DNS resolver options of a pod.", - "properties": { - "name": { - "description": "Required.", - "type": "string" + "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" + } + } + } + } + } }, - "value": { - "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" + } }, - "v1VmPodNetwork": { - "description": "Represents the stock pod network interface.", + "v1GcpCloudAccountValidateEntity": { + "description": "Gcp cloud account spec", + "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" + "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": "object" + } }, - "v1VmPort": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", + "v1GcpCloudClusterConfigEntity": { + "description": "Gcp cloud cluster config entity", + "type": "object", "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 < x < 65536.", - "format": "int32", - "type": "integer" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" + "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" + } + } } - }, - "required": [ - "port" - ], - "type": "object" + } }, - "v1VmPreferenceMatcher": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI template.", + "v1GcpCloudConfig": { + "description": "GcpCloudConfig is the Schema for the gcpcloudconfigs API", + "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.", + "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": "Kind specifies which preference resource is referenced. Allowed values are: \"VirtualMachinePreference\" and \"VirtualMachineClusterPreference\". If not specified, \"VirtualMachineClusterPreference\" is used by default.", + "description": "Cloud type of the cloud config", "type": "string" }, - "name": { - "description": "Name is the name of the VirtualMachinePreference or VirtualMachineClusterPreference", - "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" + } + } }, - "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" + "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" + } + } } - }, - "type": "object" + } }, - "v1VmPreferredSchedulingTerm": { - "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", + "v1GcpCloudConfigSpec": { + "description": "GcpCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "type": "object", "properties": { - "preference": { - "$ref": "#/definitions/v1VmNodeSelectorTerm" + "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" + } + } }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "format": "int32", - "type": "integer" + "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" + } + } + } } - }, - "required": [ - "weight", - "preference" - ], - "type": "object" + } }, - "v1VmProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", + "v1GcpCloudConfigStatus": { + "description": "GcpCloudConfigStatus defines the observed state of GcpCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", + "type": "object", "properties": { - "exec": { - "$ref": "#/definitions/v1VmExecAction" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", - "format": "int32", - "type": "integer" - }, - "guestAgentPing": { - "$ref": "#/definitions/v1VmGuestAgentPing" + "ansibleRoleDigest": { + "description": "For mold controller to identify if is there any changes in Pack", + "type": "string" }, - "httpGet": { - "$ref": "#/definitions/v1VmHttpGetAction" + "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" + } + } + } }, - "initialDelaySeconds": { - "description": "Number of seconds after the VirtualMachineInstance has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "format": "int32", - "type": "integer" + "images": { + "description": "Refers to GCP image", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "os": { + "type": "string" + }, + "region": { + "type": "string" + }, + "state": { + "type": "string" + } + } }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", - "format": "int32", - "type": "integer" + "isAddonLayer": { + "description": "addon layers present in spc", + "type": "boolean" }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.", - "format": "int32", - "type": "integer" + "roleDigest": { + "description": "this map will be for ansible roles present in each pack", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "tcpSocket": { - "$ref": "#/definitions/v1VmTcpSocketAction" + "sourceImageId": { + "description": "sourceImageId, it can be from packref's annotations or from pack.json", + "type": "string" }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out. For exec probes the timeout fails the probe but does not terminate the command running on the guest. This means a blocking command can result in an increasing load on the guest. A small buffer will be added to the resulting workload exec probe to compensate for delays caused by the qemu guest exec mechanism. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "format": "int32", - "type": "integer" + "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" + } }, - "v1VmQemuGuestAgentSshPublicKeyAccessCredentialPropagation": { - "properties": { - "users": { - "description": "Users represents a list of guest users that should have the ssh public keys added to their authorized_keys file.", - "items": { - "type": "string" - }, - "type": "array", - "x-kubernetes-list-type": "set" - } - }, + "v1GcpClusterConfig": { + "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools", + "type": "object", "required": [ - "users" + "project", + "region" ], - "type": "object" - }, - "v1VmQemuGuestAgentUserPasswordAccessCredentialPropagation": { - "type": "object" - }, - "v1VmQuantity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the \"\" case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= \"e\" | \"E\" \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "v1VmRTCTimer": { "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" + "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" + } + } }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".", + "network": { + "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used", "type": "string" }, - "track": { - "description": "Track the guest or the wall clock.", - "type": "string" - } - }, - "type": "object" - }, - "v1VmRealtime": { - "description": "Realtime holds the tuning knobs specific for realtime workloads.", - "properties": { - "mask": { - "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", + "project": { + "description": "Name of the project in which cluster is to be deployed", "type": "string" - } - }, - "type": "object" - }, - "v1VmRemoveVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "items": { - "type": "string" - }, - "type": "array", - "x-kubernetes-list-type": "atomic" }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", + "region": { + "description": "GCP region for the cluster", "type": "string" } - }, - "required": [ - "name" - ], - "type": "object" + } }, - "v1VmResourceFieldSelector": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", + "v1GcpImage": { + "description": "Refers to GCP image", + "type": "object", "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", + "name": { "type": "string" }, - "divisor": { - "$ref": "#/definitions/v1VmQuantity" - }, - "resource": { - "description": "Required: resource to select", + "os": { "type": "string" - } - }, - "required": [ - "resource" - ], - "type": "object" - }, - "v1VmResourceRequirements": { - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" + "region": { + "type": "string" }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" + "state": { + "type": "string" } - }, - "type": "object" - }, - "v1VmRng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "v1VmSEV": { - "type": "object" + } }, - "v1VmSecretVolumeSource": { - "description": "SecretVolumeSource adapts a Secret into a volume.", + "v1GcpImageUrlEntity": { + "description": "Gcp image url entity", + "type": "object", "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "imageFamily": { + "description": "The name of the image family to which this image belongs", "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).", + "imageUrl": { + "description": "Server-defined URL for the resource", "type": "string" - } - }, - "type": "object" - }, - "v1VmServiceAccountVolumeSource": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + }, + "name": { + "description": "Name of the resource", "type": "string" } - }, - "type": "object" + } }, - "v1VmSnapshotVolumesLists": { - "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "v1GcpInstanceTypes": { + "description": "Retrieves a list of GCP instance types", + "type": "object", "properties": { - "excludedVolumes": { - "items": { - "type": "string" - }, + "instanceTypes": { + "description": "List of GCP instance types", "type": "array", - "x-kubernetes-list-type": "set" - }, - "includedVolumes": { "items": { - "type": "string" - }, - "type": "array", - "x-kubernetes-list-type": "set" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1VmSoundDevice": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", + "v1GcpMachine": { + "description": "GCP cloud VM definition", + "type": "object", "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", + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - "name": { - "description": "User's defined name for this sound device", + "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" + } + } + } + } } - }, + } + }, + "v1GcpMachinePoolCloudConfigEntity": { + "type": "object", "required": [ - "name" + "instanceType" ], - "type": "object" - }, - "v1VmSshPublicKeyAccessCredential": { - "description": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", "properties": { - "propagationMethod": { - "$ref": "#/definitions/v1VmSshPublicKeyAccessCredentialPropagationMethod" + "azs": { + "type": "array", + "items": { + "type": "string" + } }, - "source": { - "$ref": "#/definitions/v1VmSshPublicKeyAccessCredentialSource" + "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" + } + } + } } - }, + } + }, + "v1GcpMachinePoolConfig": { + "type": "object", "required": [ - "source", - "propagationMethod" + "isControlPlane", + "instanceType" ], - "type": "object" - }, - "v1VmSshPublicKeyAccessCredentialPropagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", "properties": { - "configDrive": { - "$ref": "#/definitions/v1VmConfigDriveSshPublicKeyAccessCredentialPropagation" + "additionalLabels": { + "description": "additionalLabels", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "qemuGuestAgent": { - "$ref": "#/definitions/v1VmQemuGuestAgentSshPublicKeyAccessCredentialPropagation" - } - }, - "type": "object" - }, - "v1VmSshPublicKeyAccessCredentialSource": { - "description": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "properties": { - "secret": { - "$ref": "#/definitions/v1VmAccessCredentialSecretSource" - } - }, - "type": "object" - }, - "v1VmStorageSpec": { - "description": "StorageSpec defines the Storage type specification", - "properties": { - "accessModes": { - "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "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" - }, - "type": "array" + } }, - "dataSource": { - "$ref": "#/definitions/v1VmTypedLocalObjectReference" + "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" + } + } }, - "resources": { - "$ref": "#/definitions/v1VmCoreResourceRequirements" + "instanceType": { + "type": "string" }, - "selector": { - "$ref": "#/definitions/v1VmLabelSelector" + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" }, - "storageClassName": { - "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", - "type": "string" + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "type": "array", + "items": { + "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.", + "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" }, - "volumeName": { - "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", + "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" - } - }, - "type": "object" - }, - "v1VmSyNICTimer": { - "properties": { - "direct": { - "$ref": "#/definitions/v1VmFeatureState" }, - "enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "v1VmSysprepSource": { - "description": "Represents a Sysprep volume source.", - "properties": { - "configMap": { - "$ref": "#/definitions/v1VmLocalObjectReference" + "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" + ] + } + } }, - "secret": { - "$ref": "#/definitions/v1VmLocalObjectReference" + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" } - }, - "type": "object" - }, - "v1VmTPMDevice": { - "type": "object" + } }, - "v1VmTcpSocketAction": { - "description": "TCPSocketAction describes an action based on opening a socket", - "properties": { - "host": { - "description": "Optional: Host name to connect to, defaults to the pod IP.", - "type": "string" - }, - "port": { - "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "type": [ - "string", - "number" - ] - } - }, + "v1GcpMachinePoolConfigEntity": { + "type": "object", "required": [ - "port" + "cloudConfig" ], - "type": "object" - }, - "v1VmTimer": { - "description": "Represents all available timers in a vmi.", "properties": { - "hpet": { - "$ref": "#/definitions/v1VmHPETTimer" - }, - "hyperv": { - "$ref": "#/definitions/v1VmHypervTimer" - }, - "kvm": { - "$ref": "#/definitions/v1VmKVmTimer" - }, - "pit": { - "$ref": "#/definitions/v1VmPITTimer" + "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" + } + } + } + } + } }, - "rtc": { - "$ref": "#/definitions/v1VmRTCTimer" + "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": "object" + } }, - "v1VmToleration": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .", + "v1GcpMachineSpec": { + "description": "GCP cloud VM definition spec", + "type": "object", + "required": [ + "instanceType" + ], "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.", + "image": { "type": "string" }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "format": "int64", - "type": "integer" + "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" + } + } }, - "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.", + "instanceType": { "type": "string" - } - }, - "type": "object" - }, - "v1VmTopologySpreadConstraint": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "properties": { - "labelSelector": { - "$ref": "#/definitions/v1VmLabelSelector" }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "format": "int32", - "type": "integer" + "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" + } + } + } }, - "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.", + "project": { "type": "string" }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - }, - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "type": "object" - }, - "v1VmTypedLocalObjectReference": { - "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", - "properties": { - "apiGroup": { - "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "region": { "type": "string" }, - "kind": { - "description": "Kind is the type of resource being referenced", - "type": "string" + "rootDeviceSize": { + "type": "integer", + "format": "int64" }, - "name": { - "description": "Name is the name of resource being referenced", + "zone": { "type": "string" } - }, - "required": [ - "kind", - "name" - ], - "type": "object" + } }, - "v1VmUserPasswordAccessCredential": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "properties": { - "propagationMethod": { - "$ref": "#/definitions/v1VmUserPasswordAccessCredentialPropagationMethod" - }, - "source": { - "$ref": "#/definitions/v1VmUserPasswordAccessCredentialSource" - } - }, + "v1GcpMachines": { + "description": "GCP machine list", + "type": "object", "required": [ - "source", - "propagationMethod" + "items" ], - "type": "object" - }, - "v1VmUserPasswordAccessCredentialPropagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", "properties": { - "qemuGuestAgent": { - "$ref": "#/definitions/v1VmQemuGuestAgentUserPasswordAccessCredentialPropagation" - } - }, - "type": "object" - }, - "v1VmUserPasswordAccessCredentialSource": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "properties": { - "secret": { - "$ref": "#/definitions/v1VmAccessCredentialSecretSource" + "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 + } + } } - }, - "type": "object" + } }, - "v1VmVGPUDisplayOptions": { + "v1GcpManagedClusterConfig": { + "description": "GCP managed cluster config", + "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.", + "enableAutoPilot": { + "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster", "type": "boolean" }, - "ramFB": { - "$ref": "#/definitions/v1VmFeatureState" - } - }, - "type": "object" - }, - "v1VmVGPUOptions": { - "properties": { - "display": { - "$ref": "#/definitions/v1VmVGPUDisplayOptions" + "location": { + "description": "Can be Region or Zone", + "type": "string" } - }, - "type": "object" + } }, - "v1VmVirtualMachineCondition": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", + "v1GcpNetwork": { + "description": "GCP network enity is a virtual version of a physical network", + "type": "object", "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { + "name": { + "description": "GCP network name", "type": "string" }, - "type": { - "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" + } + } + } } - }, - "required": [ - "type", - "status" - ], - "type": "object" + } }, - "v1VmVirtualMachineInstanceSpec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", + "v1GcpNetworks": { + "description": "List of GCP networks", + "type": "object", "properties": { - "accessCredentials": { - "description": "Specifies a set of public keys to inject into the vm guest", - "items": { - "$ref": "#/definitions/v1VmAccessCredential" - }, + "networks": { "type": "array", - "x-kubernetes-list-type": "atomic" - }, - "affinity": { - "$ref": "#/definitions/v1VmAffinity" - }, - "dnsConfig": { - "$ref": "#/definitions/v1VmPodDnsConfig" - }, - "dnsPolicy": { - "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", - "type": "string" - }, - "domain": { - "$ref": "#/definitions/v1VmDomainSpec" - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" + "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" + } + } + } + } + } + } + } + } + }, + "v1GcpNic": { + "description": "GCP network interface", + "type": "object", + "properties": { + "index": { + "type": "integer", + "format": "int8" }, - "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.", + "networkName": { "type": "string" }, - "livenessProbe": { - "$ref": "#/definitions/v1VmProbe" - }, - "networks": { - "description": "List of networks that can be attached to a vm's virtual interface.", + "privateIPs": { + "type": "array", "items": { - "$ref": "#/definitions/v1VmNetwork" - }, - "type": "array" - }, - "nodeSelector": { - "additionalProperties": { "type": "string" - }, - "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", - "type": "object" - }, - "priorityClassName": { - "description": "If specified, indicates the pod's priority. If not specified, the pod priority will be default or zero if there is no default.", - "type": "string" - }, - "readinessProbe": { - "$ref": "#/definitions/v1VmProbe" + } }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", + "publicIp": { "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", + } + } + }, + "v1GcpProject": { + "description": "GCP project organizes all Google Cloud resources", + "type": "object", + "properties": { + "id": { + "description": "GCP project id", "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.", + "name": { + "description": "GCP project name", "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "format": "int64", - "type": "integer" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "items": { - "$ref": "#/definitions/v1VmToleration" - }, - "type": "array" - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "items": { - "$ref": "#/definitions/v1VmTopologySpreadConstraint" - }, - "type": "array", - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "items": { - "$ref": "#/definitions/v1VmVolume" - }, - "type": "array" } - }, - "required": [ - "domain" - ], - "type": "object" + } }, - "v1VmVirtualMachineInstanceTemplateSpec": { + "v1GcpProjects": { + "description": "List of GCP Projects", + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1VmObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1VmVirtualMachineInstanceSpec" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1VmVirtualMachineMemoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "v1GcpRegion": { + "description": "Geographical region made up of zones where you can host your GCP resources", + "type": "object", "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "$ref": "#/definitions/v1Time" - }, - "fileName": { - "description": "FileName represents the name of the output file", - "type": "string" - }, - "message": { - "description": "Message is a detailed message about failure of the memory dump", - "type": "string" - }, - "phase": { - "description": "Phase represents the memory dump phase", + "name": { + "description": "GCP region name", "type": "string" }, - "remove": { - "description": "Remove represents request of dissociating the memory dump pvc", - "type": "boolean" - }, - "startTimestamp": { - "$ref": "#/definitions/v1Time" + "status": { + "description": "GCP region status", + "type": "string" } - }, - "required": [ - "claimName", - "phase" - ], - "type": "object" + } }, - "v1VmVirtualMachineStartFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "v1GcpRegions": { + "description": "List of GCP Regions", + "type": "object", "properties": { - "consecutiveFailCount": { - "format": "int32", - "type": "integer" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "$ref": "#/definitions/v1Time" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1VmVirtualMachineStateChangeRequest": { + "v1GcpStorageConfig": { + "description": "GCP storage config object", + "type": "object", + "required": [ + "bucketName", + "credentials" + ], "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "bucketName": { + "description": "GCP storage bucket name", "type": "string" }, - "data": { - "additionalProperties": { - "type": "string" - }, - "description": "Provides additional data in order to perform the Action", - "type": "object" - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" + "credentials": { + "type": "object", + "properties": { + "jsonCredentials": { + "type": "string" + }, + "jsonCredentialsFileUid": { + "type": "string" + } + } } - }, - "required": [ - "action" - ], - "type": "object" + } }, - "v1VmVirtualMachineVolumeRequest": { + "v1GcpStorageTypes": { + "description": "List of GCP storage types", + "type": "object", "properties": { - "addVolumeOptions": { - "$ref": "#/definitions/v1VmAddVolumeOptions" - }, - "removeVolumeOptions": { - "$ref": "#/definitions/v1VmRemoveVolumeOptions" + "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" + } + } + } + } + } + } + } + } } - }, - "type": "object" + } }, - "v1VmVolume": { - "description": "Volume represents a named volume in a vmi.", + "v1GcpSubnet": { + "description": "Subnets are regional resources, and have IP address ranges associated with them", + "type": "object", "properties": { - "cloudInitConfigDrive": { - "$ref": "#/definitions/v1VmCloudInitConfigDriveSource" - }, - "cloudInitNoCloud": { - "$ref": "#/definitions/v1VmCloudInitNoCloudSource" - }, - "configMap": { - "$ref": "#/definitions/v1VmConfigMapVolumeSource" - }, - "containerDisk": { - "$ref": "#/definitions/v1VmContainerDiskSource" - }, - "dataVolume": { - "$ref": "#/definitions/v1VmCoreDataVolumeSource" - }, - "downwardAPI": { - "$ref": "#/definitions/v1VmDownwardApiVolumeSource" - }, - "downwardMetrics": { - "$ref": "#/definitions/v1VmDownwardMetricsVolumeSource" - }, - "emptyDisk": { - "$ref": "#/definitions/v1VmEmptyDiskSource" - }, - "ephemeral": { - "$ref": "#/definitions/v1VmEphemeralVolumeSource" - }, - "hostDisk": { - "$ref": "#/definitions/v1VmHostDisk" - }, - "memoryDump": { - "$ref": "#/definitions/v1VmMemoryDumpVolumeSource" + "id": { + "description": "GCP subnet id", + "type": "string" }, "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "description": "GCP subnet name", "type": "string" - }, - "persistentVolumeClaim": { - "$ref": "#/definitions/v1VmPersistentVolumeClaimVolumeSource" - }, - "secret": { - "$ref": "#/definitions/v1VmSecretVolumeSource" - }, - "serviceAccount": { - "$ref": "#/definitions/v1VmServiceAccountVolumeSource" - }, - "sysprep": { - "$ref": "#/definitions/v1VmSysprepSource" } - }, - "required": [ - "name" - ], - "type": "object" + } }, - "v1VmVolumeSnapshotStatus": { + "v1GcpSubnetEntity": { "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", + "az": { "type": "string" }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", + "id": { "type": "string" } - }, - "required": [ - "name", - "enabled" - ], - "type": "object" + } }, - "v1VmWatchdog": { - "description": "Named watchdog device.", + "v1GcpZone": { + "description": "A zone is a deployment area for Google Cloud resources within a region", + "type": "object", "properties": { - "i6300esb": { - "$ref": "#/definitions/v1VmI6300ESBWatchdog" - }, "name": { - "description": "Name of the watchdog.", + "description": "GCP zone name", "type": "string" } - }, - "required": [ - "name" - ], - "type": "object" + } }, - "v1VmWeightedPodAffinityTerm": { - "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", + "v1GcpZones": { + "description": "List of GCP zones", + "type": "object", "properties": { - "podAffinityTerm": { - "$ref": "#/definitions/v1VmPodAffinityTerm" - }, - "weight": { - "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", - "format": "int32", - "type": "integer" + "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" + } + } + } } - }, - "required": [ - "weight", - "podAffinityTerm" - ], - "type": "object" + } }, - "v1VsphereAccount": { - "description": "VSphere account information", + "v1GenericCloudClusterConfigEntity": { + "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" + } + } + } + } + }, + "v1GenericCloudConfig": { + "description": "Generic CloudConfig for all cloud types", "properties": { "kind": { - "description": "Cloud account kind", "type": "string" }, "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1VsphereCloudAccount" - }, - "status": { - "$ref": "#/definitions/v1CloudAccountStatus" + "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" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1VsphereAccounts": { + "v1GenericCloudConfigSpec": { + "description": "Generic CloudConfig spec for all cloud types", + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1VsphereAccount" - }, + "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", - "uniqueItems": true + "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" + } + } + } }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "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" + } + } + } } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1VsphereCloudAccount": { + "v1GenericClusterConfig": { + "description": "Generic cluster config", + "type": "object", "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" + "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" + } + } }, - "vcenterServer": { - "description": "VcenterServer is the address of the vSphere endpoint", + "region": { + "description": "cluster region information", "type": "string" } - }, - "required": [ - "vcenterServer", - "username", - "password" - ], - "type": "object" + } }, - "v1VsphereCloudClusterConfigEntity": { - "description": "vSphere cloud cluster config entity", + "v1GenericInstanceType": { + "type": "object", "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1VsphereClusterConfigEntity" + "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" } - }, - "type": "object" + } }, - "v1VsphereCloudConfig": { - "description": "VsphereCloudConfig is the Schema for the vspherecloudconfigs API", + "v1GenericMachine": { + "description": "Generic cloud VM definition", "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Deprecated. Cloud type of the machine.", "type": "string" }, "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1VsphereCloudConfigSpec" + "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": { - "$ref": "#/definitions/v1VsphereCloudConfigStatus" - } - }, - "type": "object" - }, - "v1VsphereCloudConfigSpec": { - "description": "VsphereCloudConfigSpec defines the desired state of VsphereCloudConfig", - "properties": { - "cloudAccountRef": { - "$ref": "#/definitions/v1ObjectReference", - "description": "cloudAccountRef should point to the secret which contains VsphereCloudAccount" - }, - "clusterConfig": { - "$ref": "#/definitions/v1VsphereClusterConfig" - }, - "edgeHostRef": { - "$ref": "#/definitions/v1ObjectReference", - "description": "Appliance (Edge Host) uid for Edge env" - }, - "machinePoolConfig": { - "items": { - "$ref": "#/definitions/v1VsphereMachinePoolConfig" - }, - "type": "array" + "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" + } + } + } + } } - }, + } + }, + "v1GenericMachinePoolConfig": { + "type": "object", "required": [ - "clusterConfig", - "machinePoolConfig" + "isControlPlane" ], - "type": "object" - }, - "v1VsphereCloudConfigStatus": { - "description": "VsphereCloudConfigStatus defines the observed state of VsphereCloudConfig", "properties": { - "ansibleDigest": { + "instanceType": { "type": "string" }, - "conditions": { - "items": { - "$ref": "#/definitions/v1ClusterCondition" - }, - "type": "array" - }, - "isAddonLayer": { - "description": "addon layers present in spc", + "isControlPlane": { + "description": "whether this pool is for control plane", "type": "boolean" }, - "lastOVACreated": { - "type": "string" - }, - "lastVMExported": { - "type": "string" - }, - "nodeImage": { - "$ref": "#/definitions/v1VsphereImage" - }, - "roleDigest": { - "additionalProperties": { + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "type": "array", + "items": { "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", + "name": { "type": "string" }, - "uploadOvaS3": { - "description": "UploadOVAS3 will hold last image name which uploaded to S3", - "type": "string" + "rootDeviceSize": { + "description": "Size of root volume in GB. Default is 30GB", + "type": "integer", + "format": "int64" }, - "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", + "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" } - }, - "type": "object" + } }, - "v1VsphereCloudDatacenter": { - "description": "Vsphere datacenter", + "v1GenericMachinePoolConfigEntity": { "properties": { - "computeClusters": { - "items": { - "$ref": "#/definitions/v1VsphereComputeCluster" - }, - "type": "array" - }, - "folders": { - "items": { - "type": "string" - }, - "type": "array" + "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" + } + } }, - "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": "object" + } }, - "v1VsphereClusterConfig": { + "v1GenericMachineSpec": { + "description": "Generic cloud VM definition spec", "properties": { - "controlPlaneEndpoint": { - "$ref": "#/definitions/v1ControlPlaneEndPoint", - "description": "The optional control plane endpoint, which can be an IP or FQDN" + "hostName": { + "type": "string" }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "items": { - "type": "string" - }, - "type": "array" + "imageId": { + "type": "string" }, - "placement": { - "$ref": "#/definitions/v1VspherePlacementConfig", - "description": "Placement configuration Placement config in ClusterConfig serve as default values for each MachinePool" + "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" + } + } }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", + "nics": { + "type": "array", "items": { - "type": "string" - }, - "type": "array" + "description": "Generic network interface", + "type": "object", + "properties": { + "index": { + "type": "integer", + "format": "int8" + }, + "networkName": { + "type": "string" + }, + "privateIPs": { + "type": "array", + "items": { + "type": "string" + } + }, + "publicIp": { + "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" + "sshKeyName": { + "type": "string" } - }, - "required": [ - "placement" - ], - "type": "object" + } }, - "v1VsphereClusterConfigEntity": { - "properties": { - "controlPlaneEndpoint": { - "$ref": "#/definitions/v1ControlPlaneEndPoint", - "description": "The optional control plane endpoint, which can be an IP or FQDN" - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "items": { - "type": "string" - }, - "type": "array" - }, - "placement": { - "$ref": "#/definitions/v1VspherePlacementConfigEntity", - "description": "Placement configuration Placement config in ClusterConfig serve as default values for each MachinePool" - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "items": { - "type": "string" - }, - "type": "array" - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - }, + "v1GenericMachines": { + "description": "Generic machine list", + "type": "object", "required": [ - "placement" + "items" ], - "type": "object" - }, - "v1VsphereComputeCluster": { - "description": "Vsphere compute cluster", "properties": { - "datastores": { - "items": { - "type": "string" - }, + "items": { "type": "array", - "uniqueItems": true - }, - "name": { - "type": "string" - }, - "networks": { + "uniqueItems": true, "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "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" + } + } + } + } + } + } + } }, - "resourcePools": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "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" + } }, - "v1VsphereComputeClusterResources": { - "description": "Datacenter and its resources like datastore, resoucepool, folders", + "v1GenericNic": { + "description": "Generic network interface", + "type": "object", "properties": { - "computecluster": { - "$ref": "#/definitions/v1VsphereComputeCluster" + "index": { + "type": "integer", + "format": "int8" }, - "datacenter": { - "description": "Name of the datacenter", + "networkName": { "type": "string" - } - }, - "type": "object" - }, - "v1VsphereDatacenter": { - "description": "List of Datacenter with computeclusters", - "properties": { - "computeclusters": { - "description": "List of the VSphere compute clusters in datacenter", + }, + "privateIPs": { + "type": "array", "items": { "type": "string" - }, - "type": "array", - "uniqueItems": true + } }, - "datacenter": { - "description": "name of the datacenter of the VSphere", + "publicIp": { "type": "string" - }, - "folders": { - "description": "List of the VSphere folders in datacenter", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "v1VsphereDatacenters": { - "description": "List of Datacenters with computeclusters", - "properties": { - "items": { - "description": "List of associated datacenters", - "items": { - "$ref": "#/definitions/v1VsphereDatacenter" - }, - "type": "array", - "uniqueItems": true } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1VsphereDnsMapping": { - "description": "VSphere DNS Mapping", + "v1GeolocationLatlong": { + "description": "Geolocation Latlong entity", + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "latitude": { + "description": "Latitude of a resource", + "type": "number", + "format": "float64", + "x-omitempty": false }, - "spec": { - "$ref": "#/definitions/v1VsphereDnsMappingSpec" + "longitude": { + "description": "Longitude of a resource", + "type": "number", + "format": "float64", + "x-omitempty": false } - }, - "type": "object" + } }, - "v1VsphereDnsMappingSpec": { - "description": "VSphere DNS Mapping Spec", + "v1GitRepoFileContent": { + "type": "object", "properties": { - "datacenter": { - "description": "VSphere datacenter name", + "content": { "type": "string" }, - "dnsName": { - "description": "VSphere DNS name", + "name": { "type": "string" }, - "network": { - "description": "VSphere network name", + "path": { "type": "string" }, - "networkUrl": { - "description": "VSphere network URL", - "readOnly": true, + "repoName": { "type": "string" }, - "privateGatewayUid": { - "description": "VSphere private gateway uid", - "type": "string" - } - }, - "required": [ - "privateGatewayUid", - "datacenter", - "network", - "dnsName" - ], - "type": "object" - }, - "v1VsphereDnsMappings": { - "properties": { - "items": { - "description": "List of vSphere DNS mapping", - "items": { - "$ref": "#/definitions/v1VsphereDnsMapping" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1VsphereEnv": { - "description": "Vsphere environment entity", - "properties": { - "version": { - "description": "Version of vsphere environment", + "sha": { "type": "string" } - }, - "type": "object" + } }, - "v1VsphereImage": { - "description": "A generated Image should always be a template which resides inside vsphere Will not generate a OVA file out of the image OVA can be used as a base input of the os pack, that's internal to the pack", + "v1GrpcClientMonitoringData": { + "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", + "clientUid": { "type": "string" }, - "state": { - "type": "string" - } - }, - "type": "object" - }, - "v1VsphereInstanceType": { - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "format": "int32", + "receivedBroadcastCount": { "type": "integer" }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "format": "int64", + "receivedPublishedCount": { "type": "integer" }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "format": "int32", + "sentBroadcastCount": { + "type": "integer" + }, + "sentPublishedCount": { "type": "integer" + }, + "subjects": { + "type": "array", + "items": { + "type": "string" + } } - }, - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "type": "object" + } }, - "v1VsphereMachine": { - "description": "vSphere cloud VM definition", + "v1GrpcConfiguration": { + "description": "Describes the response that contains the grpc configuration to establish connection", + "type": "object", "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1VsphereMachineSpec" + "preferredServer": { + "type": "object", + "properties": { + "endpoint": { + "description": "Describes the URL where the client has to connect to the grpc server", + "type": "string" + }, + "tls": { + "description": "Describes the Grpc tls config which client will use to make a request to the grpc server", + "type": "object", + "properties": { + "caCert": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "insecureSkipVerify": { + "type": "boolean" + } + } + } + } }, - "status": { - "$ref": "#/definitions/v1CloudMachineStatus" + "servers": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "endpoint": { + "description": "Describes the URL where the client has to connect to the grpc server", + "type": "string" + }, + "tls": { + "description": "Describes the Grpc tls config which client will use to make a request to the grpc server", + "type": "object", + "properties": { + "caCert": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "insecureSkipVerify": { + "type": "boolean" + } + } + } + } + } } - }, - "type": "object" + } }, - "v1VsphereMachinePoolCloudConfigEntity": { + "v1GrpcEndpoint": { + "type": "object", "properties": { - "instanceType": { - "$ref": "#/definitions/v1VsphereInstanceType" + "endpoint": { + "description": "Describes the URL where the client has to connect to the grpc server", + "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", - "items": { - "$ref": "#/definitions/v1VspherePlacementConfigEntity" - }, - "type": "array" + "tls": { + "description": "Describes the Grpc tls config which client will use to make a request to the grpc server", + "type": "object", + "properties": { + "caCert": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "insecureSkipVerify": { + "type": "boolean" + } + } } } }, - "v1VsphereMachinePoolConfig": { + "v1GrpcServerMonitoringData": { + "type": "object", "properties": { - "additionalLabels": { - "additionalProperties": { - "type": "string" - }, - "description": "additionalLabels", - "type": "object" - }, - "additionalTags": { + "clients": { + "type": "object", "additionalProperties": { - "type": "string" - }, - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object" - }, - "instanceType": { - "$ref": "#/definitions/v1VsphereInstanceType", - "description": "InstanceType defines the required CPU, Memory, Storage" + "type": "object", + "properties": { + "clientUid": { + "type": "string" + }, + "receivedBroadcastCount": { + "type": "integer" + }, + "receivedPublishedCount": { + "type": "integer" + }, + "sentBroadcastCount": { + "type": "integer" + }, + "sentPublishedCount": { + "type": "integer" + }, + "subjects": { + "type": "array", + "items": { + "type": "string" + } + } + } + } }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false + "isError": { + "type": "boolean" }, - "labels": { - "description": "labels for this pool, example: master/worker, gpu, windows", + "messageLogs": { + "type": "array", "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" + "subjects": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "broadcastCount": { + "type": "integer" + }, + "clients": { + "type": "array", + "items": { + "type": "string" + } + }, + "publishedCount": { + "type": "integer" + }, + "subject": { + "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", + "totalClients": { "type": "integer" }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "items": { - "$ref": "#/definitions/v1VspherePlacementConfig" - }, - "type": "array" - }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", + "totalSubjects": { "type": "integer" - }, - "taints": { - "description": "master or worker taints", - "items": { - "$ref": "#/definitions/v1Taint" - }, - "type": "array", - "uniqueItems": true - }, - "updateStrategy": { - "$ref": "#/definitions/v1UpdateStrategy", - "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false } - }, - "required": [ - "isControlPlane", - "instanceType" - ], - "type": "object" + } }, - "v1VsphereMachinePoolConfigEntity": { + "v1GrpcServersMonitoringData": { + "type": "object", "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1VsphereMachinePoolCloudConfigEntity" - }, - "poolConfig": { - "$ref": "#/definitions/v1MachinePoolConfigEntity" + "servers": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "clients": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "clientUid": { + "type": "string" + }, + "receivedBroadcastCount": { + "type": "integer" + }, + "receivedPublishedCount": { + "type": "integer" + }, + "sentBroadcastCount": { + "type": "integer" + }, + "sentPublishedCount": { + "type": "integer" + }, + "subjects": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "isError": { + "type": "boolean" + }, + "messageLogs": { + "type": "array", + "items": { + "type": "string" + } + }, + "subjects": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "broadcastCount": { + "type": "integer" + }, + "clients": { + "type": "array", + "items": { + "type": "string" + } + }, + "publishedCount": { + "type": "integer" + }, + "subject": { + "type": "string" + } + } + } + }, + "totalClients": { + "type": "integer" + }, + "totalSubjects": { + "type": "integer" + } + } + } } - }, - "required": [ - "cloudConfig" - ], - "type": "object" + } }, - "v1VsphereMachineSpec": { - "description": "vSphere cloud VM definition spec", + "v1GrpcSubjectMonitoringData": { + "type": "object", "properties": { - "images": { - "items": { - "$ref": "#/definitions/v1VsphereImage" - }, - "type": "array" - }, - "instanceType": { - "$ref": "#/definitions/v1VsphereInstanceType" - }, - "nics": { - "items": { - "$ref": "#/definitions/v1VsphereNic" - }, - "type": "array" + "broadcastCount": { + "type": "integer" }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", + "clients": { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, - "placement": { - "$ref": "#/definitions/v1VspherePlacementConfig", - "description": "Placement configuration" + "publishedCount": { + "type": "integer" }, - "vcenterServer": { - "description": "VcenterServer is the address of the vSphere endpoint", + "subject": { "type": "string" } - }, - "required": [ - "vcenterServer", - "nics", - "placement" - ], - "type": "object" + } }, - "v1VsphereMachines": { - "description": "vSphere machine list", + "v1HealthCheck": { + "type": "object", "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1VsphereMachine" - }, - "type": "array", - "uniqueItems": true + "isHealthy": { + "type": "boolean", + "x-omitempty": false }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" + "message": { + "type": "string" + }, + "name": { + "type": "string" } - }, - "required": [ - "items" - ], - "type": "object" + } }, - "v1VsphereNetworkConfig": { + "v1HealthLocks": { + "type": "object", "properties": { - "ipPool": { - "$ref": "#/definitions/v1IPPool", - "description": "when staticIP=true, need to provide IPPool" - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "$ref": "#/definitions/v1ObjectReference", - "description": "ParentPoolRef reference to the ParentPool which allocates IPs for this IPPool" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" + "expiredLocks": { + "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": { + "expireAt": { + "description": "Time is a wrapper around time.Time which supports correct 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": { + "type": "string", + "x-omitempty": false + } + } + } + } + } } - }, - "required": [ - "networkName" - ], - "type": "object" + } }, - "v1VsphereNetworkConfigEntity": { + "v1HealthPing": { + "type": "object", "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", + "msg": { "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" } - }, - "required": [ - "networkName" - ], - "type": "object" + } }, - "v1VsphereNic": { - "description": "vSphere network interface", + "v1HelmChartOption": { + "description": "If chart options are provided then the specified chart is validated first and synced immediately. If the specified chart is not found in the specified registry then creation is cancelled.", + "type": "object", "properties": { - "index": { - "format": "int8", - "type": "integer" - }, - "macAddress": { + "name": { "type": "string" }, - "networkName": { + "version": { "type": "string" - }, - "privateIPs": { - "items": { - "type": "string" - }, - "type": "array" } - }, + } + }, + "v1HelmRegistries": { + "type": "object", "required": [ - "networkName" + "items" ], - "type": "object" - }, - "v1VsphereOverlordClusterConfigEntity": { "properties": { - "controlPlaneEndpoint": { - "$ref": "#/definitions/v1ControlPlaneEndPoint", - "description": "The optional control plane endpoint, which can be an IP or FQDN" - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "items": { - "type": "string" - }, - "type": "array" - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "items": { - "$ref": "#/definitions/v1VspherePlacementConfigEntity" - }, - "type": "array" - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", + "items": { + "type": "array", + "uniqueItems": true, "items": { - "type": "string" - }, - "type": "array" + "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" + } + } + } + } + } + } + } }, - "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" + "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" + } }, - "v1VspherePlacementConfig": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", + "v1HelmRegistriesSummary": { + "description": "Helm Registries Summary", + "type": "object", + "required": [ + "items" + ], "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "$ref": "#/definitions/v1VsphereNetworkConfig", - "description": "network info" - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" + "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" + } + } + } + } + } + } + } }, - "uid": { - "description": "UID for this placement", - "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" + } }, - "v1VspherePlacementConfigEntity": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", + "v1HelmRegistry": { + "description": "Helm registry information", + "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.", + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", + "kind": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - "network": { - "$ref": "#/definitions/v1VsphereNetworkConfigEntity", - "description": "network info" - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "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" + } + } }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "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" + } + } }, - "uid": { - "description": "UID for this placement", - "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": "object" + } }, - "v1Workspace": { - "description": "Workspace information", + "v1HelmRegistryCreateOption": { + "description": "Helm registry create options", + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1WorkspaceSpec" + "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" + } + } + } }, - "status": { - "$ref": "#/definitions/v1WorkspaceStatus" + "skipSync": { + "type": "boolean" } } }, - "v1WorkspaceBackup": { - "description": "Workspace backup", + "v1HelmRegistryEntity": { + "description": "Helm registry information", + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1WorkspaceBackupSpec" - }, - "status": { - "$ref": "#/definitions/v1WorkspaceBackupStatus" + "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" + } + } } } }, - "v1WorkspaceBackupClusterRef": { - "description": "Workspace backup cluster ref", + "v1HelmRegistrySpec": { + "description": "Helm registry credentials spec", + "type": "object", + "required": [ + "endpoint", + "auth" + ], "properties": { - "backupName": { + "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" }, - "clusterUid": { + "isPrivate": { + "type": "boolean", + "x-omitempty": false + }, + "name": { "type": "string" - } - } - }, - "v1WorkspaceBackupConfig": { - "description": "Workspace backup config", - "properties": { - "backupConfig": { - "$ref": "#/definitions/v1ClusterBackupConfig" }, - "clusterUids": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "registryUid": { + "description": "Helm registry uid", + "type": "string" }, - "includeAllClusters": { - "type": "boolean" + "scope": { + "type": "string" } } }, - "v1WorkspaceBackupConfigEntity": { - "description": "Cluster backup config", + "v1HelmRegistrySpecEntity": { + "description": "Helm registry credentials spec", + "type": "object", + "required": [ + "endpoint", + "auth" + ], "properties": { - "backupConfig": { - "$ref": "#/definitions/v1ClusterBackupConfig" + "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" + } + } }, - "clusterUids": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "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" + } + } }, - "includeAllClusters": { + "endpoint": { + "type": "string" + }, + "isPrivate": { "type": "boolean" - } - } - }, - "v1WorkspaceBackupDeleteEntity": { - "description": "Cluster backup delete config", - "properties": { - "clusterConfigs": { - "items": { - "$ref": "#/definitions/v1WorkspaceBackupClusterRef" - }, - "type": "array", - "uniqueItems": true }, - "requestUid": { + "name": { "type": "string" - } - } - }, - "v1WorkspaceBackupSpec": { - "description": "Workspace backup spec", - "properties": { - "config": { - "$ref": "#/definitions/v1WorkspaceBackupConfig" }, - "workspaceUid": { + "scope": { "type": "string" } } }, - "v1WorkspaceBackupState": { - "description": "Workspace backup state", + "v1HelmRegistrySpecSummary": { + "description": "Helm Registry spec summary", + "type": "object", "properties": { - "deleteState": { + "endpoint": { "type": "string" }, - "state": { + "isPrivate": { + "type": "boolean", + "x-omitempty": false + }, + "scope": { "type": "string" } } }, - "v1WorkspaceBackupStatus": { - "description": "Workspace backup status", + "v1HelmRegistryStatus": { + "description": "Status of the helm registry", + "type": "object", "properties": { - "workspaceBackupStatuses": { - "items": { - "$ref": "#/definitions/v1WorkspaceBackupStatusMeta" - }, - "type": "array" + "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" + } + } } } }, - "v1WorkspaceBackupStatusConfig": { - "description": "Workspace backup status config", + "v1HelmRegistryStatusSummary": { + "description": "Helm registry status summary", "properties": { - "backupName": { - "type": "string" - }, - "durationInHours": { - "format": "int64", - "type": "number" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "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" + } + } } } }, - "v1WorkspaceBackupStatusMeta": { - "description": "Workspace backup status meta", + "v1HelmRegistrySummary": { + "description": "Helm Registry summary", + "type": "object", "properties": { - "actor": { - "$ref": "#/definitions/v1ClusterFeatureActor" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "requestUid": { - "type": "string" + "spec": { + "description": "Helm Registry spec summary", + "type": "object", + "properties": { + "endpoint": { + "type": "string" + }, + "isPrivate": { + "type": "boolean", + "x-omitempty": false + }, + "scope": { + "type": "string" + } + } }, - "workspaceBackupConfig": { - "$ref": "#/definitions/v1WorkspaceClusterBackupConfig" + "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" + } + } + } + } } } }, - "v1WorkspaceClusterBackupConfig": { - "description": "Workspace cluster backup config", + "v1HostClusterConfig": { "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "$ref": "#/definitions/v1WorkspaceBackupState" - }, - "backupTime": { - "$ref": "#/definitions/v1Time" + "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" + ] + } + } }, - "clusterBackupRefs": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterBackupResponse" - }, - "type": "array" + "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" + } + } }, - "config": { - "$ref": "#/definitions/v1WorkspaceBackupStatusConfig" + "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" + } + } }, - "requestTime": { - "$ref": "#/definitions/v1Time" + "isHostCluster": { + "description": "is enabled as host cluster", + "type": "boolean", + "default": false, + "x-omitempty": false } } }, - "v1WorkspaceClusterBackupResponse": { - "description": "Workspace cluster backup response", + "v1HostClusterConfigEntity": { + "type": "object", "properties": { - "backupStatusMeta": { - "$ref": "#/definitions/v1BackupStatusMeta" - }, - "backupUid": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "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 + } + } } } }, - "v1WorkspaceClusterNamespace": { - "description": "Workspace cluster namespace", + "v1HostClusterConfigResponse": { "properties": { - "image": { - "$ref": "#/definitions/v1WorkspaceNamespaceImage" - }, - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "namespaceResourceAllocation": { - "$ref": "#/definitions/v1WorkspaceNamespaceResourceAllocation" + "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" + } + } } } }, - "v1WorkspaceClusterNamespacesEntity": { - "description": "Workspace cluster namespaces update entity", + "v1HostClusterEndpoint": { "properties": { - "clusterNamespaces": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterNamespace" - }, - "type": "array", - "uniqueItems": true + "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" + } + } + } + } + } }, - "clusterRefs": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterRef" - }, - "type": "array", - "uniqueItems": true + "type": { + "description": "is enabled as host cluster", + "type": "string", + "enum": [ + "Ingress", + "LoadBalancer" + ] + } + } + }, + "v1HostClusterEndpointConfig": { + "properties": { + "ingressConfig": { + "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer", + "format": "int64" + } + } }, - "quota": { - "$ref": "#/definitions/v1WorkspaceQuota" + "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" + } + } + } } } }, - "v1WorkspaceClusterRef": { - "description": "Workspace cluster reference", + "v1HttpPatch": { + "type": "object", + "required": [ + "op", + "path" + ], "properties": { - "clusterName": { + "from": { + "description": "A path to the pointer from which reference will be taken", "type": "string" }, - "clusterUid": { + "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" } } }, - "v1WorkspaceClusterRestoreConfig": { - "description": "Workspace cluster restore config", + "v1HubbleInfo": { + "type": "object", "properties": { - "backupName": { + "apiEndpoint": { "type": "string" }, - "clusterRestoreRefs": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterRestoreResponse" - }, - "type": "array" + "apiPort": { + "type": "string" }, - "restoreState": { - "$ref": "#/definitions/v1WorkspaceRestoreState" + "natsEndpoint": { + "type": "string" }, - "restoreTime": { - "$ref": "#/definitions/v1Time" + "uiEndpoint": { + "type": "string" + }, + "uiPort": { + "type": "string" } } }, - "v1WorkspaceClusterRestoreResponse": { - "description": "Workspace cluster restore response", + "v1IPPool": { + "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", + "type": "object", "properties": { - "backupName": { + "gateway": { + "description": "Gateway is the gateway ip address", "type": "string" }, - "clusterName": { - "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" + } + } + } }, - "clusterUid": { - "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" + } + } + } }, - "restoreStatusMeta": { - "$ref": "#/definitions/v1WorkspaceClusterRestoreState" + "prefix": { + "description": "Prefix is the mask of the network as integer (max 128)", + "type": "integer", + "format": "int32" }, - "restoreUid": { + "uid": { + "description": "UID is the UID of this IPPool, used by Hubble", "type": "string" } } }, - "v1WorkspaceClusterRestoreState": { - "description": "Workspace cluster restore state", + "v1IdentityProvider": { + "description": "Describes a predefined Identity Provider (IDP)", + "type": "object", "properties": { - "msg": { + "id": { "type": "string" }, - "restoreTime": { - "$ref": "#/definitions/v1Time" - }, - "state": { + "name": { "type": "string" } } }, - "v1WorkspaceClusterWorkloadCronJobs": { - "description": "Workspace cluster workload cronjobs summary", - "properties": { - "cronjobs": { - "items": { - "$ref": "#/definitions/v1ClusterWorkloadCronJob" + "v1IdentityProviders": { + "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" }, - "type": "array" - }, - "metadata": { - "$ref": "#/definitions/v1RelatedObject" + "name": { + "type": "string" + } } - }, - "type": "object" + } }, - "v1WorkspaceClusterWorkloadDaemonSets": { - "description": "Workspace cluster workload daemonsets summary", + "v1ImportClusterConfig": { + "type": "object", "properties": { - "daemonSets": { - "items": { - "$ref": "#/definitions/v1ClusterWorkloadDaemonSet" - }, - "type": "array" + "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" + ] }, - "metadata": { - "$ref": "#/definitions/v1RelatedObject" + "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": "object" + } }, - "v1WorkspaceClusterWorkloadDeployments": { - "description": "Workspace cluster workload deployments summary", + "v1ImportEdgeHostConfig": { + "type": "object", "properties": { - "deployments": { - "items": { - "$ref": "#/definitions/v1ClusterWorkloadDeployment" - }, - "type": "array" + "edgeHostUid": { + "description": "Deprecated. Use 'edgeHostUids' field", + "type": "string" }, - "metadata": { - "$ref": "#/definitions/v1RelatedObject" + "edgeHostUids": { + "type": "array", + "items": { + "type": "string" + } } - }, - "type": "object" + } }, - "v1WorkspaceClusterWorkloadJobs": { - "description": "Workspace cluster workload jobs summary", + "v1InfraLBConfig": { + "type": "object", "properties": { - "jobs": { - "items": { - "$ref": "#/definitions/v1ClusterWorkloadJob" - }, - "type": "array" - }, - "metadata": { - "$ref": "#/definitions/v1RelatedObject" + "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" + ] + } + } } - }, - "type": "object" + } }, - "v1WorkspaceClusterWorkloadNamespaces": { - "description": "Workspace cluster workload namespaces summary", + "v1IngressConfig": { + "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", "properties": { - "metadata": { - "$ref": "#/definitions/v1RelatedObject" + "host": { + "type": "string" }, - "namespaces": { - "items": { - "$ref": "#/definitions/v1ClusterWorkloadNamespace" - }, - "type": "array" + "port": { + "type": "integer", + "format": "int64" } - }, - "type": "object" + } }, - "v1WorkspaceClusterWorkloadPods": { - "description": "Workspace cluster workload pods summary", + "v1InstallerStatus": { + "description": "Spectro cluster installer status", + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1RelatedObject" + "clusterMigration": { + "description": "Spectro cluster migration status", + "type": "object", + "properties": { + "database": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "finishTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "folderName": { + "type": "string" + }, + "isCompleted": { + "type": "boolean" + }, + "message": { + "type": "array", + "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" + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "status": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "tenant": { + "description": "Spectro tenant migration status", + "type": "object", + "properties": { + "clusters": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Spectro tenant cluster migration status", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "state": { + "type": "string", + "x-omitempty": false + } + } + } + } }, - "pods": { - "items": { - "$ref": "#/definitions/v1ClusterWorkloadPod" - }, - "type": "array" + "clusterState": { + "type": "string" + }, + "endpoint": { + "type": "string", + "x-omitempty": false } - }, - "type": "object" + } }, - "v1WorkspaceClusterWorkloadRoleBindings": { - "description": "Workspace cluster workload rbac bindings summary", + "v1InstanceConfig": { "properties": { - "bindings": { - "items": { - "$ref": "#/definitions/v1ClusterWorkloadRoleBinding" - }, - "type": "array" + "category": { + "type": "string" }, - "metadata": { - "$ref": "#/definitions/v1RelatedObject" + "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" } - }, - "type": "object" + } }, - "v1WorkspaceClusterWorkloadStatefulSets": { - "description": "Workspace cluster workload statefulsets summary", + "v1InstanceCost": { + "description": "Instance cost entity", + "type": "object", "properties": { - "metadata": { - "$ref": "#/definitions/v1RelatedObject" - }, - "statefulSets": { + "price": { + "description": "Array of cloud instance price", + "type": "array", "items": { - "$ref": "#/definitions/v1ClusterWorkloadStatefulSet" - }, - "type": "array" + "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" + } + } + } } - }, - "type": "object" + } }, - "v1WorkspaceClustersWorkloadCronJobs": { - "description": "Workspace clusters workload cronjobs summary", + "v1InstancePrice": { + "description": "Cloud instance price", + "type": "object", "properties": { - "clusters": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterWorkloadCronJobs" - }, - "type": "array" + "onDemand": { + "description": "OnDemand price of instance", + "type": "number", + "format": "double" }, - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "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" } - }, - "type": "object" + } }, - "v1WorkspaceClustersWorkloadDaemonSets": { - "description": "Workspace clusters workload statefulsets summary", + "v1InstanceType": { + "description": "Cloud Instance type details", + "type": "object", "properties": { - "clusters": { + "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": { - "$ref": "#/definitions/v1WorkspaceClusterWorkloadDaemonSets" - }, - "type": "array" + "type": "string" + } }, - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "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" } - }, - "type": "object" + } }, - "v1WorkspaceClustersWorkloadDeployments": { - "description": "Workspace clusters workload deployments summary", + "v1Invoice": { + "description": "Invoice object", "properties": { - "clusters": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterWorkloadDeployments" - }, - "type": "array" - }, "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "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": "Invoice specification", + "properties": { + "address": { + "description": "Tenant Address", + "type": "object", + "properties": { + "addressLine1": { + "type": "string" + }, + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "billingPeriod": { + "description": "Invoice billing period object", + "properties": { + "end": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "credits": { + "description": "Invoice credits object", + "properties": { + "alloyFreeCredits": { + "description": "Credits allocated for import clusters", + "type": "number", + "format": "int64" + }, + "pureFreeCredits": { + "description": "Credits allocated for managed clusters", + "type": "number", + "format": "int64" + } + } + }, + "envType": { + "description": "Environment type [Trial,MonthlyOnDemand,AnnualSubscription,OnPrem]", + "type": "string" + }, + "month": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "paymentUnit": { + "type": "string", + "enum": [ + "usd" + ] + }, + "plan": { + "description": "Invoice plan object", + "properties": { + "freeCredits": { + "description": "List of free credits", + "type": "array", + "items": { + "description": "Invoice plan credit object", + "properties": { + "planCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + }, + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "type": "number", + "format": "int64" + } + } + } + }, + "plantype": { + "type": "string", + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + }, + "slaCredits": { + "description": "List of SLA credits", + "type": "array", + "items": { + "description": "Invoice plan credit object", + "properties": { + "planCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + }, + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "type": "number", + "format": "int64" + } + } + } + } + } + } + } + }, + "status": { + "description": "Invoice Status", + "properties": { + "billableAmount": { + "description": "Total billable amount", + "type": "number", + "format": "float64" + }, + "productInvoice": { + "description": "Product invoice object", + "properties": { + "alloy": { + "description": "Product invoice data", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "amount": { + "description": "Total amount", + "type": "number", + "format": "float64" + }, + "billableCredits": { + "description": "Credits to be billed", + "type": "number", + "format": "float64" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "type": "number", + "format": "float64" + }, + "discount": { + "description": "Applied discount", + "type": "number", + "format": "int64" + }, + "freeCredits": { + "description": "Allocated free credits", + "type": "number", + "format": "int64" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "type": "number", + "format": "int8" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "type": "number", + "format": "float64" + }, + "totalUsedCredits": { + "description": "Total used credits", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + }, + "pure": { + "description": "Product invoice data", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "amount": { + "description": "Total amount", + "type": "number", + "format": "float64" + }, + "billableCredits": { + "description": "Credits to be billed", + "type": "number", + "format": "float64" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "type": "number", + "format": "float64" + }, + "discount": { + "description": "Applied discount", + "type": "number", + "format": "int64" + }, + "freeCredits": { + "description": "Allocated free credits", + "type": "number", + "format": "int64" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "type": "number", + "format": "int8" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "type": "number", + "format": "float64" + }, + "totalUsedCredits": { + "description": "Total used credits", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + } + } + }, + "projects": { + "description": "List of project invoices", + "type": "array", + "items": { + "description": "Invoice project object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "projectName": { + "description": "Name of the project", + "type": "string" + }, + "projectUid": { + "description": "Project identifier", + "type": "string" + }, + "usage": { + "description": "Project usage object", + "properties": { + "alloy": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" + } + } + }, + "pure": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" + } + } + } + } + } + } + } + }, + "states": { + "description": "List of invoice states", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Invoice state object", + "properties": { + "paymentMsg": { + "description": "Payment status message", + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "Paid", + "PaymentPending", + "PaymentInProgress", + "PaymentFailed" + ] + }, + "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" + } + } + } + }, + "stripeInvoiceId": { + "description": "Stripe invoice uid", + "type": "string" + } + } } - }, - "type": "object" + } }, - "v1WorkspaceClustersWorkloadJobs": { - "description": "Workspace clusters workload jobs summary", + "v1InvoiceBillingPeriod": { + "description": "Invoice billing period object", "properties": { - "clusters": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterWorkloadJobs" - }, - "type": "array" + "end": { + "description": "Time is a wrapper around time.Time which supports correct 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": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": "object" + } }, - "v1WorkspaceClustersWorkloadNamespaces": { - "description": "Workspace clusters workload namespaces summary", + "v1InvoiceCredits": { + "description": "Invoice credits object", "properties": { - "clusters": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterWorkloadNamespaces" - }, - "type": "array" + "alloyFreeCredits": { + "description": "Credits allocated for import clusters", + "type": "number", + "format": "int64" }, - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "pureFreeCredits": { + "description": "Credits allocated for managed clusters", + "type": "number", + "format": "int64" } - }, - "type": "object" + } }, - "v1WorkspaceClustersWorkloadPods": { - "description": "Workspace clusters workload pods summary", + "v1InvoicePlan": { + "description": "Invoice plan object", "properties": { - "clusters": { + "freeCredits": { + "description": "List of free credits", + "type": "array", "items": { - "$ref": "#/definitions/v1WorkspaceClusterWorkloadPods" - }, - "type": "array" + "description": "Invoice plan credit object", + "properties": { + "planCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + }, + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "type": "number", + "format": "int64" + } + } + } }, - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "plantype": { + "type": "string", + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + }, + "slaCredits": { + "description": "List of SLA credits", + "type": "array", + "items": { + "description": "Invoice plan credit object", + "properties": { + "planCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + }, + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "type": "number", + "format": "int64" + } + } + } } - }, - "type": "object" + } }, - "v1WorkspaceClustersWorkloadRoleBindings": { - "description": "Workspace clusters workload rbac bindings summary", + "v1InvoicePlanCredit": { + "description": "Invoice plan credit object", "properties": { - "clusters": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterWorkloadRoleBindings" - }, - "type": "array" + "planCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } }, - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "type": "number", + "format": "int64" } - }, - "type": "object" + } }, - "v1WorkspaceClustersWorkloadStatefulSets": { - "description": "Workspace clusters workload statefulsets summary", + "v1InvoiceProduct": { + "description": "Product invoice object", "properties": { - "clusters": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterWorkloadStatefulSets" - }, - "type": "array" + "alloy": { + "description": "Product invoice data", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "amount": { + "description": "Total amount", + "type": "number", + "format": "float64" + }, + "billableCredits": { + "description": "Credits to be billed", + "type": "number", + "format": "float64" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "type": "number", + "format": "float64" + }, + "discount": { + "description": "Applied discount", + "type": "number", + "format": "int64" + }, + "freeCredits": { + "description": "Allocated free credits", + "type": "number", + "format": "int64" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "type": "number", + "format": "int8" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "type": "number", + "format": "float64" + }, + "totalUsedCredits": { + "description": "Total used credits", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } }, - "metadata": { - "$ref": "#/definitions/v1ObjectMetaInputEntity" + "pure": { + "description": "Product invoice data", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "amount": { + "description": "Total amount", + "type": "number", + "format": "float64" + }, + "billableCredits": { + "description": "Credits to be billed", + "type": "number", + "format": "float64" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "type": "number", + "format": "float64" + }, + "discount": { + "description": "Applied discount", + "type": "number", + "format": "int64" + }, + "freeCredits": { + "description": "Allocated free credits", + "type": "number", + "format": "int64" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "type": "number", + "format": "int8" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "type": "number", + "format": "float64" + }, + "totalUsedCredits": { + "description": "Total used credits", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } } - }, - "type": "object" + } }, - "v1WorkspaceEntity": { - "description": "Workspace information", + "v1InvoiceProductData": { + "description": "Product invoice data", "properties": { - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" }, - "spec": { - "$ref": "#/definitions/v1WorkspaceSpec" + "amount": { + "description": "Total amount", + "type": "number", + "format": "float64" + }, + "billableCredits": { + "description": "Credits to be billed", + "type": "number", + "format": "float64" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "type": "number", + "format": "float64" + }, + "discount": { + "description": "Applied discount", + "type": "number", + "format": "int64" + }, + "freeCredits": { + "description": "Allocated free credits", + "type": "number", + "format": "int64" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "type": "number", + "format": "int8" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "type": "number", + "format": "float64" + }, + "totalUsedCredits": { + "description": "Total used credits", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" } } }, - "v1WorkspaceError": { - "description": "Workspace error", + "v1InvoiceProject": { + "description": "Invoice project object", "properties": { - "clusterUid": { - "type": "string" + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" }, - "msg": { + "projectName": { + "description": "Name of the project", "type": "string" }, - "name": { + "projectUid": { + "description": "Project identifier", "type": "string" }, - "resourceType": { - "type": "string" + "usage": { + "description": "Project usage object", + "properties": { + "alloy": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" + } + } + }, + "pure": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" + } + } + } + } } } }, - "v1WorkspaceNamespaceImage": { - "description": "Workspace namespace image information", + "v1InvoiceRetryRequest": { + "description": "Retry invoice request object", "properties": { - "blackListedImages": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "customerId": { + "description": "Customer invoice uid", + "type": "string" + }, + "invoiceUid": { + "description": "Invoice uid", + "type": "string" + }, + "paymentMethodId": { + "description": "Payment method uid", + "type": "string" } } }, - "v1WorkspaceNamespaceResourceAllocation": { - "description": "Workspace namespace resource allocation", + "v1InvoiceSpec": { + "description": "Invoice specification", "properties": { - "clusterResourceAllocations": { - "items": { - "$ref": "#/definitions/v1ClusterResourceAllocation" - }, - "type": "array", - "uniqueItems": true + "address": { + "description": "Tenant Address", + "type": "object", + "properties": { + "addressLine1": { + "type": "string" + }, + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" + } + } }, - "defaultResourceAllocation": { - "$ref": "#/definitions/v1WorkspaceResourceAllocation" + "billingPeriod": { + "description": "Invoice billing period object", + "properties": { + "end": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "credits": { + "description": "Invoice credits object", + "properties": { + "alloyFreeCredits": { + "description": "Credits allocated for import clusters", + "type": "number", + "format": "int64" + }, + "pureFreeCredits": { + "description": "Credits allocated for managed clusters", + "type": "number", + "format": "int64" + } + } + }, + "envType": { + "description": "Environment type [Trial,MonthlyOnDemand,AnnualSubscription,OnPrem]", + "type": "string" + }, + "month": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "paymentUnit": { + "type": "string", + "enum": [ + "usd" + ] + }, + "plan": { + "description": "Invoice plan object", + "properties": { + "freeCredits": { + "description": "List of free credits", + "type": "array", + "items": { + "description": "Invoice plan credit object", + "properties": { + "planCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + }, + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "type": "number", + "format": "int64" + } + } + } + }, + "plantype": { + "type": "string", + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + }, + "slaCredits": { + "description": "List of SLA credits", + "type": "array", + "items": { + "description": "Invoice plan credit object", + "properties": { + "planCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + }, + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "type": "number", + "format": "int64" + } + } + } + } + } } } }, - "v1WorkspacePolicies": { - "description": "Workspace policies", + "v1InvoiceState": { + "description": "Invoice state object", "properties": { - "backupPolicy": { - "$ref": "#/definitions/v1WorkspaceBackupConfigEntity" + "paymentMsg": { + "description": "Payment status message", + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "Paid", + "PaymentPending", + "PaymentInProgress", + "PaymentFailed" + ] + }, + "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" } } }, - "v1WorkspaceQuota": { - "description": "Workspace resource quota", + "v1InvoiceStatus": { + "description": "Invoice Status", "properties": { - "resourceAllocation": { - "$ref": "#/definitions/v1WorkspaceResourceAllocation" + "billableAmount": { + "description": "Total billable amount", + "type": "number", + "format": "float64" + }, + "productInvoice": { + "description": "Product invoice object", + "properties": { + "alloy": { + "description": "Product invoice data", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "amount": { + "description": "Total amount", + "type": "number", + "format": "float64" + }, + "billableCredits": { + "description": "Credits to be billed", + "type": "number", + "format": "float64" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "type": "number", + "format": "float64" + }, + "discount": { + "description": "Applied discount", + "type": "number", + "format": "int64" + }, + "freeCredits": { + "description": "Allocated free credits", + "type": "number", + "format": "int64" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "type": "number", + "format": "int8" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "type": "number", + "format": "float64" + }, + "totalUsedCredits": { + "description": "Total used credits", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + }, + "pure": { + "description": "Product invoice data", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "amount": { + "description": "Total amount", + "type": "number", + "format": "float64" + }, + "billableCredits": { + "description": "Credits to be billed", + "type": "number", + "format": "float64" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "type": "number", + "format": "float64" + }, + "discount": { + "description": "Applied discount", + "type": "number", + "format": "int64" + }, + "freeCredits": { + "description": "Allocated free credits", + "type": "number", + "format": "int64" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "type": "number", + "format": "int8" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "type": "number", + "format": "float64" + }, + "totalUsedCredits": { + "description": "Total used credits", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + } + } + }, + "projects": { + "description": "List of project invoices", + "type": "array", + "items": { + "description": "Invoice project object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "projectName": { + "description": "Name of the project", + "type": "string" + }, + "projectUid": { + "description": "Project identifier", + "type": "string" + }, + "usage": { + "description": "Project usage object", + "properties": { + "alloy": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" + } + } + }, + "pure": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" + } + } + } + } + } + } + } + }, + "states": { + "description": "List of invoice states", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Invoice state object", + "properties": { + "paymentMsg": { + "description": "Payment status message", + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "Paid", + "PaymentPending", + "PaymentInProgress", + "PaymentFailed" + ] + }, + "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" + } + } + } + }, + "stripeInvoiceId": { + "description": "Stripe invoice uid", + "type": "string" } } }, - "v1WorkspaceResourceAllocation": { - "description": "Workspace resource allocation", + "v1Invoices": { + "description": "List of invoices", + "type": "object", + "required": [ + "invoices" + ], "properties": { - "cpuCores": { - "minimum": -1, - "type": "number", - "x-omitempty": false + "invoices": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Invoice 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": "Invoice specification", + "properties": { + "address": { + "description": "Tenant Address", + "type": "object", + "properties": { + "addressLine1": { + "type": "string" + }, + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "billingPeriod": { + "description": "Invoice billing period object", + "properties": { + "end": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "credits": { + "description": "Invoice credits object", + "properties": { + "alloyFreeCredits": { + "description": "Credits allocated for import clusters", + "type": "number", + "format": "int64" + }, + "pureFreeCredits": { + "description": "Credits allocated for managed clusters", + "type": "number", + "format": "int64" + } + } + }, + "envType": { + "description": "Environment type [Trial,MonthlyOnDemand,AnnualSubscription,OnPrem]", + "type": "string" + }, + "month": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "paymentUnit": { + "type": "string", + "enum": [ + "usd" + ] + }, + "plan": { + "description": "Invoice plan object", + "properties": { + "freeCredits": { + "description": "List of free credits", + "type": "array", + "items": { + "description": "Invoice plan credit object", + "properties": { + "planCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + }, + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "type": "number", + "format": "int64" + } + } + } + }, + "plantype": { + "type": "string", + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + }, + "slaCredits": { + "description": "List of SLA credits", + "type": "array", + "items": { + "description": "Invoice plan credit object", + "properties": { + "planCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + }, + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "type": "number", + "format": "int64" + } + } + } + } + } + } + } + }, + "status": { + "description": "Invoice Status", + "properties": { + "billableAmount": { + "description": "Total billable amount", + "type": "number", + "format": "float64" + }, + "productInvoice": { + "description": "Product invoice object", + "properties": { + "alloy": { + "description": "Product invoice data", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "amount": { + "description": "Total amount", + "type": "number", + "format": "float64" + }, + "billableCredits": { + "description": "Credits to be billed", + "type": "number", + "format": "float64" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "type": "number", + "format": "float64" + }, + "discount": { + "description": "Applied discount", + "type": "number", + "format": "int64" + }, + "freeCredits": { + "description": "Allocated free credits", + "type": "number", + "format": "int64" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "type": "number", + "format": "int8" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "type": "number", + "format": "float64" + }, + "totalUsedCredits": { + "description": "Total used credits", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + }, + "pure": { + "description": "Product invoice data", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "amount": { + "description": "Total amount", + "type": "number", + "format": "float64" + }, + "billableCredits": { + "description": "Credits to be billed", + "type": "number", + "format": "float64" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "type": "number", + "format": "float64" + }, + "discount": { + "description": "Applied discount", + "type": "number", + "format": "int64" + }, + "freeCredits": { + "description": "Allocated free credits", + "type": "number", + "format": "int64" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "type": "number", + "format": "int8" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "type": "number", + "format": "float64" + }, + "totalUsedCredits": { + "description": "Total used credits", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + } + } + }, + "projects": { + "description": "List of project invoices", + "type": "array", + "items": { + "description": "Invoice project object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "projectName": { + "description": "Name of the project", + "type": "string" + }, + "projectUid": { + "description": "Project identifier", + "type": "string" + }, + "usage": { + "description": "Project usage object", + "properties": { + "alloy": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" + } + } + }, + "pure": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" + } + } + } + } + } + } + } + }, + "states": { + "description": "List of invoice states", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Invoice state object", + "properties": { + "paymentMsg": { + "description": "Payment status message", + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "Paid", + "PaymentPending", + "PaymentInProgress", + "PaymentFailed" + ] + }, + "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" + } + } + } + }, + "stripeInvoiceId": { + "description": "Stripe invoice uid", + "type": "string" + } + } + } + } + } }, - "memoryMiB": { - "minimum": -1, - "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 + } + } } } }, - "v1WorkspaceResourceAllocationsEntity": { - "description": "Workspace resource allocation update entity", + "v1IpPoolEntity": { + "description": "IP Pool entity definition", + "type": "object", "properties": { - "clusterNamespaces": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterNamespace" - }, - "type": "array", - "uniqueItems": true + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, - "clusterRefs": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterRef" - }, - "type": "array", - "uniqueItems": true + "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 + } + } }, - "quota": { - "$ref": "#/definitions/v1WorkspaceQuota" + "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 + } + } } } }, - "v1WorkspaceRestore": { - "description": "Workspace restore", + "v1IpPoolInputEntity": { + "description": "IP Pool input entity definition", + "type": "object", "properties": { "metadata": { - "$ref": "#/definitions/v1ObjectMeta" + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + } }, "spec": { - "$ref": "#/definitions/v1WorkspaceRestoreSpec" - }, - "status": { - "$ref": "#/definitions/v1WorkspaceRestoreStatus" + "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" + } + } } } }, - "v1WorkspaceRestoreConfig": { - "description": "Workspace cluster restore config", + "v1IpPoolStatus": { + "description": "IP Pool status", + "type": "object", "properties": { - "backupName": { - "type": "string" - }, - "includeClusterResources": { - "type": "boolean" - }, - "includeNamespaces": { + "allottedIps": { + "type": "array", + "uniqueItems": true, "items": { "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "preserveNodePorts": { - "type": "boolean" + } }, - "restorePVs": { - "type": "boolean" + "associatedClusters": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } }, - "sourceClusterUid": { - "type": "string" + "inUse": { + "type": "boolean", + "x-omitempty": false } - }, - "required": [ - "backupName", - "sourceClusterUid" - ] + } }, - "v1WorkspaceRestoreConfigEntity": { - "description": "Cluster restore config", - "properties": { - "backupRequestUid": { - "type": "string" - }, - "restoreConfigs": { - "items": { - "$ref": "#/definitions/v1WorkspaceRestoreConfig" - }, - "type": "array", - "uniqueItems": true - } - }, + "v1IpPools": { + "type": "object", "required": [ - "backupRequestUid" - ] - }, - "v1WorkspaceRestoreSpec": { - "description": "Workspace restore spec", + "items" + ], "properties": { - "workspaceUid": { - "type": "string" + "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 + } + } + } + } + } } } }, - "v1WorkspaceRestoreState": { - "description": "Workspace restore state", + "v1JWKResponse": { + "type": "object", "properties": { - "deleteState": { + "alg": { + "description": "The \"alg\" (algorithm) parameter identifies the algorithm intended for use with the key", "type": "string" }, - "state": { + "e": { "type": "string" - } - } - }, - "v1WorkspaceRestoreStatus": { - "description": "Workspace restore status", - "properties": { - "workspaceRestoreStatuses": { - "items": { - "$ref": "#/definitions/v1WorkspaceRestoreStatusMeta" - }, - "type": "array" - } - } - }, - "v1WorkspaceRestoreStatusMeta": { - "description": "Workspace restore status meta", - "properties": { - "actor": { - "$ref": "#/definitions/v1ClusterFeatureActor" }, - "requestUid": { + "key_ops": { + "description": "The \"key_ops\" (key operations) parameter identifies the operation(s) for which the key is intended to be used", "type": "string" }, - "workspaceRestoreConfig": { - "$ref": "#/definitions/v1WorkspaceClusterRestoreConfig" - } - } - }, - "v1WorkspaceRolesPatch": { - "properties": { - "roles": { - "items": { - "type": "string" - }, - "type": "array" + "kid": { + "description": "The \"kid\" (key ID) parameter is used to match a specific key", + "type": "string" }, - "uid": { + "kty": { + "description": "The \"kty\" (key type) parameter identifies the cryptographic algorithm family used with the key, such as \"RSA\" or \"EC\"", "type": "string" - } - }, - "type": "object" - }, - "v1WorkspaceRolesUidSummary": { - "properties": { - "name": { + }, + "n": { "type": "string" }, - "uid": { + "use": { + "description": "The \"use\" (public key use) parameter identifies the intended use of the public key", "type": "string" } - }, - "type": "object" - }, - "v1WorkspaceScopeRoles": { - "description": "List all workspaces with the roles assigned to the users", - "properties": { - "projects": { - "items": { - "$ref": "#/definitions/v1ProjectsWorkspaces" - }, - "type": "array", - "uniqueItems": true - } } }, - "v1WorkspaceSpec": { - "description": "Workspace specifications", + "v1JWKSetResponse": { + "type": "object", "properties": { - "clusterNamespaces": { - "items": { - "$ref": "#/definitions/v1WorkspaceClusterNamespace" - }, - "type": "array", - "uniqueItems": true - }, - "clusterRbacs": { - "items": { - "$ref": "#/definitions/v1ClusterRbac" - }, + "keys": { + "description": "The value of the \"keys\" parameter is an array of JWK values", "type": "array", - "uniqueItems": true - }, - "clusterRefs": { "items": { - "$ref": "#/definitions/v1WorkspaceClusterRef" - }, - "type": "array", - "uniqueItems": true - }, - "policies": { - "$ref": "#/definitions/v1WorkspacePolicies" - }, - "quota": { - "$ref": "#/definitions/v1WorkspaceQuota" + "type": "object", + "properties": { + "alg": { + "description": "The \"alg\" (algorithm) parameter identifies the algorithm intended for use with the key", + "type": "string" + }, + "e": { + "type": "string" + }, + "key_ops": { + "description": "The \"key_ops\" (key operations) parameter identifies the operation(s) for which the key is intended to be used", + "type": "string" + }, + "kid": { + "description": "The \"kid\" (key ID) parameter is used to match a specific key", + "type": "string" + }, + "kty": { + "description": "The \"kty\" (key type) parameter identifies the cryptographic algorithm family used with the key, such as \"RSA\" or \"EC\"", + "type": "string" + }, + "n": { + "type": "string" + }, + "use": { + "description": "The \"use\" (public key use) parameter identifies the intended use of the public key", + "type": "string" + } + } + } } } }, - "v1WorkspaceStatus": { - "description": "Workspace status", + "v1JetAuthKey": { + "type": "object", "properties": { - "errors": { - "items": { - "$ref": "#/definitions/v1WorkspaceError" - }, - "type": "array", - "uniqueItems": true + "authKey": { + "type": "string" } } }, - "v1WorkspaceWorkloadsFilter": { - "description": "Workspace workloads filter", - "properties": { - "clusters": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "namespaces": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "v1WorkspaceWorkloadsSpec": { - "description": "Workspace workloads spec", + "v1JetAuthKeyResponse": { + "type": "object", "properties": { - "filter": { - "$ref": "#/definitions/v1WorkspaceWorkloadsFilter" + "authKey": { + "type": "string" } - }, - "type": "object" + } }, - "v1WorkspacesRoles": { - "description": "Workspace users and their roles", + "v1JetServiceLogin": { + "description": "jet service login input", + "type": "object", "properties": { - "inheritedRoles": { - "items": { - "$ref": "#/definitions/v1WorkspaceRolesUidSummary" - }, - "type": "array" - }, - "name": { + "authKey": { + "description": "authToken helps in two step verification for the authorization.", "type": "string" }, - "roles": { - "items": { - "$ref": "#/definitions/v1WorkspaceRolesUidSummary" - }, - "type": "array" + "edgeHostUid": { + "type": "string" }, - "uid": { + "hostClusterUid": { "type": "string" - } - } - }, - "v1WorkspacesRolesPatch": { - "properties": { - "workspaces": { - "items": { - "$ref": "#/definitions/v1WorkspaceRolesPatch" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1YearlyUsage": { - "description": "Yearly usage object", - "properties": { - "billingPeriod": { - "$ref": "#/definitions/v1InvoiceBillingPeriod" }, - "monthlyUsages": { - "description": "List of monthly usages", - "items": { - "$ref": "#/definitions/v1MonthlyUsage" - }, - "type": "array", - "uniqueItems": true + "isSystem": { + "type": "boolean" }, - "productUsages": { - "$ref": "#/definitions/v1ProductUsage" - } - } - }, - "v1ZoneEntity": { - "description": "Azure availability zone entity", - "properties": { - "id": { - "description": "Azure availability zone id", + "jetUid": { "type": "string" - } - }, - "type": "object" - } - }, - "info": { - "title": "Palette APIs - 4.2", - "version": "v1" - }, - "paths": { - "/cluster/{uid}/manifest": { - "get": { - "description": "Deprecated", - "operationId": "v1SpectroClustersUidInstallerManifest", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download file", - "headers": { - "Content-Disposition": { - "type": "string" - } - }, - "schema": { - "format": "binary", - "type": "string" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cluster's installer manifest file", - "tags": [ - "cluster" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "overlordUid": { "type": "string" - } - ] - }, - "/v1/apiKeys": { - "get": { - "operationId": "v1ApiKeysList", - "responses": { - "200": { - "description": "Retrieves a list of API keys", - "schema": { - "$ref": "#/definitions/v1ApiKeys" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of API keys", - "tags": [ - "apiKeys" - ] - }, - "post": { - "operationId": "v1ApiKeysCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ApiKeyEntity" - } - } - ], - "responses": { - "201": { - "description": "APIKey Created successfully", - "schema": { - "$ref": "#/definitions/v1ApiKeyCreateResponse" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create an API key", - "tags": [ - "apiKeys" - ] - } - }, - "/v1/apiKeys/{uid}": { - "delete": { - "operationId": "v1ApiKeysUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "serviceVersion": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified API key", - "tags": [ - "apiKeys" - ] - }, - "get": { - "operationId": "v1ApiKeysUidGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1ApiKey" - } - } + "spectroClusterUid": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified API key", - "tags": [ - "apiKeys" - ] - }, - "parameters": [ - { - "description": "Specify API key uid", - "in": "path", - "name": "uid", - "required": true, + "tenantUid": { "type": "string" } + } + }, + "v1KubeBenchEntity": { + "description": "KubeBench response", + "required": [ + "requestUid", + "status", + "reports" ], - "patch": { - "operationId": "v1ApiKeysUidActiveState", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ApiKeyActiveState" + "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" + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Activate or de-active the specified API key", - "tags": [ - "apiKeys" - ] - }, - "put": { - "operationId": "v1ApiKeysUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ApiKeyUpdate" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "requestUid": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the specified API key", - "tags": [ - "apiKeys" - ] + "status": { + "type": "string", + "enum": [ + "Completed", + "InProgress", + "Failed", + "Initiated" + ] + } } }, - "/v1/apiKeys/{uid}/state": { - "parameters": [ - { - "description": "Specify API key uid", - "in": "path", - "name": "uid", - "required": true, + "v1KubeBenchLog": { + "description": "Compliance Scan KubeBench Log", + "properties": { + "description": { + "type": "string" + }, + "expected": { + "type": "string" + }, + "remediation": { + "type": "string" + }, + "state": { + "type": "string" + }, + "testId": { + "type": "string" + }, + "value": { "type": "string" } - ], - "put": { - "operationId": "v1ApiKeysUidState", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ApiKeyActiveState" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1KubeBenchLogEntity": { + "description": "KubeBench log", + "properties": { + "description": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Revoke or re-activate the API key access", - "tags": [ - "apiKeys" - ] + "expected": { + "type": "string" + }, + "remediation": { + "type": "string" + }, + "state": { + "type": "string" + }, + "testId": { + "type": "string" + }, + "value": { + "type": "string" + } } }, - "/v1/appDeployments": { - "post": { - "operationId": "v1AppDeploymentsVirtualClusterCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppDeploymentVirtualClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1KubeBenchReport": { + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a application deployment in the virtual cluster", - "tags": [ - "appDeployments" - ] + "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" + } } }, - "/v1/appDeployments/clusterGroup": { - "post": { - "operationId": "v1AppDeploymentsClusterGroupCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppDeploymentClusterGroupEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1KubeBenchReportEntity": { + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a application deployment in one of virtual clusters in the cluster group", - "tags": [ - "appDeployments" - ] - } - }, - "/v1/appDeployments/{uid}": { - "delete": { - "operationId": "v1AppDeploymentsUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "name": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified application deployment", - "tags": [ - "appDeployments" - ] - }, - "get": { - "operationId": "v1AppDeploymentsUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AppDeployment" - } - } + "pass": { + "type": "integer", + "format": "int32" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified application deployment", - "tags": [ - "appDeployments" - ] - }, - "parameters": [ - { - "description": "Application deployment uid", - "in": "path", - "name": "uid", - "required": true, + "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" } - ] + } }, - "/v1/appDeployments/{uid}/profile": { - "get": { - "operationId": "v1AppDeploymentsUidProfileGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AppDeploymentProfileSpec" + "v1KubeHunterEntity": { + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns profile of the specified application deployment", - "tags": [ - "appDeployments" - ] - }, - "parameters": [ - { - "description": "Application deployment uid", - "in": "path", - "name": "uid", - "required": true, + "requestUid": { "type": "string" - } - ], - "put": { - "operationId": "v1AppDeploymentsUidProfileUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppDeploymentProfileEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified application deployment profile", - "tags": [ - "appDeployments" - ] + "status": { + "type": "string", + "enum": [ + "Completed", + "InProgress", + "Failed", + "Initiated" + ] + } } }, - "/v1/appDeployments/{uid}/profile/apply": { - "parameters": [ - { - "description": "Application deployment uid", - "in": "path", - "name": "uid", - "required": true, + "v1KubeHunterLog": { + "description": "Compliance Scan KubeHunter Log", + "properties": { + "description": { "type": "string" }, - { - "description": "Application deployment notification uid", - "in": "query", - "name": "notify", + "evidence": { "type": "string" - } - ], - "patch": { - "operationId": "v1AppDeploymentsUidProfileApply", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Apply the application deployment profile updates", - "tags": [ - "appDeployments" - ] + "reference": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "testId": { + "type": "string" + }, + "vulnerability": { + "type": "string" + } } }, - "/v1/appDeployments/{uid}/profile/tiers/{tierUid}": { - "get": { - "operationId": "v1AppDeploymentsProfileTiersUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AppTier" - } - } + "v1KubeHunterLogEntity": { + "description": "KubeHunter log", + "properties": { + "description": { + "type": "string" + }, + "evidence": { + "type": "string" + }, + "reference": { + "type": "string" + }, + "severity": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified application deployment profile tier information", - "tags": [ - "appDeployments" - ] - }, - "parameters": [ - { - "description": "Application deployment uid", - "in": "path", - "name": "uid", - "required": true, + "testId": { "type": "string" }, - { - "description": "Application deployment tier uid", - "in": "path", - "name": "tierUid", - "required": true, + "vulnerability": { "type": "string" } - ], - "put": { - "operationId": "v1AppDeploymentsProfileTiersUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppTierUpdateEntity" + } + }, + "v1KubeHunterReport": { + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates the specified application deployment profile tier information", - "tags": [ - "appDeployments" - ] + } } }, - "/v1/appDeployments/{uid}/profile/tiers/{tierUid}/manifests": { - "get": { - "operationId": "v1AppDeploymentsProfileTiersUidManifestsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AppTierManifests" + "v1KubeHunterReportEntity": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Retrieves a list of manifests of the specified application deployment profile tier", - "tags": [ - "appDeployments" - ] - }, - "parameters": [ - { - "description": "Application deployment uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" + } + } + }, + "v1KubeHunterVulnerabilities": { + "description": "Compliance Scan KubeHunter Vulnerabilities", + "properties": { + "high": { + "type": "integer", + "format": "int32" }, - { - "description": "Application deployment tier uid", - "in": "path", - "name": "tierUid", - "required": true, + "low": { + "type": "integer", + "format": "int32" + }, + "medium": { + "type": "integer", + "format": "int32" + } + } + }, + "v1KubeHunterVulnerabilityDataEntity": { + "description": "KubeHunter vulnerability data", + "properties": { + "high": { + "type": "integer", + "format": "int32" + }, + "low": { + "type": "integer", + "format": "int32" + }, + "medium": { + "type": "integer", + "format": "int32" + } + } + }, + "v1KubeMeta": { + "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" } - ] + } }, - "/v1/appDeployments/{uid}/profile/tiers/{tierUid}/manifests/{manifestUid}": { - "get": { - "operationId": "v1AppDeploymentsProfileTiersManifestsUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Manifest" + "v1LibvirtCloudClusterConfigEntity": { + "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" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified application deployment tier manifest information", - "tags": [ - "appDeployments" - ] - }, - "parameters": [ - { - "description": "Application deployment uid", - "in": "path", - "name": "uid", - "required": true, + } + } + }, + "v1LibvirtCloudConfig": { + "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" }, - { - "description": "Application deployment tier uid", - "in": "path", - "name": "tierUid", - "required": true, + "kind": { + "description": "Cloud type of the cloud config", "type": "string" }, - { - "description": "Application deployment tier manifest uid", - "in": "path", - "name": "manifestUid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1AppDeploymentsProfileTiersManifestsUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ManifestRefUpdateEntity" + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" + } + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates the specified application deployment tier manifest information", - "tags": [ - "appDeployments" - ] + } } }, - "/v1/appDeployments/{uid}/profile/versions": { - "get": { - "operationId": "v1AppDeploymentsUidProfileVersionsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AppDeploymentProfileVersions" + "v1LibvirtCloudConfigSpec": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Retrieves a list of profile versions of the specified application deployment", - "tags": [ - "appDeployments" - ] - }, - "parameters": [ - { - "description": "Application deployment uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/appProfiles": { - "post": { - "operationId": "v1AppProfilesCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppProfileEntity" + "v1LibvirtCloudConfigStatus": { + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a application profile", - "tags": [ - "appProfiles" - ] + "sourceImageId": { + "description": "SourceImageId can be from packref's annotations or from pack.json", + "type": "string" + } } }, - "/v1/appProfiles/macros": { - "get": { - "operationId": "v1AppProfilesMacrosList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Macros" + "v1LibvirtClusterConfig": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of application profile macros", - "tags": [ - "appProfiles" - ] - } - }, - "/v1/appProfiles/{uid}": { - "delete": { - "operationId": "v1AppProfilesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "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" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified application profile", - "tags": [ - "appProfiles" - ] - }, - "get": { - "operationId": "v1AppProfilesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "sshKeys": { + "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AppProfile" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified application profile", - "tags": [ - "appProfiles" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "staticIp": { + "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", + "type": "boolean" + } + } + }, + "v1LibvirtControlPlaneEndPoint": { + "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" } + } + }, + "v1LibvirtDiskSpec": { + "type": "object", + "required": [ + "sizeInGB" ], - "put": { - "operationId": "v1AppProfilesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppProfileEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "properties": { + "dataStoragePool": { + "description": "DataStoragePool is the storage pool from which additional disks are assigned", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + }, + "v1LibvirtHostIdentity": { + "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" + } } - ], - "summary": "Updates the specified application profile", - "tags": [ - "appProfiles" - ] + } } }, - "/v1/appProfiles/{uid}/clone": { - "parameters": [ - { - "description": "Application profile uid", - "in": "path", - "name": "uid", - "required": true, + "v1LibvirtImage": { + "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" } + } + }, + "v1LibvirtInstanceType": { + "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", + "type": "object", + "required": [ + "numCPUs", + "memoryInMB" ], - "post": { - "operationId": "v1AppProfilesUidClone", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppProfileCloneEntity" + "properties": { + "cpuPassthroughSpec": { + "type": "object", + "properties": { + "cachePassthrough": { + "type": "boolean" + }, + "isEnabled": { + "description": "Enables the CPU Passthrough for the libvirt domain", + "type": "boolean" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Clones the specified application profile", - "tags": [ - "appProfiles" - ] + "memoryInMB": { + "description": "MemoryinMB is the memory in megabytes", + "type": "integer", + "format": "int32" + }, + "numCPUs": { + "description": "NumCPUs is the number of CPUs", + "type": "integer", + "format": "int32" + } } }, - "/v1/appProfiles/{uid}/clone/validate": { - "parameters": [ - { - "description": "Application profile uid", - "in": "path", - "name": "uid", - "required": true, + "v1LibvirtMachine": { + "description": "Libvirt cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" - } - ], - "post": { - "operationId": "v1AppProfilesUidCloneValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppProfileCloneMetaInputEntity" + }, + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Validates the specified application profile clone", - "tags": [ - "appProfiles" - ] + } } }, - "/v1/appProfiles/{uid}/metadata": { - "parameters": [ - { - "description": "Application profile uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } + "v1LibvirtMachinePoolCloudConfigEntity": { + "required": [ + "instanceType", + "placements", + "rootDiskInGB" ], - "patch": { - "operationId": "v1AppProfilesUidMetadataUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppProfileMetaEntity" + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified application profile metadata", - "tags": [ - "appProfiles" - ] - } - }, - "/v1/appProfiles/{uid}/tiers": { - "get": { - "operationId": "v1AppProfilesUidTiersGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AppProfileTiers" + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Retrieves a list of tiers of the specified application profile", - "tags": [ - "appProfiles" - ] - }, - "parameters": [ - { - "description": "Application profile uid", - "in": "path", - "name": "uid", - "required": true, + }, + "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" } + } + }, + "v1LibvirtMachinePoolConfig": { + "type": "object", + "required": [ + "instanceType", + "placements", + "rootDiskInGB" ], - "patch": { - "operationId": "v1AppProfilesUidTiersPatch", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppTierPatchEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "properties": { + "additionalLabels": { + "description": "additionalLabels", + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "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" + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Updates app tier of the specified application profile", - "tags": [ - "appProfiles" - ] - }, - "post": { - "operationId": "v1AppProfilesUidTiersCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppTierEntity" + }, + "machinePoolProperties": { + "description": "Machine pool specific properties", + "type": "object", + "properties": { + "archType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds tier to the specified application profile", - "tags": [ - "appProfiles" - ] - } - }, - "/v1/appProfiles/{uid}/tiers/{tierUid}": { - "delete": { - "operationId": "v1AppProfilesUidTiersUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "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" + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified application profile tier", - "tags": [ - "appProfiles" - ] - }, - "get": { - "operationId": "v1AppProfilesUidTiersUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AppTier" + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } } - ], - "summary": "Returns the specified application profile tier information", - "tags": [ - "appProfiles" - ] - }, - "parameters": [ - { - "description": "Application profile uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" }, - { - "description": "Application profile tier uid", - "in": "path", - "name": "tierUid", - "required": true, + "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" } - ], - "put": { - "operationId": "v1AppProfilesUidTiersUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppTierUpdateEntity" + } + }, + "v1LibvirtMachinePoolConfigEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Updates the specified application profile tier", - "tags": [ - "appProfiles" - ] + } } }, - "/v1/appProfiles/{uid}/tiers/{tierUid}/manifests": { - "get": { - "operationId": "v1AppProfilesUidTiersUidManifestsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AppTierManifests" + "v1LibvirtMachineSpec": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of manifests of the specified application profile tier", - "tags": [ - "appProfiles" - ] - }, - "parameters": [ - { - "description": "Application profile uid", - "in": "path", - "name": "uid", - "required": true, + "edgeHostUid": { + "type": "string" + }, + "failureDomain": { + "type": "string" + }, + "imageName": { "type": "string" }, - { - "description": "Application profile tier uid", - "in": "path", - "name": "tierUid", - "required": true, + "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" } + } + }, + "v1LibvirtMachines": { + "description": "Libvirt machine list", + "type": "object", + "required": [ + "items" ], - "post": { - "operationId": "v1AppProfilesUidTiersUidManifestsCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ManifestInputEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "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" + } + } + } + } } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } + } + } + }, + "v1LibvirtNetworkSpec": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds manifest to the specified application profile tier", - "tags": [ - "appProfiles" - ] + "networkType": { + "description": "NetworkType specifies the type of network", + "type": "string", + "enum": [ + "default", + "bridge" + ] + } } }, - "/v1/appProfiles/{uid}/tiers/{tierUid}/manifests/{manifestUid}": { - "delete": { - "operationId": "v1AppProfilesUidTiersUidManifestsUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1LibvirtNicSpec": { + "description": "Libvirt network interface", + "type": "object", + "required": [ + "macAddress" + ], + "properties": { + "index": { + "type": "integer", + "format": "int8" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified application profile tier manifest", - "tags": [ - "appProfiles" - ] - }, - "get": { - "operationId": "v1AppProfilesUidTiersUidManifestsUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "macAddress": { + "type": "string" + }, + "privateIPs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Manifest" + } + } + }, + "v1LibvirtPlacementConfig": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Returns the specified application profile tier manifest information", - "tags": [ - "appProfiles" - ] - }, - "parameters": [ - { - "description": "Application profile uid", - "in": "path", - "name": "uid", - "required": true, + }, + "hostUid": { + "description": "HostUid is the ID of the LibvirtHost", "type": "string" }, - { - "description": "Application profile tier uid", - "in": "path", - "name": "tierUid", - "required": true, + "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" }, - { - "description": "Application profile tier manifest uid", - "in": "path", - "name": "manifestUid", - "required": true, + "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" } + } + }, + "v1LibvirtPlacementEntity": { + "description": "Libvirt placement config", + "type": "object", + "required": [ + "hostUid" ], - "put": { - "operationId": "v1AppProfilesUidTiersUidManifestsUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ManifestRefUpdateEntity" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified application profile tier manifest information", - "tags": [ - "appProfiles" - ] - } - }, - "/v1/appProfiles/{uid}/tiers/{tierUid}/resolvedValues": { - "get": { - "operationId": "v1AppProfilesUidTiersUidResolvedValuesGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AppTierResolvedValues" + "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" + ] + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified application profile tier resolved values", - "tags": [ - "appProfiles" - ] - }, - "parameters": [ - { - "description": "Application profile uid", - "in": "path", - "name": "uid", - "required": true, + "sourceStoragePool": { "type": "string" }, - { - "description": "Application profile tier uid", - "in": "path", - "name": "tierUid", - "required": true, + "targetStoragePool": { "type": "string" } - ] + } }, - "/v1/audits": { - "get": { - "operationId": "v1AuditsList", - "parameters": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "format": "date-time", - "in": "query", - "name": "startTime", - "type": "string" - }, - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "format": "date-time", - "in": "query", - "name": "endTime", - "type": "string" - }, - { - "description": "Specify the user uid, to retrieve the specific user audit logs", - "in": "query", - "name": "userUid", - "type": "string" - }, - { - "description": "Specify the project uid, to retrieve the specific project audit logs", - "in": "query", - "name": "projectUid", - "type": "string" - }, - { - "description": "Specify the tenant uid, to retrieve the specific tenant audit logs", - "in": "query", - "name": "tenantUid", - "type": "string" - }, - { - "description": "Specify the resource name, to retrieve the specific resource audit logs", - "in": "query", - "name": "resourceKind", - "type": "string" - }, - { - "description": "Specify the resource uid, to retrieve the specific resource audit logs", - "in": "query", - "name": "resourceUid", - "type": "string" - }, - { - "enum": [ - "create", - "update", - "delete", - "publish", - "deploy" - ], - "in": "query", - "name": "actionType", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1Audits" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves the list of audit logs", - "tags": [ - "audits" - ] + "v1LifecycleConfig": { + "properties": { + "pause": { + "description": "enable pause life cycle config", + "type": "boolean", + "default": false, + "x-omitempty": false + } } }, - "/v1/audits/{uid}": { - "get": { - "operationId": "v1AuditsUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1Audit" + "v1LifecycleConfigEntity": { + "type": "object", + "properties": { + "lifecycleConfig": { + "properties": { + "pause": { + "description": "enable pause life cycle config", + "type": "boolean", + "default": false, + "x-omitempty": false } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified audit log", - "tags": [ - "audits" - ] - }, - "parameters": [ - { - "description": "Specify the audit uid", - "in": "path", - "name": "uid", - "required": true, + } + } + }, + "v1LifecycleStatus": { + "properties": { + "msg": { + "description": "error or success msg of lifecycle", "type": "string" + }, + "status": { + "description": "lifecycle status", + "type": "string", + "enum": [ + "Pausing", + "Paused", + "Resuming", + "Running", + "Error" + ] + } + } + }, + "v1ListMetaData": { + "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/audits/{uid}/sysMsg": { - "get": { - "operationId": "v1AuditsUidGetSysMsg", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1LoadBalancerConfig": { + "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", + "properties": { + "externalIPs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AuditSysMsg" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified system audit message", - "tags": [ - "audits" - ] - }, - "parameters": [ - { - "description": "Specify the audit uid", - "in": "path", - "name": "uid", - "required": true, + "externalTrafficPolicy": { "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array", + "items": { + "type": "string" + } } - ] + } }, - "/v1/audits/{uid}/userMsg": { - "parameters": [ - { - "description": "Specify the audit uid", - "in": "path", - "name": "uid", - "required": true, + "v1LoadBalancerService": { + "type": "object", + "properties": { + "host": { + "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", "type": "string" - } - ], - "patch": { - "operationId": "v1AuditsUidMsgUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AuditMsgUpdate" + }, + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } + } + } + }, + "v1LoadBalancerSpec": { + "description": "LoadBalancerSpec defines an Azure load balancer.", + "type": "object", + "properties": { + "apiServerLBStaticIP": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified user message for the specified audit", - "tags": [ - "audits" - ] + "ipAllocationMethod": { + "type": "string", + "default": "Dynamic", + "enum": [ + "Static", + "Dynamic" + ] + }, + "privateDNSName": { + "type": "string" + }, + "type": { + "description": "Load Balancer type", + "type": "string", + "default": "Public", + "enum": [ + "Internal", + "Public" + ] + } } }, - "/v1/auth/authenticate": { - "post": { - "description": "Creates a authentication request with the specified credentials", - "operationId": "v1Authenticate", - "parameters": [ - { - "default": true, - "description": "Describes a way to set cookie from backend.", - "in": "query", - "name": "setCookie", - "type": "boolean" - }, - { - "description": "Describes the credential details required for authentication", - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1AuthLogin" + "v1LocationType": { + "description": "Location type", + "type": "string", + "default": "s3", + "enum": [ + "s3", + "gcp", + "minio" + ] + }, + "v1Lock": { + "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" } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1UserToken" + }, + "spec": { + "type": "object", + "properties": { + "expireAt": { + "description": "Time is a wrapper around time.Time which supports correct 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": { + "type": "string", + "x-omitempty": false } } - }, - "summary": "Authenticates the user for the specified crendentials", - "tags": [ - "auth" - ] + } } }, - "/v1/auth/login": { - "post": { - "description": "Deprecated. Returns the authentication type for the specified user email id", - "operationId": "v1AuthLogin", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1Login" + "v1Locks": { + "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" + } } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AuthLogins" + }, + "spec": { + "type": "object", + "properties": { + "expireAt": { + "description": "Time is a wrapper around time.Time which supports correct 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": { + "type": "string", + "x-omitempty": false + } } } - }, - "summary": "Deprecated. Returns the authentication type for the specified user email id", - "tags": [ - "auth" - ] + } } }, - "/v1/auth/org": { - "get": { - "description": "Returns the allowed login method and information with the organization details", - "operationId": "v1AuthOrg", - "parameters": [ - { - "in": "query", - "name": "orgName", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1LoginResponse" - } - } - }, - "summary": "Returns the user organization details", - "tags": [ - "auth" - ] + "v1Login": { + "description": "Login input", + "type": "object", + "properties": { + "emailId": { + "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", - "operationId": "V1AuthOrgSwitch", - "parameters": [ - { - "default": true, - "description": "Describes a way to set cookie from backend for switched organization", - "in": "query", - "name": "setCookie", - "type": "boolean" - }, - { - "description": "Organization name for which switch request has to be created", - "in": "path", - "name": "orgName", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1UserToken" - } - } + "v1LoginBannerSettings": { + "properties": { + "Message": { + "description": "Login banner message displayed to the user", + "type": "string", + "x-omitempty": false }, - "summary": "Creates a request to switch organization", - "tags": [ - "auth" - ] + "isEnabled": { + "description": "Set to 'true' if login banner has to be displayed for user", + "type": "boolean", + "x-omitempty": false + }, + "title": { + "description": "Banner title displayed to the user", + "type": "string", + "x-omitempty": false + } } }, - "/v1/auth/org/{org}/oidc/callback": { - "get": { - "description": "Returns the Authorization token for the palette. This is called by the IDP as a callback url after IDP authenticates the user with its server.", - "operationId": "V1OidcCallback", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1UserToken" - } - } - }, - "summary": "Idp authorization code callback", - "tags": [ - "auth" - ] - }, - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org", - "required": true, + "v1LoginResponse": { + "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" }, - { - "description": "Describes temporary and very short lived code sent by IDP to validate the token", - "in": "query", - "name": "code", - "type": "string" + "authType": { + "description": "Describes the default mode of authentication. Possible values [password, sso]", + "type": "string", + "enum": [ + "password", + "sso" + ] }, - { - "description": "Describes a state to validate and associate request and response", - "in": "query", - "name": "state", + "orgName": { + "description": "Organization name.", "type": "string" }, - { - "description": "Describes a error code in case the IDP is not able to validate and authenticates the user", - "in": "query", - "name": "error", + "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" }, - { - "description": "Describes a error in case the IDP is not able to validate and authenticates the user", - "in": "query", - "name": "error_description", + "securityMode": { + "description": "Describes which security mode is enabled", "type": "string" - } - ] - }, - "/v1/auth/org/{org}/oidc/logout": { - "get": { - "description": "Returns No Content. Works as a callback url after the IDP logout from their server.", - "operationId": "V1OidcLogout", - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } } } }, - "summary": "Identity provider logout url for the Oidc", - "tags": [ - "auth" - ] - }, - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org", - "required": true, - "type": "string" - }, - { - "description": "Describes a state to validate and associate request and response", - "in": "query", - "name": "state", - "type": "string" + "totalTenants": { + "description": "Describes the total number of tenant present in the system", + "type": "number", + "format": "int64" } - ] + } }, - "/v1/auth/org/{org}/saml/callback": { - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org", - "required": true, + "v1LogoutResponse": { + "description": "Logout response specifying the redirect url", + "type": "object", + "properties": { + "redirectUrl": { + "type": "string", + "x-omitempty": false + } + } + }, + "v1MaasAccount": { + "description": "Maas cloud account information", + "type": "object", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - { - "description": "Deprecated.", - "in": "query", - "name": "authToken", + "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" + } + } } + } + }, + "v1MaasAccounts": { + "type": "object", + "required": [ + "items" ], - "post": { - "consumes": [ - "application/x-www-form-urlencoded" - ], - "description": "Returns the Authorization token for the palette. This is called by the SAML based IDP as a callback url after IDP authenticates the user with its server.", - "operationId": "V1SamlCallback", - "parameters": [ - { - "description": "Describe the SAML compliant response sent by IDP which will be validated by Palette", - "in": "formData", - "name": "SAMLResponse", - "type": "string" - }, - { - "description": "Describes a state to validate and associate request and response", - "in": "formData", - "name": "RelayState", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1UserToken" + "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" + } + } + } } } }, - "summary": "Identity provider callback url for the SMAL authentication", - "tags": [ - "auth" - ] + "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/auth/org/{org}/saml/logout": { - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org", - "required": true, + "v1MaasCloudAccount": { + "type": "object", + "required": [ + "apiKey", + "apiEndpoint" + ], + "properties": { + "apiEndpoint": { "type": "string" }, - { - "description": "Deprecated.", - "in": "query", - "name": "authToken", + "apiKey": { "type": "string" - } - ], - "post": { - "consumes": [ - "application/x-www-form-urlencoded" - ], - "description": "Returns No Content. Works as a callback url after the IDP logout from their server.", - "operationId": "V1SamlLogout", - "parameters": [ - { - "description": "Describe the SAML compliant response sent by IDP which will be validated by Palette to perform logout.", - "in": "formData", - "name": "SAMLResponse", - "type": "string" + }, + "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": "" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1MaasCloudClusterConfigEntity": { + "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" } } } - }, - "summary": "Identity provider logout url for the SMAL", - "tags": [ - "auth" - ] + } } }, - "/v1/auth/orgs": { - "get": { - "description": "Returns a list of user's organizations details and login methods", - "operationId": "V1AuthOrgs", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Organizations" + "v1MaasCloudConfig": { + "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" } } }, - "summary": "Returns a list of user's organizations", - "tags": [ - "auth" - ] - } - }, - "/v1/auth/password/{passwordToken}/activate": { - "parameters": [ - { - "description": "Describes the expirable password token for the user to be used for authentication of user", - "in": "path", - "name": "passwordToken", - "required": true, - "type": "string" - } - ], - "patch": { - "description": "Updates and Activates user password with the help of password token", - "operationId": "v1PasswordActivate", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { + "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": { - "password": { - "description": "Describes the new password for the user", - "format": "password", + "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": [ - "password" + "domain" ], - "type": "object" + "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" + } + } + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "summary": "Updates and Activates the specified user password using the password token", - "tags": [ - "auth" - ] - } - }, - "/v1/auth/password/{passwordToken}/reset": { - "parameters": [ - { - "description": "Describes the expirable password token for the user to be used for authentication of user", - "in": "path", - "name": "passwordToken", - "required": true, - "type": "string" - } - ], - "patch": { - "description": "Updates the new user password with the help of password token", - "operationId": "v1PasswordReset", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { + "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": { - "password": { - "description": "Describes the new password for the user", - "format": "password", + "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" } - }, - "required": [ - "password" - ], - "type": "object" + } + }, + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + } + } + }, + "v1MaasCloudConfigSpec": { + "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" + } } }, - "summary": "Resets the user password using the password token", - "tags": [ - "auth" - ] + "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" + } + } + } + } } }, - "/v1/auth/refresh/{token}": { - "get": { - "description": "Returns a new token within refresh timeout and same session id is maintained", - "operationId": "v1AuthRefresh", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1UserToken" + "v1MaasCloudConfigStatus": { + "description": "MaasCloudConfigStatus defines the observed state of MaasCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", + "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" + } } } }, - "summary": "Refreshes authentication token", - "tags": [ - "auth" - ] - }, - "parameters": [ - { - "default": true, - "description": "Describes a way to set cookie from backend.", - "in": "query", - "name": "setCookie", + "isAddonLayer": { + "description": "addon layers present in spc", "type": "boolean" }, - { - "description": "Non expired Authorization token", - "in": "path", - "name": "token", - "required": true, - "type": "string" - } - ] - }, - "/v1/auth/sso/idps": { - "get": { - "description": "Returns a list of predefined Identity Provider (IDP)", - "operationId": "V1SsoIdps", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1IdentityProviders" + "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" } } }, - "summary": "Returns a list of predefined Identity Provider (IDP)", - "tags": [ - "auth" - ] + "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" + } } }, - "/v1/auth/sso/logins": { - "get": { - "description": "Returns a list of supported sso logins and their authentication mechanism", - "operationId": "V1SsoLogins", - "parameters": [ - { - "in": "query", - "name": "org", + "v1MaasClusterConfig": { + "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" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1SsoLogins" - } - } - }, - "summary": "Returns a list of supported sso logins", - "tags": [ - "auth" - ] + } } }, - "/v1/auth/sso/providers": { - "get": { - "description": "Returns a list of supported sso auth providers", - "operationId": "V1AuthSsoProviders", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1SsoLogins" + "v1MaasDomain": { + "description": "Maas domain", + "type": "object", + "properties": { + "name": { + "description": "Name of Maas domain", + "type": "string" + } + } + }, + "v1MaasDomains": { + "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" + } } } - }, - "summary": "Returns a list of supported sso auth providers", - "tags": [ - "auth" - ] + } } }, - "/v1/auth/sso/{ssoApp}/callback": { - "get": { - "description": "Returns Authorization token. Works as a callback url for the system defined sso apps", - "operationId": "V1SsoCallback", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1UserToken" - } - } - }, - "summary": "Returns Authorization token. Works as a callback url for the system defined sso apps", - "tags": [ - "auth" - ] - }, - "parameters": [ - { - "description": "Describes the sso app use to login into the system", - "in": "path", - "name": "ssoApp", - "required": true, + "v1MaasImage": { + "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" }, - { - "description": "Describes temporary and very short lived code sent by IDP to validate the token", - "in": "query", - "name": "code", + "state": { "type": "string" + } + } + }, + "v1MaasInstanceType": { + "type": "object", + "properties": { + "minCPU": { + "description": "Minimum CPU cores", + "type": "integer", + "format": "int32" }, - { - "description": "Describes a state to validate and associate request and response", - "in": "query", - "name": "state", + "minMemInMB": { + "description": "Minimum memory in MiB", + "type": "integer", + "format": "int32" + } + } + }, + "v1MaasMachine": { + "description": "Maas cloud VM definition", + "type": "object", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - { - "description": "Describes a error code in case the IDP is not able to validate and authenticates the user", - "in": "query", - "name": "error", + "kind": { + "description": "Deprecated. Cloud type of the machine.", "type": "string" }, - { - "description": "Describes a error in case the IDP is not able to validate and authenticates the user", - "in": "query", - "name": "error_description", - "type": "string" - } - ] - }, - "/v1/auth/user/org/forgot": { - "get": { - "description": "Returns No Content. Sends the user organization(s) information via email", - "operationId": "V1AuthUserOrgForgot", - "parameters": [ - { - "description": "Describes user's email id for sending organzation(s) details via email.", - "in": "query", - "name": "emailId", - "required": true, - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { "type": "string" } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "summary": "Returns No Content. Sends the user organization information via email", - "tags": [ - "auth" - ] - } - }, - "/v1/auth/user/password/reset": { - "post": { - "description": "Creates request to reset password via email. Password reset email will be sent to the user. Sends 204 No Content.", - "operationId": "v1PasswordResetRequest", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "properties": { - "emailId": { - "description": "Describes email if for which password reset email has to be sent", - "type": "string" + "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" + } } - }, - "required": [ - "emailId" - ], - "type": "object" + } } } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "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" + } } } } - }, - "summary": "Creates request to reset password via email", - "tags": [ - "auth" - ] + } } }, - "/v1/cloudaccounts/aws": { - "get": { - "operationId": "v1CloudAccountsAwsList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1MaasMachineConfigEntity": { + "type": "object", + "properties": { + "azs": { + "description": "for master pool, this will be the failure domains for kcp", + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cloud account items", - "schema": { - "$ref": "#/definitions/v1AwsAccounts" + }, + "instanceType": { + "type": "object", + "properties": { + "minCPU": { + "description": "Minimum CPU cores", + "type": "integer", + "format": "int32" + }, + "minMemInMB": { + "description": "Minimum memory in MiB", + "type": "integer", + "format": "int32" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of AWS cloud accounts", - "tags": [ - "cloudaccounts" - ] - }, - "post": { - "operationId": "v1CloudAccountsAwsCreate", - "parameters": [ - { - "description": "Request payload to validate AWS cloud account", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AwsAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "resourcePool": { + "type": "string" + } + } + }, + "v1MaasMachinePoolCloudConfigEntity": { + "type": "object", + "required": [ + "instanceType", + "resourcePool" + ], + "properties": { + "azs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + }, + "instanceType": { + "type": "object", + "properties": { + "minCPU": { + "description": "Minimum CPU cores", + "type": "integer", + "format": "int32" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "minMemInMB": { + "description": "Minimum memory in MiB", + "type": "integer", + "format": "int32" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "resourcePool": { + "description": "the resource pool", + "type": "string" + }, + "tags": { + "description": "Tags in maas environment", + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Creates an AWS cloud account", - "tags": [ - "cloudaccounts" - ] + } } }, - "/v1/cloudaccounts/aws/{uid}": { - "delete": { - "operationId": "v1CloudAccountsAwsDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1MaasMachinePoolConfig": { + "type": "object", + "required": [ + "instanceType" + ], + "properties": { + "additionalLabels": { + "description": "additionalLabels", + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Deletes the specified AWS account", - "tags": [ - "cloudaccounts" - ] - }, - "get": { - "operationId": "v1CloudAccountsAwsGet", - "parameters": [ - { - "default": false, - "in": "query", - "name": "assumeCredentials", - "type": "boolean" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "azs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AwsAccount" + }, + "instanceType": { + "type": "object", + "properties": { + "minCPU": { + "description": "Minimum CPU cores", + "type": "integer", + "format": "int32" + }, + "minMemInMB": { + "description": "Minimum memory in MiB", + "type": "integer", + "format": "int32" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified AWS account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "description": "AWS cloud account uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudAccountsAwsUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AwsAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "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" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "machinePoolProperties": { + "description": "Machine pool specific properties", + "type": "object", + "properties": { + "archType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] + } } - ], - "summary": "Updates the specified AWS account", - "tags": [ - "cloudaccounts" - ] - } - }, - "/v1/cloudaccounts/azure": { - "get": { - "operationId": "v1CloudAccountsAzureList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "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" } - ], - "responses": { - "200": { - "description": "An array of azure cloud account items", - "schema": { - "$ref": "#/definitions/v1AzureAccounts" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of azure cloud accounts", - "tags": [ - "cloudaccounts" - ] - }, - "post": { - "operationId": "v1CloudAccountsAzureCreate", - "parameters": [ - { - "description": "Request payload to validate Azure cloud account", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureAccount" + "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" + ] } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } + } + }, + "v1MaasMachinePoolConfigEntity": { + "type": "object", + "required": [ + "cloudConfig" + ], + "properties": { + "cloudConfig": { + "type": "object", + "required": [ + "instanceType", + "resourcePool" + ], + "properties": { + "azs": { + "type": "array", + "items": { "type": "string" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Create azure cloud account", - "tags": [ - "cloudaccounts" - ] + } } }, - "/v1/cloudaccounts/azure/{uid}": { - "delete": { - "operationId": "v1CloudAccountsAzureDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1MaasMachineSpec": { + "description": "Maas cloud VM definition spec", + "type": "object", + "properties": { + "az": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified azure account", - "tags": [ - "cloudaccounts" - ] - }, - "get": { - "operationId": "v1CloudAccountsAzureGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AzureAccount" - } - } + "hostname": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Returns the specified azure cloud account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "description": "Azure cloud account uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } + } + }, + "v1MaasMachines": { + "description": "List of MAAS machines", + "type": "object", + "required": [ + "items" ], - "put": { - "operationId": "v1CloudAccountsAzureUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureAccount" + "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" + } + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Updates the specified azure account", - "tags": [ - "cloudaccounts" - ] + } } }, - "/v1/cloudaccounts/cloudTypes/{cloudType}": { - "get": { - "operationId": "v1CloudAccountsCustomList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1MaasNic": { + "description": "Maas network interface", + "type": "object", + "properties": { + "index": { + "type": "integer", + "format": "int8" + }, + "privateIPs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cloud account by specified cloud type items", - "schema": { - "$ref": "#/definitions/v1CustomAccounts" + }, + "publicIp": { + "type": "string" + } + } + }, + "v1MaasPool": { + "description": "Maas pool", + "type": "object", + "properties": { + "description": { + "description": "Description of Maas domain", + "type": "string" + }, + "name": { + "description": "Name of Maas pool", + "type": "string" + } + } + }, + "v1MaasPools": { + "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" + } } } + } + } + }, + "v1MaasSubnet": { + "description": "Maas subnet", + "type": "object", + "properties": { + "id": { + "description": "Id of Maas subnet", + "type": "integer" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of cloud accounts by cloud type", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "description": "Custom cloud type", - "in": "path", - "name": "cloudType", - "required": true, + "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" + } + } } + } + }, + "v1MaasSubnets": { + "description": "List of Maas subnets", + "type": "object", + "required": [ + "items" ], - "post": { - "operationId": "v1CloudAccountsCustomCreate", - "parameters": [ - { - "description": "Request payload to validate Custom cloud account", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CustomAccountEntity" + "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" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1MaasTag": { + "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" + } + } + }, + "v1MaasTags": { + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an cloud account of specific cloud type", - "tags": [ - "cloudaccounts" - ] + } } }, - "/v1/cloudaccounts/cloudTypes/{cloudType}/{uid}": { - "delete": { - "operationId": "v1CloudAccountsCustomDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1MaasVlan": { + "description": "Maas vlan entity", + "type": "object", + "properties": { + "fabric": { + "description": "Fabric associated with Maas Vlan", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified account by cloud type", - "tags": [ - "cloudaccounts" - ] - }, - "get": { - "operationId": "v1CloudAccountsCustomGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1CustomAccount" - } - } + "id": { + "description": "Id of Maas Vlan", + "type": "integer" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified account by cloud type", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "description": "Custom cloud account uid", - "in": "path", - "name": "uid", - "required": true, + "name": { + "description": "Name of Maas Vlan", + "type": "string" + } + } + }, + "v1MaasZone": { + "description": "Maas zone", + "type": "object", + "properties": { + "description": { + "description": "Description of Maas domain", "type": "string" }, - { - "description": "Custom cloud type", - "in": "path", - "name": "cloudType", - "required": true, + "name": { + "description": "Name of Maas zone", "type": "string" } + } + }, + "v1MaasZones": { + "description": "List of Maas zones", + "type": "object", + "required": [ + "items" ], - "put": { - "operationId": "v1CloudAccountsCustomUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CustomAccountEntity" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "Updates the specified account by cloud type", - "tags": [ - "cloudaccounts" - ] + } } }, - "/v1/cloudaccounts/coxedge": { - "get": { - "operationId": "v1CloudAccountsCoxEdgeList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cloud account items", - "schema": { - "$ref": "#/definitions/v1CoxEdgeAccounts" + "v1MachineCertificate": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of CoxEdge cloud accounts", - "tags": [ - "cloudaccounts" - ] - }, - "post": { - "operationId": "v1CloudAccountsCoxEdgeCreate", - "parameters": [ - { - "description": "Request payload to validate CoxEdge cloud account", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CoxEdgeAccount" + "name": { + "type": "string" + } + } + }, + "v1MachineCertificates": { + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1MachineHealth": { + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an CoxEdge cloud account", - "tags": [ - "cloudaccounts" - ] + "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" + } } }, - "/v1/cloudaccounts/coxedge/{uid}": { - "delete": { - "operationId": "v1CloudAccountsCoxEdgeDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1MachineHealthCheckConfig": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified CoxEdge account", - "tags": [ - "cloudaccounts" - ] - }, - "get": { - "operationId": "v1CloudAccountsCoxEdgeGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1CoxEdgeAccount" - } - } + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified CoxEdge account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "description": "CoxEdge cloud account uid", - "in": "path", - "name": "uid", - "required": true, + "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" } - ], - "put": { - "operationId": "v1CloudAccountsCoxEdgeUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CoxEdgeAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1MachineHealthCondition": { + "description": "Machine health condition", + "type": "object", + "properties": { + "message": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified CoxEdge account", - "tags": [ - "cloudaccounts" - ] + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } } }, - "/v1/cloudaccounts/gcp": { - "get": { - "operationId": "v1CloudAccountsGcpList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1MachineMaintenance": { + "type": "object", + "properties": { + "action": { + "description": "Machine maintenance mode action", + "type": "string", + "enum": [ + "cordon", + "uncordon" + ] + } + } + }, + "v1MachineMaintenanceStatus": { + "description": "Machine maintenance status", + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "message": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1MachineManagementConfig": { + "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" + } + } + } + } + }, + "v1MachinePoolConfigEntity": { + "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" } - ], - "responses": { - "200": { - "description": "An array of gcp cloud account items", - "schema": { - "$ref": "#/definitions/v1GcpAccounts" - } + }, + "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" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Retrieves a list of gcp cloud accounts", - "tags": [ - "cloudaccounts" - ] - }, - "post": { - "operationId": "v1CloudAccountsGcpCreate", - "parameters": [ - { - "description": "Request payload to validate GCP cloud account", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpAccountEntity" + }, + "machinePoolProperties": { + "description": "Machine pool specific properties", + "type": "object", + "properties": { + "archType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } } - ], - "summary": "Creates a GCP cloud account", - "tags": [ - "cloudaccounts" - ] + }, + "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 + } } }, - "/v1/cloudaccounts/gcp/{uid}": { - "delete": { - "operationId": "v1CloudAccountsGcpDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1MachinePoolMeta": { + "type": "object", + "properties": { + "cloudType": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified GCP account", - "tags": [ - "cloudaccounts" - ] - }, - "get": { - "operationId": "v1CloudAccountsGcpGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1GcpAccount" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Returns the specified GCP cloud account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "description": "GCP cloud account uid", - "in": "path", - "name": "uid", - "required": true, + }, + "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 + } + } + }, + "v1MachinePoolProperties": { + "description": "Machine pool specific properties", + "type": "object", + "properties": { + "archType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] + } + } + }, + "v1MachinePoolRate": { + "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 + } + } } - ], - "put": { - "operationId": "v1CloudAccountsGcpUpdate", - "parameters": [ - { - "description": "Request payload to validate GCP cloud account", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpAccountEntity" + } + }, + "v1MachinePoolsMachineUids": { + "properties": { + "machinePools": { + "type": "object", + "additionalProperties": { + "properties": { + "machineUids": { + "type": "array", + "items": { + "type": "string" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + } + } + }, + "v1MachineUids": { + "properties": { + "machineUids": { + "type": "array", + "items": { + "type": "string" } + } + } + }, + "v1Macro": { + "properties": { + "name": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified GCP account", - "tags": [ - "cloudaccounts" - ] + "value": { + "type": "string" + } } }, - "/v1/cloudaccounts/maas": { - "get": { - "operationId": "v1CloudAccountsMaasList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1Macros": { + "properties": { + "macros": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + } } - ], - "responses": { - "200": { - "description": "An array of cloud account items", - "schema": { - "$ref": "#/definitions/v1MaasAccounts" + } + } + }, + "v1ManagedDisk": { + "type": "object", + "properties": { + "storageAccountType": { + "type": "string" + } + } + }, + "v1Manifest": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Retrieves a list of Maas cloud accounts", - "tags": [ - "cloudaccounts" - ] - }, - "post": { - "operationId": "v1CloudAccountsMaasCreate", - "parameters": [ - { - "description": "Request payload to validate Maas cloud account", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1MaasAccount" + } + } + }, + "v1ManifestData": { + "description": "Published manifest object", + "type": "object", + "properties": { + "content": { + "description": "Manifest content in yaml", + "type": "string" + }, + "digest": { + "description": "Manifest digest", + "type": "string" + } + } + }, + "v1ManifestEntities": { + "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" + } + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1ManifestEntity": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Creates an Maas cloud account", - "tags": [ - "cloudaccounts" - ] + } } }, - "/v1/cloudaccounts/maas/{uid}": { - "delete": { - "operationId": "v1CloudAccountsMaasDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1ManifestInputEntity": { + "description": "Manifest request payload", + "properties": { + "content": { + "description": "Manifest content", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified Maas account", - "tags": [ - "cloudaccounts" - ] - }, - "get": { - "operationId": "v1CloudAccountsMaasGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "name": { + "description": "Manifest name", + "type": "string" + } + } + }, + "v1ManifestPublishedSpec": { + "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" + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1MaasAccount" + } + } + }, + "v1ManifestRefInputEntities": { + "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" + } } } + } + } + }, + "v1ManifestRefInputEntity": { + "description": "Manifest request payload", + "properties": { + "content": { + "description": "Manifest content in yaml", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Maas account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "description": "Maas cloud account uid", - "in": "path", - "name": "uid", - "required": true, + "uid": { + "description": "Manifest uid", "type": "string" } + } + }, + "v1ManifestRefUpdateEntity": { + "description": "Manifest update request payload", + "required": [ + "name" ], - "patch": { - "operationId": "v1CloudAccountsMaasPatch", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1CloudAccountsPatch" + "properties": { + "content": { + "description": "Manifest content in yaml", + "type": "string" + }, + "name": { + "description": "Manifest name", + "type": "string" + }, + "uid": { + "description": "Manifest uid", + "type": "string" + } + } + }, + "v1ManifestSpec": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Patches the specified CloudAccount Maas", - "tags": [ - "cloudaccounts" - ] - }, - "put": { - "operationId": "v1CloudAccountsMaasUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1MaasAccount" + "published": { + "description": "Published manifest object", + "type": "object", + "properties": { + "content": { + "description": "Manifest content in yaml", + "type": "string" + }, + "digest": { + "description": "Manifest digest", + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } + } + } + }, + "v1ManifestSummary": { + "description": "Manifest object", + "properties": { + "content": { + "description": "Manifest content in yaml", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified Maas account", - "tags": [ - "cloudaccounts" - ] + "name": { + "description": "Manifest name", + "type": "string" + }, + "uid": { + "description": "Manifest uid", + "type": "string" + } } }, - "/v1/cloudaccounts/maas/{uid}/properties/azs": { - "get": { - "operationId": "v1MaasAccountsUidAzs", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1MaasZones" - } - } + "v1Memory": { + "type": "object", + "properties": { + "sizeInMB": { + "description": "memory size in bytes", + "type": "integer", + "format": "int64" + } + } + }, + "v1MetricAggregation": { + "description": "Aggregation values", + "type": "object", + "properties": { + "avg": { + "type": "number", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the maas azs for a given account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "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 + } + } + }, + "v1MetricMetadata": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { "type": "string" } - ] + } }, - "/v1/cloudaccounts/maas/{uid}/properties/domains": { - "get": { - "operationId": "v1MaasAccountsUidDomains", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1MaasDomains" + "v1MetricPoint": { + "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 + } + } + }, + "v1MetricTimeSeries": { + "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" + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + } + } + }, + "v1MetricTimeSeriesList": { + "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" + } + } + } + } + } } - ], - "summary": "Get the maas domains for a given account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/cloudaccounts/maas/{uid}/properties/resourcePools": { - "get": { - "operationId": "v1MaasAccountsUidPools", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1Metrics": { + "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 + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1MaasPools" + }, + "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 + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the maas pools for a given account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "unit": { "type": "string" } - ] + } }, - "/v1/cloudaccounts/maas/{uid}/properties/subnets": { - "get": { - "operationId": "v1MaasAccountsUidSubnets", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1MaasSubnets" + "v1MetricsList": { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Get the maas subnets for a given account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/cloudaccounts/maas/{uid}/properties/tags": { - "get": { - "operationId": "v1MaasAccountsUidTags", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1MaasTags" - } - } + "v1MfaAuthenticationExtensions": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "v1MfaAuthenticatorSelection": { + "type": "object", + "properties": { + "authenticatorAttachment": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the maas tags for a given account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "requireResidentKey": { + "type": "boolean" + }, + "residentKey": { + "type": "string" + }, + "userVerification": { "type": "string" } + } + }, + "v1MfaConveyancePreference": { + "type": "string", + "enum": [ + "none", + "indirect", + "direct", + "enterprise" ] }, - "/v1/cloudaccounts/openstack": { - "get": { - "operationId": "v1CloudAccountsOpenStackList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cloud account items", - "schema": { - "$ref": "#/definitions/v1OpenStackAccounts" - } - } + "v1MfaCredentialCreationRequest": { + "type": "object", + "properties": { + "_type": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of OpenStack cloud accounts", - "tags": [ - "cloudaccounts" - ] - }, - "post": { - "operationId": "v1CloudAccountsOpenStackCreate", - "parameters": [ - { - "description": "Request payload to validate OpenStack cloud account", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OpenStackAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "authenticatorAttachment": { + "type": "string" + }, + "clientExtensionResults": { + "type": "object", + "additionalProperties": { + "type": "object" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "deviceName": { + "type": "string" + }, + "id": { + "type": "string" + }, + "rawId": { + "type": "string", + "format": "url-encoded-base64" + }, + "response": { + "type": "object", + "properties": { + "attestationObject": { + "type": "string", + "format": "url-encoded-base64" + }, + "clientDataJSON": { + "type": "string", + "format": "url-encoded-base64" + }, + "transports": { + "type": "array", + "items": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "transports": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Creates a OpenStack cloud account", - "tags": [ - "cloudaccounts" - ] + } } }, - "/v1/cloudaccounts/openstack/{uid}": { - "delete": { - "operationId": "v1CloudAccountsOpenStackDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1MfaCredentialDescriptor": { + "type": "object", + "properties": { + "attestationType": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified OpenStack account", - "tags": [ - "cloudaccounts" - ] - }, - "get": { - "operationId": "v1CloudAccountsOpenStackGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "id": { + "type": "string", + "format": "url-encoded-base64" + }, + "transports": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1OpenStackAccount" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified OpenStack account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "description": "OpenStack cloud account uid", - "in": "path", - "name": "uid", - "required": true, + "type": { "type": "string" } - ], - "put": { - "operationId": "v1CloudAccountsOpenStackUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OpenStackAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified OpenStack account", - "tags": [ - "cloudaccounts" - ] } }, - "/v1/cloudaccounts/openstack/{uid}/properties/azs": { - "get": { - "operationId": "v1OpenstackAccountsUidAzs", - "parameters": [ - { - "in": "query", - "name": "region", - "type": "string" - }, - { - "in": "query", - "name": "project", - "type": "string" - }, - { - "in": "query", - "name": "domain", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackAzs" - } - } + "v1MfaCredentialParameter": { + "type": "object", + "properties": { + "alg": { + "type": "integer" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the openstack azs for a given account and region", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "type": { "type": "string" } - ] + } }, - "/v1/cloudaccounts/openstack/{uid}/properties/flavors": { - "get": { - "operationId": "v1OpenstackAccountsUidFlavors", - "parameters": [ - { - "in": "query", - "name": "project", - "type": "string" - }, - { - "in": "query", - "name": "region", - "type": "string" - }, - { - "in": "query", - "name": "domain", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackFlavors" - } - } + "v1MfaDeviceMeta": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the openstack keypairs for a given account and scope", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "deviceName": { "type": "string" } - ] + } }, - "/v1/cloudaccounts/openstack/{uid}/properties/keypairs": { - "get": { - "operationId": "v1OpenstackAccountsUidKeypairs", - "parameters": [ - { - "in": "query", - "name": "project", - "type": "string" - }, - { - "in": "query", - "name": "region", - "type": "string" - }, - { - "in": "query", - "name": "domain", - "type": "string" + "v1MfaDeviceName": { + "type": "object", + "properties": { + "deviceName": { + "type": "string" + } + } + }, + "v1MfaDevices": { + "type": "array", + "items": { + "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" }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "deviceName": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackKeypairs" + } + } + }, + "v1MfaLoginStart": { + "type": "object", + "properties": { + "publicKey": { + "type": "object", + "properties": { + "allowCredentials": { + "type": "array", + "items": { + "type": "object", + "properties": { + "attestationType": { + "type": "string" + }, + "id": { + "type": "string", + "format": "url-encoded-base64" + }, + "transports": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "string" + } + } + } + }, + "challenge": { + "type": "string", + "format": "url-encoded-base64" + }, + "extensions": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "rpId": { + "type": "string" + }, + "timeout": { + "type": "integer" + }, + "userVerification": { + "type": "string" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the openstack keypairs for a given account and scope", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/cloudaccounts/openstack/{uid}/properties/networks": { - "get": { - "operationId": "v1OpenstackAccountsUidNetworks", - "parameters": [ - { - "in": "query", - "name": "project", - "type": "string" - }, - { - "in": "query", - "name": "region", - "type": "string" - }, - { - "in": "query", - "name": "domain", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1MfaPublicKeyCredentialCreationOptions": { + "type": "object", + "properties": { + "attestation": { + "type": "string", + "enum": [ + "none", + "indirect", + "direct", + "enterprise" + ] + }, + "authenticatorSelection": { + "type": "object", + "properties": { + "authenticatorAttachment": { + "type": "string" + }, + "requireResidentKey": { + "type": "boolean" + }, + "residentKey": { + "type": "string" + }, + "userVerification": { + "type": "string" + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackNetworks" + }, + "challenge": { + "type": "string", + "format": "url-encoded-base64" + }, + "excludeCredentials": { + "type": "array", + "items": { + "type": "object", + "properties": { + "attestationType": { + "type": "string" + }, + "id": { + "type": "string", + "format": "url-encoded-base64" + }, + "transports": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "extensions": { + "type": "object", + "additionalProperties": { + "type": "object" } - ], - "summary": "Get the openstack networks for a given account and scope", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ] - }, - "/v1/cloudaccounts/openstack/{uid}/properties/projects": { - "get": { - "operationId": "v1OpenstackAccountsUidProjects", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + }, + "pubKeyCredParams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "alg": { + "type": "integer" + }, + "type": { + "type": "string" + } + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackProjects" + }, + "rp": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "timeout": { + "type": "integer" + }, + "user": { + "type": "object", + "properties": { + "displayName": { + "type": "string" + }, + "id": { + "type": "object" + }, + "name": { + "type": "string" + } } - ], - "summary": "Get the openstack projects for a given account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/cloudaccounts/openstack/{uid}/properties/regions": { - "get": { - "operationId": "v1OpenstackAccountsUidRegions", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackRegions" + "v1MfaPublicKeyCredentialRequestOptions": { + "type": "object", + "properties": { + "allowCredentials": { + "type": "array", + "items": { + "type": "object", + "properties": { + "attestationType": { + "type": "string" + }, + "id": { + "type": "string", + "format": "url-encoded-base64" + }, + "transports": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "challenge": { + "type": "string", + "format": "url-encoded-base64" + }, + "extensions": { + "type": "object", + "additionalProperties": { + "type": "object" } - ], - "summary": "Get the openstack regions for a given account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + }, + "rpId": { + "type": "string" + }, + "timeout": { + "type": "integer" + }, + "userVerification": { "type": "string" } - ] + } }, - "/v1/cloudaccounts/summary": { - "get": { - "operationId": "v1CloudAccountsListSummary", - "parameters": [ - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cloud account summary items", - "schema": { - "$ref": "#/definitions/v1CloudAccountsSummary" + "v1MfaRegistrationStart": { + "type": "object", + "properties": { + "publicKey": { + "type": "object", + "properties": { + "attestation": { + "type": "string", + "enum": [ + "none", + "indirect", + "direct", + "enterprise" + ] + }, + "authenticatorSelection": { + "type": "object", + "properties": { + "authenticatorAttachment": { + "type": "string" + }, + "requireResidentKey": { + "type": "boolean" + }, + "residentKey": { + "type": "string" + }, + "userVerification": { + "type": "string" + } + } + }, + "challenge": { + "type": "string", + "format": "url-encoded-base64" + }, + "excludeCredentials": { + "type": "array", + "items": { + "type": "object", + "properties": { + "attestationType": { + "type": "string" + }, + "id": { + "type": "string", + "format": "url-encoded-base64" + }, + "transports": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "string" + } + } + } + }, + "extensions": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "pubKeyCredParams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "alg": { + "type": "integer" + }, + "type": { + "type": "string" + } + } + } + }, + "rp": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "timeout": { + "type": "integer" + }, + "user": { + "type": "object", + "properties": { + "displayName": { + "type": "string" + }, + "id": { + "type": "object" + }, + "name": { + "type": "string" + } + } } } + } + } + }, + "v1MfaRelyingPartyEntity": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of cloud accounts summary", - "tags": [ - "cloudaccounts" - ] + "name": { + "type": "string" + } } }, - "/v1/cloudaccounts/tencent": { - "get": { - "operationId": "v1CloudAccountsTencentList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cloud account items", - "schema": { - "$ref": "#/definitions/v1TencentAccounts" + "v1MfaUserEntity": { + "type": "object", + "properties": { + "displayName": { + "type": "string" + }, + "id": { + "type": "object" + }, + "name": { + "type": "string" + } + } + }, + "v1MgmtApp": { + "description": "Spectro application management data", + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Tencent cloud accounts", - "tags": [ - "cloudaccounts" - ] - }, - "post": { - "operationId": "v1CloudAccountsTencentCreate", - "parameters": [ - { - "description": "Request payload to validate Tencent cloud account", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TencentAccount" + "spec": { + "description": "spectro application management specifications", + "properties": { + "appEnv": { + "type": "string" + }, + "cloudType": { + "type": "string" + }, + "installedVersion": { + "type": "string" + }, + "latestVersion": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "status": { + "description": "spectro application management status", + "properties": { + "appVersions": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro application management app version information", + "properties": { + "intermediateVersions": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro application management release version information", + "properties": { + "date": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "releaseNotes": { + "type": "array", + "items": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "version": { + "type": "string" + } + } + } + }, + "latestVerson": { + "description": "spectro application management release version information", + "properties": { + "date": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "releaseNotes": { + "type": "array", + "items": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "version": { + "type": "string" + } + } + } + } + } + }, + "isFailed": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "messageLogs": { + "type": "array", + "items": { "type": "string" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "state": { + "type": "string" + }, + "upgradeHistory": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro management upgrade logs", + "properties": { + "upgradeTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "version": { + "type": "string" + } + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an Tencent cloud account", - "tags": [ - "cloudaccounts" - ] + } } }, - "/v1/cloudaccounts/tencent/{uid}": { - "delete": { - "operationId": "v1CloudAccountsTencentDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1MgmtAppContainersState": { + "type": "object", + "properties": { + "running": { + "type": "object", + "properties": { + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified Tencent account", - "tags": [ - "cloudaccounts" - ] - }, - "get": { - "operationId": "v1CloudAccountsTencentGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1TencentAccount" + "terminated": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer" + }, + "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" + }, + "signal": { + "type": "integer" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Tencent account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "description": "Tencent cloud account uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudAccountsTencentUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TencentAccount" + "waiting": { + "type": "object", + "properties": { + "reason": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } + } + } + }, + "v1MgmtAppContainersStatus": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "numberOfRestarts": { + "type": "integer" + }, + "state": { + "type": "object", + "properties": { + "running": { + "type": "object", + "properties": { + "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" + } + } + }, + "terminated": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer" + }, + "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" + }, + "signal": { + "type": "integer" + }, + "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" + } + } + }, + "waiting": { + "type": "object", + "properties": { + "reason": { + "type": "string" + } + } + } } - ], - "summary": "Updates the specified Tencent account", - "tags": [ - "cloudaccounts" - ] + } } }, - "/v1/cloudaccounts/vsphere": { - "get": { - "operationId": "v1CloudAccountsVsphereList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1MgmtAppCronJobStatus": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "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" + }, + "lastSuccessfulRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "messages": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cloud account items", - "schema": { - "$ref": "#/definitions/v1VsphereAccounts" + }, + "name": { + "type": "string" + }, + "pods": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "containers": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "numberOfRestarts": { + "type": "integer" + }, + "state": { + "type": "object", + "properties": { + "running": { + "type": "object", + "properties": { + "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" + } + } + }, + "terminated": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer" + }, + "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" + }, + "signal": { + "type": "integer" + }, + "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" + } + } + }, + "waiting": { + "type": "object", + "properties": { + "reason": { + "type": "string" + } + } + } + } + } + } + } + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "phase": { + "type": "string" + }, + "pvcs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "claimName": { + "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" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + } + } + } + }, + "reason": { + "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" + } } } + } + } + }, + "v1MgmtAppEnvHealthStatus": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of vSphere cloud accounts", - "tags": [ - "cloudaccounts" - ] - }, - "post": { - "operationId": "v1CloudAccountsVsphereCreate", - "parameters": [ - { - "description": "Request payload to validate VSphere cloud account", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VsphereAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "messages": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "namespaces": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "cronJobs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "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" + }, + "lastSuccessfulRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "pods": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "containers": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "numberOfRestarts": { + "type": "integer" + }, + "state": { + "type": "object", + "properties": { + "running": { + "type": "object", + "properties": { + "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" + } + } + }, + "terminated": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer" + }, + "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" + }, + "signal": { + "type": "integer" + }, + "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" + } + } + }, + "waiting": { + "type": "object", + "properties": { + "reason": { + "type": "string" + } + } + } + } + } + } + } + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "phase": { + "type": "string" + }, + "pvcs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "claimName": { + "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" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + } + } + } + }, + "reason": { + "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" + } + } + } + } + } + } + }, + "deployments": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "availableReplicas": { + "type": "integer" + }, + "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" + }, + "desiredReplicaCount": { + "type": "integer" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "pods": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "containers": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "numberOfRestarts": { + "type": "integer" + }, + "state": { + "type": "object", + "properties": { + "running": { + "type": "object", + "properties": { + "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" + } + } + }, + "terminated": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer" + }, + "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" + }, + "signal": { + "type": "integer" + }, + "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" + } + } + }, + "waiting": { + "type": "object", + "properties": { + "reason": { + "type": "string" + } + } + } + } + } + } + } + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "phase": { + "type": "string" + }, + "pvcs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "claimName": { + "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" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + } + } + } + }, + "reason": { + "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" + } + } + } + } + } + } + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "statefulSets": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "availableReplicas": { + "type": "integer" + }, + "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" + }, + "desiredReplicaCount": { + "type": "integer" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "pods": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "containers": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "numberOfRestarts": { + "type": "integer" + }, + "state": { + "type": "object", + "properties": { + "running": { + "type": "object", + "properties": { + "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" + } + } + }, + "terminated": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer" + }, + "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" + }, + "signal": { + "type": "integer" + }, + "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" + } + } + }, + "waiting": { + "type": "object", + "properties": { + "reason": { + "type": "string" + } + } + } + } + } + } + } + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "phase": { + "type": "string" + }, + "pvcs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "claimName": { + "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" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + } + } + } + }, + "reason": { + "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" + } + } + } + } + } + } } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } + } + } + }, + "v1MgmtAppHealth": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "podHealth": { + "type": "array", + "items": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean" + }, + "name": { + "type": "string" + } + } } - ], - "summary": "Creates a vSphere cloud account", - "tags": [ - "cloudaccounts" - ] + } } }, - "/v1/cloudaccounts/vsphere/{uid}": { - "delete": { - "operationId": "v1CloudAccountsVsphereDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1MgmtAppNameSpaceStatus": { + "type": "object", + "properties": { + "cronJobs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "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" + }, + "lastSuccessfulRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "pods": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "containers": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "numberOfRestarts": { + "type": "integer" + }, + "state": { + "type": "object", + "properties": { + "running": { + "type": "object", + "properties": { + "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" + } + } + }, + "terminated": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer" + }, + "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" + }, + "signal": { + "type": "integer" + }, + "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" + } + } + }, + "waiting": { + "type": "object", + "properties": { + "reason": { + "type": "string" + } + } + } + } + } + } + } + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "phase": { + "type": "string" + }, + "pvcs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "claimName": { + "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" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + } + } + } + }, + "reason": { + "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" + } + } + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified vSphere account", - "tags": [ - "cloudaccounts" - ] - }, - "get": { - "operationId": "v1CloudAccountsVsphereGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1VsphereAccount" + "deployments": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "availableReplicas": { + "type": "integer" + }, + "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" + }, + "desiredReplicaCount": { + "type": "integer" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "pods": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "containers": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "numberOfRestarts": { + "type": "integer" + }, + "state": { + "type": "object", + "properties": { + "running": { + "type": "object", + "properties": { + "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" + } + } + }, + "terminated": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer" + }, + "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" + }, + "signal": { + "type": "integer" + }, + "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" + } + } + }, + "waiting": { + "type": "object", + "properties": { + "reason": { + "type": "string" + } + } + } + } + } + } + } + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "phase": { + "type": "string" + }, + "pvcs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "claimName": { + "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" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + } + } + } + }, + "reason": { + "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" + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified vSphere account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "description": "VSphere cloud account uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudAccountsVsphereUpdate", - "parameters": [ - { - "description": "Request payload to validate VSphere cloud account", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VsphereAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "statefulSets": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "availableReplicas": { + "type": "integer" + }, + "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" + }, + "desiredReplicaCount": { + "type": "integer" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "pods": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "containers": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "numberOfRestarts": { + "type": "integer" + }, + "state": { + "type": "object", + "properties": { + "running": { + "type": "object", + "properties": { + "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" + } + } + }, + "terminated": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer" + }, + "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" + }, + "signal": { + "type": "integer" + }, + "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" + } + } + }, + "waiting": { + "type": "object", + "properties": { + "reason": { + "type": "string" + } + } + } + } + } + } + } + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "phase": { + "type": "string" + }, + "pvcs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "claimName": { + "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" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + } + } + } + }, + "reason": { + "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" + } + } + } + } + } + } + } + } + }, + "v1MgmtAppObjectStatus": { + "type": "object", + "properties": { + "availableReplicas": { + "type": "integer" + }, + "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" + }, + "desiredReplicaCount": { + "type": "integer" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "name": { + "type": "string" + }, + "pods": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "containers": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "numberOfRestarts": { + "type": "integer" + }, + "state": { + "type": "object", + "properties": { + "running": { + "type": "object", + "properties": { + "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" + } + } + }, + "terminated": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer" + }, + "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" + }, + "signal": { + "type": "integer" + }, + "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" + } + } + }, + "waiting": { + "type": "object", + "properties": { + "reason": { + "type": "string" + } + } + } + } + } + } + } + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "phase": { + "type": "string" + }, + "pvcs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "claimName": { + "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" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + } + } + } + }, + "reason": { + "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" + } + } } - ], - "summary": "Updates the specified VSphere account", - "tags": [ - "cloudaccounts" - ] + } } }, - "/v1/cloudaccounts/vsphere/{uid}/properties/computecluster/resources": { - "get": { - "operationId": "v1VsphereAccountsUidClusterRes", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VsphereComputeClusterResources" + "v1MgmtAppPodsStatus": { + "type": "object", + "properties": { + "containers": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "numberOfRestarts": { + "type": "integer" + }, + "state": { + "type": "object", + "properties": { + "running": { + "type": "object", + "properties": { + "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" + } + } + }, + "terminated": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer" + }, + "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" + }, + "signal": { + "type": "integer" + }, + "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" + } + } + }, + "waiting": { + "type": "object", + "properties": { + "reason": { + "type": "string" + } + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Get the vSphere computecluster resources for the given overlord account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" }, - { - "in": "query", - "name": "datacenter", - "required": true, + "name": { "type": "string" }, - { - "in": "query", - "name": "computecluster", - "required": true, + "phase": { "type": "string" }, - { - "in": "query", - "name": "useQualifiedNetworkName", - "type": "boolean" - } - ] - }, - "/v1/cloudaccounts/vsphere/{uid}/properties/datacenters": { - "get": { - "operationId": "v1VsphereAccountsUidDatacenters", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VsphereDatacenters" + "pvcs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "claimName": { + "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" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the vSphere datacenters & datacluster for the given overlord account", - "tags": [ - "cloudaccounts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "reason": { "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" } - ] + } }, - "/v1/cloudaccounts/{uid}/geoLocation": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1MgmtAppPvcStatus": { + "type": "object", + "properties": { + "claimName": { "type": "string" - } - ], - "patch": { - "operationId": "v1AccountsGeolocationPatch", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1GeolocationLatlong" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the geolocation annotation", - "tags": [ - "cloudaccounts" - ] - } - }, - "/v1/cloudconfigs/aks/{configUid}": { - "get": { - "operationId": "v1CloudConfigsAksGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AzureCloudConfig" - } - } + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified AKS cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { "type": "string" } - ] + } }, - "/v1/cloudconfigs/aks/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1MgmtAppSpec": { + "description": "spectro application management specifications", + "properties": { + "appEnv": { + "type": "string" + }, + "cloudType": { + "type": "string" + }, + "installedVersion": { + "type": "string" + }, + "latestVersion": { + "type": "string" + }, + "spectroClusterUid": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsAksUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureCloudClusterConfigEntity" + } + }, + "v1MgmtAppStatus": { + "description": "spectro application management status", + "properties": { + "appVersions": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro application management app version information", + "properties": { + "intermediateVersions": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro application management release version information", + "properties": { + "date": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "releaseNotes": { + "type": "array", + "items": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "version": { + "type": "string" + } + } + } + }, + "latestVerson": { + "description": "spectro application management release version information", + "properties": { + "date": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "releaseNotes": { + "type": "array", + "items": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "version": { + "type": "string" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/aks/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "isFailed": { + "type": "boolean", + "x-omitempty": false + }, + "message": { "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsAksMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "messageLogs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "state": { + "type": "string" + }, + "upgradeHistory": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro management upgrade logs", + "properties": { + "upgradeTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "version": { "type": "string" } + } + } + } + } + }, + "v1MgmtAppUpgrade": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "currentVersion": { + "type": "string", + "x-omitempty": false }, - "schema": { - "$ref": "#/definitions/v1Uid" + "previousVersion": { + "type": "string", + "x-omitempty": false + }, + "toBeUpgradedVersion": { + "type": "string", + "x-omitempty": false } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "type": "object", + "properties": { + "action": { + "type": "string", + "x-omitempty": false + }, + "states": { + "type": "object", + "properties": { + "imageUpdate": { + "type": "object", + "properties": { + "description": { + "type": "string", + "x-omitempty": false + }, + "details": { + "type": "array", + "items": { + "type": "string" + }, + "x-omitempty": false + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string", + "x-omitempty": false + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "spectroClusterUpdate": { + "type": "object", + "properties": { + "description": { + "type": "string", + "x-omitempty": false + }, + "details": { + "type": "array", + "items": { + "type": "string" + }, + "x-omitempty": false + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string", + "x-omitempty": false + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "spectroServiceResume": { + "type": "object", + "properties": { + "description": { + "type": "string", + "x-omitempty": false + }, + "details": { + "type": "array", + "items": { + "type": "string" + }, + "x-omitempty": false + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string", + "x-omitempty": false + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "spectroVersionConfigMapUpdate": { + "type": "object", + "properties": { + "description": { + "type": "string", + "x-omitempty": false + }, + "details": { + "type": "array", + "items": { + "type": "string" + }, + "x-omitempty": false + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string", + "x-omitempty": false + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "spectroVersionServiceSuspend": { + "type": "object", + "properties": { + "description": { + "type": "string", + "x-omitempty": false + }, + "details": { + "type": "array", + "items": { + "type": "string" + }, + "x-omitempty": false + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string", + "x-omitempty": false + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } + } + }, + "upgradeStatus": { + "type": "string", + "x-omitempty": false + }, + "versionHistory": { + "type": "array", + "items": { + "type": "string" + }, + "x-omitempty": false + } } - ], - "summary": "Creates an AKS cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsAksMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "v1MgmtAppVersion": { + "description": "spectro application management version", + "properties": { + "version": { + "type": "object", + "properties": { + "appEnv": { + "type": "string" + }, + "cloudType": { + "type": "string" + }, + "installedVersion": { + "type": "string" + }, + "latestVersion": { + "type": "string" + } } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + } + } + }, + "v1MgmtBackupSpec": { + "description": "backup spec", + "type": "object", + "properties": { + "backupUid": { + "type": "string" + }, + "mode": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "modeUid": { "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsAksMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified AKS cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "proxy": { + "description": "proxy information if applicable", + "type": "string" + }, + "scheduleTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "scheduleType": { + "type": "string", + "default": "Automated", + "enum": [ + "OnDemand", + "Automated" + ] + } } }, - "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsAksPoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", + "v1MgmtDbCollectionIndexInfo": { + "description": "Database info", + "type": "object", + "properties": { + "key": { + "additionalProperties": { "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of AKS machine items", - "schema": { - "$ref": "#/definitions/v1AzureMachines" - } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of AKS machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "name": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "size": { + "type": "integer" + }, + "version": { "type": "string" } - ], - "post": { - "operationId": "v1CloudConfigsAksPoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1MgmtDbCollectionInfo": { + "description": "Database info", + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "indexes": { + "type": "array", + "items": { + "description": "Database info", + "type": "object", + "properties": { + "key": { + "additionalProperties": { + "type": "integer" + } + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "version": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "isCapped": { + "type": "boolean" + }, + "isReadOnly": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "storageSize": { + "type": "integer" + }, + "totalIndexSize": { + "type": "integer" + } } }, - "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsAksPoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1MgmtDbHealth": { + "type": "object", + "properties": { + "databases": { + "type": "array", + "items": { + "description": "Database info", + "type": "object", + "properties": { + "collections": { + "type": "array", + "items": { + "description": "Database info", + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "indexes": { + "type": "array", + "items": { + "description": "Database info", + "type": "object", + "properties": { + "key": { + "additionalProperties": { + "type": "integer" + } + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "version": { + "type": "string" + } + } + } + }, + "isCapped": { + "type": "boolean" + }, + "isReadOnly": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "storageSize": { + "type": "integer" + }, + "totalIndexSize": { + "type": "integer" + } + } + } + }, + "isEmpty": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "totalIndexSize": { + "type": "integer" + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified Azure machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsAksPoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AzureMachine" + "totalIndexSize": { + "type": "integer" + }, + "totalSize": { + "type": "integer" + } + } + }, + "v1MgmtDbInfo": { + "description": "Database info", + "type": "object", + "properties": { + "collections": { + "type": "array", + "items": { + "description": "Database info", + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "indexes": { + "type": "array", + "items": { + "description": "Database info", + "type": "object", + "properties": { + "key": { + "additionalProperties": { + "type": "integer" + } + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "version": { + "type": "string" + } + } + } + }, + "isCapped": { + "type": "boolean" + }, + "isReadOnly": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "storageSize": { + "type": "integer" + }, + "totalIndexSize": { + "type": "integer" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified AKS machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" + "isEmpty": { + "type": "boolean" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "name": { "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, - "type": "string" + "size": { + "type": "integer" + }, + "totalIndexSize": { + "type": "integer" } - ], - "put": { - "operationId": "v1CloudConfigsAksPoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureMachine" + } + }, + "v1MgmtDeleteBackupFtpEntity": { + "description": "delete backups based on retention period", + "type": "object", + "properties": { + "fileTransferConfig": { + "description": "file transfer details", + "type": "object", + "properties": { + "backupSpec": { + "description": "backup spec", + "type": "object", + "properties": { + "backupUid": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "modeUid": { + "type": "string" + }, + "proxy": { + "description": "proxy information if applicable", + "type": "string" + }, + "scheduleTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "scheduleType": { + "type": "string", + "default": "Automated", + "enum": [ + "OnDemand", + "Automated" + ] + } + } + }, + "ftp": { + "description": "ftp config", + "type": "object", + "properties": { + "directory": { + "type": "string" + }, + "password": { + "type": "string" + }, + "server": { + "type": "string" + }, + "username": { + "type": "string" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to the cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "retentionPeriod": { + "type": "integer" + } } }, - "/v1/cloudconfigs/aws/{configUid}": { - "get": { - "operationId": "v1CloudConfigsAwsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AwsCloudConfig" + "v1MgmtDeleteBackupS3Entity": { + "description": "delete backups based on retention period", + "type": "object", + "properties": { + "fileTransferConfig": { + "description": "file transfer details", + "type": "object", + "properties": { + "backupSpec": { + "description": "backup spec", + "type": "object", + "properties": { + "backupUid": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "modeUid": { + "type": "string" + }, + "proxy": { + "description": "proxy information if applicable", + "type": "string" + }, + "scheduleTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "scheduleType": { + "type": "string", + "default": "Automated", + "enum": [ + "OnDemand", + "Automated" + ] + } + } + }, + "s3": { + "description": "s3 config", + "type": "object", + "properties": { + "accessKey": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "directory": { + "type": "string" + }, + "region": { + "type": "string" + }, + "secretKey": { + "type": "string" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified AWS cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" + "retentionPeriod": { + "type": "integer" } - ] + } }, - "/v1/cloudconfigs/aws/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1MgmtErrLog": { + "type": "object", + "properties": { + "ref": { "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsAwsUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AwsCloudClusterConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "type": "object", + "properties": { + "causes": { + "type": "array", + "items": { + "type": "string" + } + }, + "data": { + "type": "string" + }, + "debug": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "errCode": { + "type": "string" + }, + "errMsg": { + "type": "string" + }, + "stackTraces": { + "type": "array", + "items": { + "type": "string" + } + }, + "userCtx": { + "type": "object", + "properties": { + "projectUid": { + "type": "string" + }, + "serviceResUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + }, + "userUid": { + "type": "string" + } + } + } } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/aws/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsAwsMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AwsMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1MgmtErrLogs": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "ref": { "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "spec": { + "type": "object", + "properties": { + "causes": { + "type": "array", + "items": { + "type": "string" + } + }, + "data": { + "type": "string" + }, + "debug": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "errCode": { + "type": "string" + }, + "errMsg": { "type": "string" + }, + "stackTraces": { + "type": "array", + "items": { + "type": "string" + } + }, + "userCtx": { + "type": "object", + "properties": { + "projectUid": { + "type": "string" + }, + "serviceResUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + }, + "userUid": { + "type": "string" + } + } } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an AWS cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsAwsMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1MgmtErrSpec": { + "type": "object", + "properties": { + "causes": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "data": { + "type": "string" + }, + "debug": { + "type": "object", + "additionalProperties": { + "type": "object" } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + }, + "errCode": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "errMsg": { "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsAwsMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AwsMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "stackTraces": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "userCtx": { + "type": "object", + "properties": { + "projectUid": { + "type": "string" + }, + "serviceResUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + }, + "userUid": { + "type": "string" + } } - ], - "summary": "Updates the specified AWS cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsAwsPoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1MgmtFileTransferFtpEntity": { + "description": "file transfer details", + "type": "object", + "properties": { + "backupSpec": { + "description": "backup spec", + "type": "object", + "properties": { + "backupUid": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "modeUid": { + "type": "string" + }, + "proxy": { + "description": "proxy information if applicable", + "type": "string" + }, + "scheduleTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "scheduleType": { + "type": "string", + "default": "Automated", + "enum": [ + "OnDemand", + "Automated" + ] + } } - ], - "responses": { - "200": { - "description": "An array of AWS machine items", - "schema": { - "$ref": "#/definitions/v1AwsMachines" + }, + "ftp": { + "description": "ftp config", + "type": "object", + "properties": { + "directory": { + "type": "string" + }, + "password": { + "type": "string" + }, + "server": { + "type": "string" + }, + "username": { + "type": "string" + } + } + } + } + }, + "v1MgmtFileTransferS3Entity": { + "description": "file transfer details", + "type": "object", + "properties": { + "backupSpec": { + "description": "backup spec", + "type": "object", + "properties": { + "backupUid": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "modeUid": { + "type": "string" + }, + "proxy": { + "description": "proxy information if applicable", + "type": "string" + }, + "scheduleTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "scheduleType": { + "type": "string", + "default": "Automated", + "enum": [ + "OnDemand", + "Automated" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "s3": { + "description": "s3 config", + "type": "object", + "properties": { + "accessKey": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "directory": { + "type": "string" + }, + "region": { + "type": "string" + }, + "secretKey": { + "type": "string" + } } - ], - "summary": "Retrieves a list of AWS machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + } + } + }, + "v1MgmtFtpConfig": { + "description": "ftp config", + "type": "object", + "properties": { + "directory": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "password": { + "type": "string" + }, + "server": { + "type": "string" + }, + "username": { "type": "string" } + } + }, + "v1MgmtHash": { + "type": "object", + "required": [ + "hash" ], - "post": { - "operationId": "v1CloudConfigsAwsPoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AwsMachine" + "properties": { + "hash": { + "type": "string" + } + } + }, + "v1MgmtListBackupFtpEntity": { + "description": "list ftp backups", + "type": "object", + "properties": { + "fileTransferConfig": { + "description": "file transfer details", + "type": "object", + "properties": { + "backupSpec": { + "description": "backup spec", + "type": "object", + "properties": { + "backupUid": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "modeUid": { + "type": "string" + }, + "proxy": { + "description": "proxy information if applicable", + "type": "string" + }, + "scheduleTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "scheduleType": { + "type": "string", + "default": "Automated", + "enum": [ + "OnDemand", + "Automated" + ] + } + } + }, + "ftp": { + "description": "ftp config", + "type": "object", + "properties": { + "directory": { + "type": "string" + }, + "password": { + "type": "string" + }, + "server": { + "type": "string" + }, + "username": { + "type": "string" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + } + } + }, + "v1MgmtListBackupS3Entity": { + "description": "list s3 backups", + "type": "object", + "properties": { + "fileTransferConfig": { + "description": "file transfer details", + "type": "object", + "properties": { + "backupSpec": { + "description": "backup spec", + "type": "object", + "properties": { + "backupUid": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "modeUid": { + "type": "string" + }, + "proxy": { + "description": "proxy information if applicable", + "type": "string" + }, + "scheduleTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "scheduleType": { + "type": "string", + "default": "Automated", + "enum": [ + "OnDemand", + "Automated" + ] + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "s3": { + "description": "s3 config", + "type": "object", + "properties": { + "accessKey": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "directory": { + "type": "string" + }, + "region": { + "type": "string" + }, + "secretKey": { + "type": "string" + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsAwsPoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1MgmtMigrateEntity": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "db": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified AWS machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsAwsPoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AwsMachine" - } - } + "host": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified AWS machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "isServiceRecord": { + "type": "boolean" + }, + "password": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "port": { + "type": "integer" + }, + "uri": { "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "username": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsAwsPoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AwsMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "v1MgmtMigrationStatuses": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "finishTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "folderName": { + "type": "string" + }, + "isCompleted": { + "type": "boolean" + }, + "message": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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", + "x-omitempty": false + }, + "status": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Updates the specified machine to the cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/azure/{configUid}": { - "get": { - "operationId": "v1CloudConfigsAzureGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AzureCloudConfig" + "v1MgmtMsgBrokerReinitStatus": { + "type": "object", + "properties": { + "failures": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "isSuccess": { + "type": "boolean" + }, + "message": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "success": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "isSuccess": { + "type": "boolean" + }, + "message": { + "type": "string" + } + } } - ], - "summary": "Returns the specified Azure cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" } - ] + } }, - "/v1/cloudconfigs/azure/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1MgmtMsgBrokerReinitStatusEntity": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "isSuccess": { + "type": "boolean" + }, + "message": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsAzureUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureCloudClusterConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1MgmtPodHealth": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] + "name": { + "type": "string" + } } }, - "/v1/cloudconfigs/azure/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1MgmtS3Config": { + "description": "s3 config", + "type": "object", + "properties": { + "accessKey": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "directory": { + "type": "string" + }, + "region": { + "type": "string" + }, + "secretKey": { "type": "string" } - ], - "post": { - "operationId": "v1CloudConfigsAzureMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "v1MgmtUpgradeState": { + "type": "object", + "properties": { + "description": { + "type": "string", + "x-omitempty": false + }, + "details": { + "type": "array", + "items": { "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "x-omitempty": false + }, + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string", + "x-omitempty": false + }, + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "v1MonthlyUsage": { + "description": "Monthly usage object", + "properties": { + "month": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "tenantUsages": { + "description": "List of tenants usage", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Tenant usage object", + "properties": { + "orgName": { + "description": "Organization name", + "type": "string" + }, + "tenantUid": { + "description": "Tenant uid", "type": "string" + }, + "usedAlloyCredits": { + "description": "Credits used by imported clusters", + "type": "number", + "format": "float64" + }, + "usedPureCredits": { + "description": "Credits used by managed clusters", + "type": "number", + "format": "float64" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an Azure cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "usedAlloyCredits": { + "description": "Credits used by imported clusters", + "type": "number", + "format": "float64" + }, + "usedPureCredits": { + "description": "Credits used by managed clusters", + "type": "number", + "format": "float64" + } } }, - "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsAzureMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1MsgBrokerConnection": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsAzureMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" + } + }, + "v1MsgBrokerConnectionList": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } } }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified Azure cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "description": "Returns all the Azure machines restricted to the user role and filters.", - "operationId": "v1CloudConfigsAzurePoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", + "idle": { "type": "string" }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { "type": "string" }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { "type": "integer" }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { "type": "integer" }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", + "tLSCipherSuite": { "type": "string" }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "tLSVersion": { "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of AWS machine items", - "schema": { - "$ref": "#/definitions/v1AzureMachines" - } - } - }, - "security": [ - { - "ApiKey": [] }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Azure machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsAzurePoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureMachine" - } + "uptime": { + "type": "string" }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "version": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1MsgBrokerConnections": { + "type": "object", + "properties": { + "connections": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsAzurePoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "limit": { + "type": "integer" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified Azure machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "description": "Returns a Azure machine for the specified uid.", - "operationId": "v1CloudConfigsAzurePoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AzureMachine" - } - } + "now": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Azure machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" + "numOfConnections": { + "type": "integer" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" + "offset": { + "type": "integer" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "serverId": { "type": "string" + }, + "totalConnections": { + "type": "integer" } - ], - "put": { - "operationId": "v1CloudConfigsAzurePoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AzureMachine" + } + }, + "v1MsgBrokerHealth": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "spec": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "connections": { + "type": "object", + "properties": { + "connections": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "limit": { + "type": "integer" + }, + "now": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "numOfConnections": { + "type": "integer" + }, + "offset": { + "type": "integer" + }, + "serverId": { + "type": "string" + }, + "totalConnections": { + "type": "integer" + } + } + }, + "nodeId": { + "type": "string" + }, + "routes": { + "type": "object", + "properties": { + "numRoutes": { + "type": "integer" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "didSolicit": { + "type": "boolean" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "isConfigured": { + "type": "boolean" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingSize": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "remoteId": { + "type": "string" + }, + "rid": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "subscriptions": { + "type": "integer" + } + } + } + }, + "serverId": { + "type": "string" + } + } + }, + "variables": { + "type": "object", + "properties": { + "authRequired": { + "type": "boolean" + }, + "authTimeout": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "configLoadTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "connectUrls": { + "type": "array", + "items": { + "type": "string" + } + }, + "connections": { + "type": "integer" + }, + "cores": { + "type": "integer" + }, + "cpu": { + "type": "number" + }, + "gitCommit": { + "type": "string" + }, + "go": { + "type": "string" + }, + "gomaxprocs": { + "type": "integer" + }, + "host": { + "type": "string" + }, + "httpHost": { + "type": "string" + }, + "httpPort": { + "type": "integer" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "leafNodes": { + "type": "integer" + }, + "maxConnections": { + "type": "integer" + }, + "maxControlLine": { + "type": "integer" + }, + "maxPayload": { + "type": "integer" + }, + "maxPending": { + "type": "integer" + }, + "mem": { + "type": "integer" + }, + "now": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pingInterval": { + "type": "integer" + }, + "pingMax": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "proto": { + "type": "integer" + }, + "remotes": { + "type": "integer" + }, + "routes": { + "type": "integer" + }, + "serverId": { + "type": "string" + }, + "serverName": { + "type": "string" + }, + "slowConsumers": { + "type": "integer" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptions": { + "type": "integer" + }, + "tlsRequired": { + "type": "boolean" + }, + "tlsTimeout": { + "type": "integer" + }, + "totalConnections": { + "type": "integer" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + }, + "writeDeadline": { + "type": "integer" + } + } + } + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "allyPublishersByTenant": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + }, + "duplicateSubscribersCount": { + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "hubbleSubscribersByService": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + }, + "hubbleSubscribersByTenant": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + }, + "hubbleSubscribersByType": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + }, + "nodeId": { + "type": "string" + }, + "subscriberWithAbnormalRTT": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "subscribersWithAbnormalSubscriptions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "uniqueSubscribers": { + "type": "integer" + }, + "unrecognizedClients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + } + } + } } - ], - "summary": "Updates the specified machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}": { - "get": { - "operationId": "v1CloudConfigsCustomGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1CustomCloudConfig" + "v1MsgBrokerNodeHealth": { + "type": "object", + "properties": { + "allyPublishersByTenant": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "duplicateSubscribersCount": { + "type": "object", + "additionalProperties": { + "type": "integer" } - ], - "summary": "Returns the specified Custom cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" }, - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ] - }, - "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" + "hubbleSubscribersByService": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } }, - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsCustomUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CustomCloudClusterConfigEntity" + "hubbleSubscribersByTenant": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + }, + "hubbleSubscribersByType": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud type", - "in": "path", - "name": "cloudType", - "required": true, + "nodeId": { "type": "string" }, - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsCustomMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CustomMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "subscriberWithAbnormalRTT": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an Custom cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsCustomMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "subscribersWithAbnormalSubscriptions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" }, - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" + "uniqueSubscribers": { + "type": "integer" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsCustomMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CustomMachinePoolConfigEntity" + "unrecognizedClients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified Custom cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsCustomPoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of Custom machine items", - "schema": { - "$ref": "#/definitions/v1CustomMachines" + "v1MsgBrokerNodeHealthSpec": { + "type": "object", + "properties": { + "connections": { + "type": "object", + "properties": { + "connections": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "limit": { + "type": "integer" + }, + "now": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "numOfConnections": { + "type": "integer" + }, + "offset": { + "type": "integer" + }, + "serverId": { + "type": "string" + }, + "totalConnections": { + "type": "integer" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Custom machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud type", - "in": "path", - "name": "cloudType", - "required": true, + "nodeId": { "type": "string" }, - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" + "routes": { + "type": "object", + "properties": { + "numRoutes": { + "type": "integer" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "didSolicit": { + "type": "boolean" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "isConfigured": { + "type": "boolean" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingSize": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "remoteId": { + "type": "string" + }, + "rid": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "subscriptions": { + "type": "integer" + } + } + } + }, + "serverId": { + "type": "string" + } + } }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsCustomPoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CustomMachine" + "variables": { + "type": "object", + "properties": { + "authRequired": { + "type": "boolean" + }, + "authTimeout": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "configLoadTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "connectUrls": { + "type": "array", + "items": { + "type": "string" + } + }, + "connections": { + "type": "integer" + }, + "cores": { + "type": "integer" + }, + "cpu": { + "type": "number" + }, + "gitCommit": { + "type": "string" + }, + "go": { + "type": "string" + }, + "gomaxprocs": { + "type": "integer" + }, + "host": { + "type": "string" + }, + "httpHost": { + "type": "string" + }, + "httpPort": { + "type": "integer" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "leafNodes": { + "type": "integer" + }, + "maxConnections": { + "type": "integer" + }, + "maxControlLine": { + "type": "integer" + }, + "maxPayload": { + "type": "integer" + }, + "maxPending": { + "type": "integer" + }, + "mem": { + "type": "integer" + }, + "now": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pingInterval": { + "type": "integer" + }, + "pingMax": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "proto": { + "type": "integer" + }, + "remotes": { + "type": "integer" + }, + "routes": { + "type": "integer" + }, + "serverId": { + "type": "string" + }, + "serverName": { + "type": "string" + }, + "slowConsumers": { + "type": "integer" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptions": { + "type": "integer" + }, + "tlsRequired": { + "type": "boolean" + }, + "tlsTimeout": { + "type": "integer" + }, + "totalConnections": { + "type": "integer" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + }, + "writeDeadline": { + "type": "integer" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1MsgBrokerNodesHealthSpec": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "connections": { + "type": "object", + "properties": { + "connections": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "limit": { + "type": "integer" + }, + "now": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "numOfConnections": { + "type": "integer" + }, + "offset": { + "type": "integer" + }, + "serverId": { + "type": "string" + }, + "totalConnections": { + "type": "integer" + } + } + }, + "nodeId": { "type": "string" + }, + "routes": { + "type": "object", + "properties": { + "numRoutes": { + "type": "integer" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "didSolicit": { + "type": "boolean" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "isConfigured": { + "type": "boolean" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingSize": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "remoteId": { + "type": "string" + }, + "rid": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "subscriptions": { + "type": "integer" + } + } + } + }, + "serverId": { + "type": "string" + } + } + }, + "variables": { + "type": "object", + "properties": { + "authRequired": { + "type": "boolean" + }, + "authTimeout": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "configLoadTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "connectUrls": { + "type": "array", + "items": { + "type": "string" + } + }, + "connections": { + "type": "integer" + }, + "cores": { + "type": "integer" + }, + "cpu": { + "type": "number" + }, + "gitCommit": { + "type": "string" + }, + "go": { + "type": "string" + }, + "gomaxprocs": { + "type": "integer" + }, + "host": { + "type": "string" + }, + "httpHost": { + "type": "string" + }, + "httpPort": { + "type": "integer" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "leafNodes": { + "type": "integer" + }, + "maxConnections": { + "type": "integer" + }, + "maxControlLine": { + "type": "integer" + }, + "maxPayload": { + "type": "integer" + }, + "maxPending": { + "type": "integer" + }, + "mem": { + "type": "integer" + }, + "now": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pingInterval": { + "type": "integer" + }, + "pingMax": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "proto": { + "type": "integer" + }, + "remotes": { + "type": "integer" + }, + "routes": { + "type": "integer" + }, + "serverId": { + "type": "string" + }, + "serverName": { + "type": "string" + }, + "slowConsumers": { + "type": "integer" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptions": { + "type": "integer" + }, + "tlsRequired": { + "type": "boolean" + }, + "tlsTimeout": { + "type": "integer" + }, + "totalConnections": { + "type": "integer" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + }, + "writeDeadline": { + "type": "integer" + } + } } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsCustomPoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified Custom machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsCustomPoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1CustomMachine" + "v1MsgBrokerNodesHealthStatus": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "allyPublishersByTenant": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + }, + "duplicateSubscribersCount": { + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "hubbleSubscribersByService": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + }, + "hubbleSubscribersByTenant": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + }, + "hubbleSubscribersByType": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + }, + "nodeId": { + "type": "string" + }, + "subscriberWithAbnormalRTT": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "subscribersWithAbnormalSubscriptions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "uniqueSubscribers": { + "type": "integer" + }, + "unrecognizedClients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptionList": { + "type": "array", + "items": { + "type": "string" + } + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Custom machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" - }, - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" - }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, - "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsCustomPoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CustomMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to the cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] } }, - "/v1/cloudconfigs/coxedge/{configUid}": { - "get": { - "operationId": "v1CloudConfigsCoxEdgeGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1CoxEdgeCloudConfig" + "v1MsgBrokerRoutes": { + "type": "object", + "properties": { + "numRoutes": { + "type": "integer" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "didSolicit": { + "type": "boolean" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "isConfigured": { + "type": "boolean" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingSize": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "remoteId": { + "type": "string" + }, + "rid": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "subscriptions": { + "type": "integer" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified CoxEdge cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ] - }, - "/v1/cloudconfigs/coxedge/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "serverId": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsCoxEdgeUidClusterConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CoxEdgeCloudClusterConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] } }, - "/v1/cloudconfigs/coxedge/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsCoxEdgeMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CoxEdgeMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1MsgBrokerVariables": { + "type": "object", + "properties": { + "authRequired": { + "type": "boolean" + }, + "authTimeout": { + "type": "integer" + }, + "cluster": { + "type": "object", + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "type": "array", + "items": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a CoxEdge cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsCoxEdgeMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "configLoadTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "connectUrls": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "connections": { + "type": "integer" + }, + "cores": { + "type": "integer" + }, + "cpu": { + "type": "number" + }, + "gitCommit": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "go": { "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsCoxEdgeMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CoxEdgeMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified CoxEdge cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "gomaxprocs": { + "type": "integer" + }, + "host": { + "type": "string" + }, + "httpHost": { + "type": "string" + }, + "httpPort": { + "type": "integer" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "leafNodes": { + "type": "integer" + }, + "maxConnections": { + "type": "integer" + }, + "maxControlLine": { + "type": "integer" + }, + "maxPayload": { + "type": "integer" + }, + "maxPending": { + "type": "integer" + }, + "mem": { + "type": "integer" + }, + "now": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pingInterval": { + "type": "integer" + }, + "pingMax": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "proto": { + "type": "integer" + }, + "remotes": { + "type": "integer" + }, + "routes": { + "type": "integer" + }, + "serverId": { + "type": "string" + }, + "serverName": { + "type": "string" + }, + "slowConsumers": { + "type": "integer" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "subscriptions": { + "type": "integer" + }, + "tlsRequired": { + "type": "boolean" + }, + "tlsTimeout": { + "type": "integer" + }, + "totalConnections": { + "type": "integer" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + }, + "writeDeadline": { + "type": "integer" + } } }, - "/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsCoxEdgePoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of CoxEdge machine items", - "schema": { - "$ref": "#/definitions/v1CoxEdgeMachines" - } - } + "v1MsgSubscriber": { + "description": "Message subscriber request", + "type": "object", + "properties": { + "accountId": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of CoxEdge machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "publisher": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "service": { "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsCoxEdgePoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CoxEdgeMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - }, - "schema": { - "$ref": "#/definitions/v1Uid" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "userId": { + "type": "string" + } } }, - "/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsCoxEdgePoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1Nameserver": { + "description": "Nameserver define search domains and nameserver addresses", + "type": "object", + "properties": { + "addresses": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified CoxEdge machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsCoxEdgePoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "search": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1CoxEdgeMachine" - } - } + } + } + }, + "v1NatsConfiguration": { + "description": "Describes the response that contains the nats configuration to establish credentials", + "type": "object", + "properties": { + "connectionString": { + "description": "Describes the preCalculated connection string, can be used directly to make connection", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified CoxEdge machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "enableTls": { + "description": "Describes the NATs application option to use a TLS based custom dialer. Its enabled when external Certificate is used over the existing one.", + "type": "boolean" + }, + "insecureTls": { + "description": "Describes the NATs tls option to skip verifying the client certificate", + "type": "boolean" + }, + "password": { + "description": "Describes the NATs user's password", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "scheme": { + "description": "Describes the NATs protocol for the connection. Eg- 'tls', 'nats'", "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "tlsCertificate": { + "description": "Describes the NATs tls certificate used for making a secure connection", "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsCoxEdgePoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CoxEdgeMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to the cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/edge-native/{configUid}": { - "get": { - "operationId": "v1CloudConfigsEdgeNativeGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1EdgeNativeCloudConfig" - } - } + "tlsKey": { + "description": "Describes the NATs tls certificate key used for making a secure connection", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified edge-native cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "urls": { + "description": "Describes the URLs of the nats nodes used in nats HA setup where the client will connect", + "type": "string" + }, + "userName": { + "description": "Describes the NATs user name", "type": "string" } - ] + } }, - "/v1/cloudconfigs/edge-native/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1NatsCredentialRequest": { + "description": "Describes the request for resource's nats credential", + "type": "object", + "properties": { + "clusterUid": { + "description": "Deprecated. please use resourceUid", "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsEdgeNativeUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeNativeCloudClusterConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] + "isSystem": { + "description": "Describes if its a system request", + "type": "boolean" + }, + "resourceUid": { + "description": "Describes the resource for which credentials has to be fetched", + "type": "string" + }, + "serviceName": { + "description": "Describes the service for which credentials has to be fetched. Possible values [ally, jet]", + "type": "string", + "enum": [ + "ally", + "jet" + ] + }, + "tenantUid": { + "description": "Describes the tenant of the resource", + "type": "string" + } } }, - "/v1/cloudconfigs/edge-native/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1NatsCredentials": { + "description": "Describes the response that contains the nats credentials", + "type": "object", + "properties": { + "allowedPublisher": { + "description": "Describes the subject on which client is allowed to publish", "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsEdgeNativeMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeNativeMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - }, - "schema": { - "$ref": "#/definitions/v1Uid" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a edge-native cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "allowedSubcriber": { + "description": "Describes the subject on which client is allowed to subscribe", + "type": "string" + }, + "jwt": { + "description": "Describes the jwt token which will be used as an credential for the nats", + "type": "string" + }, + "seed": { + "description": "Describes the seed for the jwt", + "type": "string" + } } }, - "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsEdgeNativeMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1NatsRoute": { + "type": "object", + "properties": { + "didSolicit": { + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "isConfigured": { + "type": "boolean" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingSize": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "remoteId": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "rid": { + "type": "integer" + }, + "rtt": { "type": "string" + }, + "subscriptions": { + "type": "integer" } - ], - "put": { - "operationId": "v1CloudConfigsEdgeNativeMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeNativeMachinePoolConfigEntity" + } + }, + "v1NestedCloudConfigStatus": { + "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" + } } }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "x-kubernetes-patch-merge-key": "type", + "x-kubernetes-patch-strategy": "merge" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified edge-native cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "isAddonLayer": { + "description": "addon layers present in spc", + "type": "boolean" + } } }, - "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsEdgeNativePoolMachinesList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1Nic": { + "type": "object", + "properties": { + "dns": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of edge-native machine items", - "schema": { - "$ref": "#/definitions/v1EdgeNativeMachines" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of edge-native machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "gateway": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "ip": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "macAddr": { + "type": "string" + }, + "nicName": { + "type": "string" + }, + "subnet": { "type": "string" } - ], - "post": { - "operationId": "v1CloudConfigsEdgeNativePoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeNativeMachine" + } + }, + "v1NodesAutoRemediationSettings": { + "properties": { + "disableNodesAutoRemediation": { + "type": "boolean", + "x-omitempty": false + }, + "isEnabled": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1NonFipsConfig": { + "description": "Non-FIPS configuration", + "properties": { + "mode": { + "description": "enable or disable the non FIPS complaint", + "type": "string", + "default": "nonFipsDisabled", + "enum": [ + "nonFipsEnabled", + "nonFipsDisabled" + ] + } + } + }, + "v1Notification": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { "type": "string" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Adds the edge-native machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + }, + "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" + ] + } } }, - "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1NotificationAction": { + "description": "Describes actions for the notification", + "type": "object", + "properties": { + "ack": { + "description": "Describes the acknowledgement status for the notification", + "type": "boolean", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified edge-native machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1EdgeNativeMachine" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified edge-native machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "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" + } + } + }, + "v1NotificationEvent": { + "description": "Describes notification event details", + "type": "object", + "properties": { + "component": { + "description": "Describes component of notification event", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "digest": { + "description": "Describes notification event digest", "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "message": { + "description": "Describes a information for the notification event", "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeNativeMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "meta": { + "description": "Describes a event messages with meta digest as the key", + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "type": { + "description": "Describes notification event type", + "type": "string", + "enum": [ + "NotificationPackSync", + "NotificationClusterProfileSync" + ] + } } }, - "/v1/cloudconfigs/edge/{configUid}": { - "get": { - "operationId": "v1CloudConfigsEdgeGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1EdgeCloudConfig" + "v1NotificationSource": { + "description": "Describes origin info for the notification", + "type": "object", + "properties": { + "component": { + "description": "Describes component where notification originated", + "type": "string" + } + } + }, + "v1Notifications": { + "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" + ] + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Returns the specified edge cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + } + } + }, + "v1OS": { + "type": "object", + "properties": { + "family": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1ObjectEntity": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { "type": "string" } - ] + } }, - "/v1/cloudconfigs/edge/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsEdgeUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeCloudClusterConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1ObjectMeta": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "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/cloudconfigs/edge/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1ObjectMetaInputEntity": { + "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" } + } + }, + "v1ObjectMetaInputEntitySchema": { + "description": "Resource metadata", + "type": "object", + "required": [ + "metadata" ], - "post": { - "operationId": "v1CloudConfigsEdgeMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "labels": { + "description": "Labels are key value data to 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" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a edge cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsEdgeMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1ObjectMetaUpdateEntity": { + "description": "ObjectMeta update entity with uid as input", + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + }, + "name": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "uid": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsEdgeMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1ObjectReference": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified Edge cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "name": { + "description": "Name of the referent.", + "type": "string" + }, + "uid": { + "description": "UID of the referent.", + "type": "string" + } } }, - "/v1/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsEdgePoolMachinesList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1ObjectResReference": { + "description": "Object resource reference", + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "projectUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "v1ObjectScopeEntity": { + "description": "Object scope identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "v1ObjectTagsEntity": { + "description": "Object identity meta with tags", + "type": "object", + "properties": { + "labels": { + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of Edge machine items", - "schema": { - "$ref": "#/definitions/v1EdgeMachines" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Edge machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "name": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "uid": { + "type": "string" + } + } + }, + "v1OciImageRegistry": { + "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" } + } + }, + "v1OciRegistries": { + "type": "object", + "required": [ + "items" ], - "post": { - "operationId": "v1CloudConfigsEdgePoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeMachine" + "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" + } + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1OciRegistry": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Adds the Edge machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + }, + "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/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsEdgePoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1OciRegistryAuth": { + "description": "Auth credentials of the oci registry", + "type": "object", + "properties": { + "password": { + "description": "Password in the credentials", + "type": "string", + "format": "password" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified Edge machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsEdgePoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1EdgeMachine" + "username": { + "description": "Username in the credentials", + "type": "string" + } + } + }, + "v1OciRegistryEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Edge machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "defaultRegion": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "endpoint": { "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "providerType": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "type": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsEdgePoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1OciRegistrySpec": { + "description": "Image registry spec", + "type": "object", + "properties": { + "defaultRegion": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "endpoint": { + "type": "string" + }, + "isPrivate": { + "type": "boolean" + }, + "providerType": { + "type": "string" + }, + "registryType": { + "type": "string" + }, + "scope": { + "type": "string" + } } }, - "/v1/cloudconfigs/eks/{configUid}": { - "get": { - "operationId": "v1CloudConfigsEksGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1EksCloudConfig" + "v1OciRegistryStatusSummary": { + "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" } } + } + } + }, + "v1OidcAuth": { + "type": "object", + "properties": { + "oidcToken": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified EKS cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "org": { "type": "string" } - ] + } }, - "/v1/cloudconfigs/eks/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1OidcAuthLogin": { + "type": "object", + "properties": { + "emailId": { "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsEksUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EksCloudClusterConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] + "password": { + "type": "string", + "format": "password" + } } }, - "/v1/cloudconfigs/eks/{configUid}/fargateProfiles": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1OidcAuthorizationTokenResponse": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + }, + "error": { + "type": "string" + }, + "error_description": { + "type": "string" + }, + "expires_in": { + "type": "integer" + }, + "id_token": { + "type": "string" + }, + "raw": { + "type": "object" + }, + "refresh_token": { + "type": "string" + }, + "scope": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsEksUidFargateProfilesUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EksFargateProfiles" + } + }, + "v1OidcLogins": { + "description": "loginsDetails", + "type": "object", + "properties": { + "systemLogins": { + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "tenantLogin": { + "type": "object", + "properties": { + "authType": { + "type": "string" + }, + "redirectUrl": { + "type": "string" + } } - ], - "summary": "Updates EKS cloud config's fargate profiles", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/eks/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1OidcRefreshToken": { + "description": "oidc request with token", + "type": "object", + "properties": { + "token": { "type": "string" } - ], - "post": { - "operationId": "v1CloudConfigsEksMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EksMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1OpenIDProviderMetadataResponse": { + "type": "object", + "properties": { + "authorization_endpoint": { + "description": "REQUIRED. URL of the OP's OAuth 2.0 Authorization Endpoint", + "type": "string" + }, + "claims_supported": { + "description": "RECOMMENDED. JSON array containing a list of the Claim Names of the Claims that the OpenID Provider MAY be able to supply values for", + "type": "string" + }, + "id_token_signing_alg_values_supported": { + "description": "REQUIRED. JSON array containing a list of the JWS signing algorithms (alg values) supported by the OP for the ID Token to encode the Claims in a JWT", + "type": "object" + }, + "issuer": { + "description": "REQUIRED. URL using the https scheme with no query or fragment component that the OP asserts as its Issuer Identifier", + "type": "string" + }, + "jwks_uri": { + "description": "REQUIRED. URL of the OP's JSON Web Key Set [JWK] document.", + "type": "string" + }, + "registration_endpoint": { + "description": "RECOMMENDED. URL of the OP's Dynamic Client Registration Endpoint", + "type": "string" + }, + "response_types_supported": { + "description": "REQUIRED. JSON array containing a list of the OAuth 2.0 response_type values that this OP supports", + "type": "string" + }, + "scopes_supported": { + "description": "RECOMMENDED. JSON array containing a list of the OAuth 2.0 [RFC6749] scope values that this server supports", + "type": "string" + }, + "subject_types_supported": { + "description": "REQUIRED. JSON array containing a list of the Subject Identifier types that this OP supports", + "type": "string" + }, + "token_endpoint": { + "description": "URL of the OP's OAuth 2.0 Token Endpoint", + "type": "string" + }, + "userinfo_endpoint": { + "description": "RECOMMENDED. URL of the OP's UserInfo Endpoint", + "type": "string" + } + } + }, + "v1OpenStackAccount": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an EKS cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsEksMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "description": "Status of the account", + "type": "object", + "properties": { + "state": { + "description": "Cloud account status", + "type": "string" + } } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" } + } + }, + "v1OpenStackAccounts": { + "type": "object", + "required": [ + "items" ], - "put": { - "operationId": "v1CloudConfigsEksMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EksMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + "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" + } + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Updates the specified EKS cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsEksPoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of EKS machine items", - "schema": { - "$ref": "#/definitions/v1AwsMachines" + "v1OpenStackAz": { + "description": "OpenStack az entity", + "type": "object", + "properties": { + "name": { + "description": "Name of OpenStack az", + "type": "string" + } + } + }, + "v1OpenStackAzs": { + "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" + } } } + } + } + }, + "v1OpenStackCloudAccount": { + "description": "auth-url,project,username,password,domain,cacert etc", + "type": "object", + "required": [ + "identityEndpoint", + "username", + "password" + ], + "properties": { + "caCert": { + "description": "Ca cert for OpenStack", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of EKS machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "defaultDomain": { + "description": "Default Domain name", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "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" } - ], - "post": { - "operationId": "v1CloudConfigsEksPoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AwsMachine" + } + }, + "v1OpenStackCloudClusterConfigEntity": { + "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" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1OpenStackCloudConfig": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + }, + "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" + } + } + } } }, - "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsEksPoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1OpenStackCloudConfigSpec": { + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified EKS machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsEksPoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AwsMachine" + "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" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } + }, + "v1OpenStackCloudConfigStatus": { + "description": "OpenStackCloudConfigStatus defines the observed state of OpenStackCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", + "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" + } + } } - ], - "summary": "Returns the specified EKS machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "nodeImage": { "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "sourceImageId": { + "description": "sourceImageId, it can be from packref's annotations or from pack.json", "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsEksPoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AwsMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to the cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "useCapiImage": { + "type": "boolean" + } } }, - "/v1/cloudconfigs/gcp/{configUid}": { - "get": { - "operationId": "v1CloudConfigsGcpGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1OpenStackClusterConfig": { + "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" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1GcpCloudConfig" + }, + "domain": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified GCP cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ] - }, - "/v1/cloudconfigs/gcp/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsGcpUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpCloudClusterConfigEntity" + "network": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/gcp/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "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" - } - ], - "post": { - "operationId": "v1CloudConfigsGcpMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + }, + "project": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "name": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "region": { + "type": "string" + }, + "sshKeyName": { + "type": "string" + }, + "subnet": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } } - ], - "summary": "Creates a Gcp cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsGcpMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1OpenStackDomain": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "id": { + "description": "ID is the unique ID of the domain", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "name": { + "description": "Name is the name of the domain", "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsGcpMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified GCP cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] } }, - "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsGcpPoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of GCP machine items", - "schema": { - "$ref": "#/definitions/v1GcpMachines" - } - } + "v1OpenStackFlavor": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of GCP machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "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" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "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" } + } + }, + "v1OpenStackFlavors": { + "description": "List of OpenStack flavours", + "type": "object", + "required": [ + "items" ], - "post": { - "operationId": "v1CloudConfigsGcpPoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsGcpPoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified GCP machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsGcpPoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1GcpMachine" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified GCP machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "v1OpenStackKeypair": { + "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" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "publicKey": { + "description": "PublicKey is the public key from this pair, in OpenSSH format", "type": "string" } + } + }, + "v1OpenStackKeypairs": { + "description": "List of OpenStack keypairs", + "type": "object", + "required": [ + "items" ], - "put": { - "operationId": "v1CloudConfigsGcpPoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpMachine" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "Updates the specified machine to the cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/generic/{configUid}": { - "get": { - "operationId": "v1CloudConfigsGenericGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1OpenStackMachine": { + "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" + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1GenericCloudConfig" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Returns the specified Generic cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" } - ] + } }, - "/v1/cloudconfigs/generic/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } + "v1OpenStackMachineConfigEntity": { + "type": "object", + "required": [ + "flavorConfig" ], - "put": { - "operationId": "v1CloudConfigsGenericUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GenericCloudClusterConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "properties": { + "azs": { + "description": "for master pool, this will be the failure domains for kcp", + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/generic/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } + "v1OpenStackMachinePoolCloudConfigEntity": { + "type": "object", + "required": [ + "flavorConfig" ], - "post": { - "operationId": "v1CloudConfigsGenericMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GenericMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "properties": { + "azs": { + "description": "for master pool, this will be the failure domains for kcp", + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "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" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "subnet": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } } - ], - "summary": "Creates a generic cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsGenericMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1OpenStackMachinePoolConfig": { + "type": "object", + "required": [ + "flavorConfig" + ], + "properties": { + "additionalLabels": { + "description": "additionalLabels", + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + }, + "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" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "azs": { + "description": "for master pool, this will be the failure domains for kcp", + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "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" - } - ], - "put": { - "operationId": "v1CloudConfigsGenericMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GenericMachinePoolConfigEntity" + }, + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified generic cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsGenericPoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "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" } - ], - "responses": { - "200": { - "description": "An array of Generic machine items", - "schema": { - "$ref": "#/definitions/v1GenericMachines" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } } - ], - "summary": "Retrieves a list of Generic machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" } + } + }, + "v1OpenStackMachinePoolConfigEntity": { + "type": "object", + "required": [ + "cloudConfig" ], - "post": { - "operationId": "v1CloudConfigsGenericPoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GenericMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsGenericPoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1OpenStackMachineSpec": { + "description": "OpenStack cloud VM definition spec", + "type": "object", + "required": [ + "instanceType", + "nics" + ], + "properties": { + "az": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsGenericPoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1GenericMachine" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Returns the specified generic machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "projectId": { "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsGenericPoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GenericMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "securityGroups": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to the cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "sshKeyName": { + "type": "string" + } } }, - "/v1/cloudconfigs/gke/{configUid}": { - "get": { - "operationId": "v1CloudConfigsGkeGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1GcpCloudConfig" + "v1OpenStackMachines": { + "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" + } + } + } + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified GKE cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" } - ] + } }, - "/v1/cloudconfigs/gke/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1OpenStackNetwork": { + "description": "OpenStack network", + "type": "object", + "properties": { + "description": { + "description": "Description of OpenStack network", "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsGkeUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpCloudClusterConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/gke/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } + "v1OpenStackNetworks": { + "description": "List of OpenStack networks", + "type": "object", + "required": [ + "items" ], - "post": { - "operationId": "v1CloudConfigsGkeMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "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" + } + } + } } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an GKE cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsGkeMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1OpenStackNic": { + "description": "OpenStack network interface", + "type": "object", + "required": [ + "networkName" + ], + "properties": { + "index": { + "type": "integer", + "format": "int8" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "networkName": { + "type": "string" + }, + "privateIPs": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + } + } + }, + "v1OpenStackProject": { + "description": "Project represents an OpenStack Identity Project", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of the project", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "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" } + } + }, + "v1OpenStackProjects": { + "description": "Array of OpenStack projects", + "type": "object", + "required": [ + "items" ], - "put": { - "operationId": "v1CloudConfigsGkeMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "Updates the specified GKE cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsGkePoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of GKE machine items", - "schema": { - "$ref": "#/definitions/v1GcpMachines" - } - } + "v1OpenStackRegion": { + "description": "OpenStack region entity", + "type": "object", + "properties": { + "description": { + "description": "Description of OpenStack region", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of GKE machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "id": { + "description": "Id of OpenStack region", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "parentRegionId": { + "description": "Parent region id of OpenStack region", "type": "string" } + } + }, + "v1OpenStackRegions": { + "description": "List of OpenStack regions and domains", + "type": "object", + "required": [ + "regions", + "domains" ], - "post": { - "operationId": "v1CloudConfigsGkePoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpMachine" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } + } + } + }, + "v1OpenStackResource": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "name": { + "type": "string" + } } }, - "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsGkePoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1OpenStackSubnet": { + "description": "OpenStack subnet entity", + "type": "object", + "properties": { + "description": { + "description": "Description for the network", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified Gcp machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsGkePoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1GcpMachine" - } - } + "id": { + "description": "UUID for the network", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified GKE machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "name": { + "description": "Human-readable name for the network. Might not be unique", "type": "string" + } + } + }, + "v1OpenstackFlavorConfig": { + "required": [ + "name" + ], + "properties": { + "diskGiB": { + "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", + "type": "integer", + "format": "int32" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "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" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "numCPUs": { + "description": "NumCPUs is the number of virtual processors in a virtual machine.", + "type": "integer", + "format": "int32" + } + } + }, + "v1OrgState": { + "description": "Org state", + "type": "object", + "properties": { + "state": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsGkePoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1GcpMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1Organization": { + "description": "Describes user's organization details", + "type": "object", + "properties": { + "authType": { + "description": "Describes user's enabled authorization mode", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Updates the specified machine to the cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/libvirt/{configUid}": { - "get": { - "operationId": "v1CloudConfigsLibvirtGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1LibvirtCloudConfig" + "v1Organizations": { + "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" + } + } + } + } } } + } + } + }, + "v1OsPatchConfig": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified libvirt cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "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" } + } + }, + "v1OsPatchEntity": { + "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" + } + } + } + } + }, + "v1OsType": { + "type": "string", + "default": "Linux", + "enum": [ + "Linux", + "Windows" ] }, - "/v1/cloudconfigs/libvirt/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1OverloadSpec": { + "description": "Overload spec", + "type": "object", + "properties": { + "cloudAccountUid": { + "type": "string", + "x-omitempty": false + }, + "ipAddress": { "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsLibvirtUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1LibvirtCloudClusterConfigEntity" + }, + "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 + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/libvirt/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "isSelfHosted": { + "type": "boolean" + }, + "isSystem": { + "type": "boolean" + }, + "spectroClusterUid": { + "type": "string", + "x-omitempty": false + }, + "tenantUid": { "type": "string" } - ], - "post": { - "operationId": "v1CloudConfigsLibvirtMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + } + }, + "v1OverloadStatus": { + "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" + } + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a libvirt cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsLibvirtMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "isActive": { + "type": "boolean", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "isReady": { + "type": "boolean", + "x-omitempty": false + }, + "kubectlCommands": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "state": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsLibvirtMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity" + } + }, + "v1OverloadVsphereOva": { + "description": "Overload ova details", + "type": "object", + "properties": { + "location": { + "type": "string", + "x-omitempty": false + } + } + }, + "v1Overlord": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates the specified Libvirt cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsLibvirtPoolMachinesList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of Libvirt machine items", - "schema": { - "$ref": "#/definitions/v1LibvirtMachines" + "v1OverlordMaasAccountCreate": { + "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": "" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Libvirt machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "name": { + "description": "Name for the private gateway & cloud account", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false } - ], - "post": { - "operationId": "v1CloudConfigsLibvirtPoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1LibvirtMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + } + }, + "v1OverlordMaasAccountEntity": { + "properties": { + "account": { + "type": "object", + "required": [ + "apiKey", + "apiEndpoint" + ], + "properties": { + "apiEndpoint": { + "type": "string" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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": "" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the Libvirt machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false + } } }, - "/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsLibvirtPoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1OverlordMaasCloudConfig": { + "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" + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified Libvirt machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsLibvirtPoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "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" + } + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1LibvirtMachine" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the specified Libvirt machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "size": { + "description": "size of the pool, number of machines", + "type": "integer", + "format": "int32" + } + } + }, + "v1OverlordManifest": { + "description": "overlord manifest", + "type": "object", + "properties": { + "manifest": { + "type": "string" + } + } + }, + "v1OverlordMigrateEntity": { + "properties": { + "sourceUid": { "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "targetUid": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsLibvirtPoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1LibvirtMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] } }, - "/v1/cloudconfigs/maas/{configUid}": { - "get": { - "operationId": "v1CloudConfigsMaasGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1MaasCloudConfig" + "v1OverlordOpenStackAccountCreate": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Maas cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "name": { + "description": "Name for the private gateway & cloud account", "type": "string" + }, + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false } - ] + } }, - "/v1/cloudconfigs/maas/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsMaasUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1MaasCloudClusterConfigEntity" + "v1OverlordOpenStackAccountEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false + } } }, - "/v1/cloudconfigs/maas/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsMaasMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1MaasMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1OverlordOpenStackCloudConfig": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an Maas cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsMaasMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "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" + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsMaasMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1MaasMachinePoolConfigEntity" + "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" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified Maas cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "size": { + "description": "size of the pool, number of machines", + "type": "integer", + "format": "int32" + } } }, - "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsMaasPoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of Maas machine items", - "schema": { - "$ref": "#/definitions/v1MaasMachines" + "v1OverlordVsphereAccountCreate": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Maas machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "name": { + "description": "Name for the private gateway & cloud account", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false } - ], - "post": { - "operationId": "v1CloudConfigsMaasPoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1MaasMachine" + } + }, + "v1OverlordVsphereAccountEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1OverlordVsphereCloudConfig": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + }, + "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" + } } }, - "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsMaasPoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1Overlords": { + "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" + } + } + } + } } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + } + } + }, + "v1PackConfig": { + "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" + } } + } + } + }, + "v1PackConfigSpec": { + "type": "object", + "properties": { + "associatedObject": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified Maas machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsMaasPoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1MaasMachine" + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Maas machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "name": { "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "packUid": { "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "scope": { "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsMaasPoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1MaasMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to the cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "tag": { + "type": "string" + }, + "type": { + "type": "string" + }, + "values": { + "type": "string" + }, + "version": { + "type": "string" + } } }, - "/v1/cloudconfigs/openstack/{configUid}": { - "get": { - "operationId": "v1CloudConfigsOpenStackGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1OpenStackCloudConfig" - } - } + "v1PackDependency": { + "description": "Pack template dependency", + "type": "object", + "properties": { + "layer": { + "description": "Pack template dependency pack layer", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified OpenStack cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "name": { + "description": "Pack template dependency pack name", "type": "string" + }, + "readOnly": { + "description": "If true then dependency pack values can't be overridden", + "type": "boolean" } - ] + } }, - "/v1/cloudconfigs/openstack/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1PackDependencyMeta": { + "description": "Pack dependency metadata", + "type": "object", + "properties": { + "displayName": { + "description": "Pack display name", "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsOpenStackUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OpenStackCloudClusterConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] + "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" + } } }, - "/v1/cloudconfigs/openstack/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1PackEntity": { + "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" } - ], - "post": { - "operationId": "v1CloudConfigsOpenStackMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OpenStackMachinePoolConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "v1PackFilterSpec": { + "description": "Packs filter spec", + "properties": { + "addOnSubType": { + "description": "Pack add-on sub type such as monitoring, db etc", + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "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 }, - "schema": { - "$ref": "#/definitions/v1Uid" + "contains": { + "type": "string", + "x-nullable": true + }, + "eq": { + "type": "string", + "x-nullable": true + }, + "ignoreCase": { + "type": "boolean", + "default": true + }, + "ne": { + "type": "string", + "x-nullable": true } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a OpenStack cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsOpenStackMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "environment": { + "description": "Pack supported cloud types", + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "isFips": { + "description": "isFips compliant", + "type": "boolean" + }, + "layer": { + "description": "Pack layer", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "kernel", + "os", + "k8s", + "cni", + "csi", + "addon" + ] } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsOpenStackMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OpenStackMachinePoolConfigEntity" + "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 } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "registryUid": { + "description": "Pack registry uid", + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "state": { + "description": "Pack state such as deprecated or disabled", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Updates the specified OpenStack cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + }, + "type": { + "description": "Pack type", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "default": "spectro", + "enum": [ + "spectro", + "helm", + "manifest", + "oci" + ] + } + } } }, - "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsOpenStackPoolMachinesList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of OpenStack machine items", - "schema": { - "$ref": "#/definitions/v1OpenStackMachines" + "v1PackImportEntity": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Retrieves a list of OpenStack machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + }, + "tag": { + "description": "Pack version tag", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "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" } - ], - "post": { - "operationId": "v1CloudConfigsOpenStackPoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OpenStackMachine" + } + }, + "v1PackInputEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1PackLayer": { + "type": "string", + "enum": [ + "kernel", + "os", + "k8s", + "cni", + "csi", + "addon" + ] + }, + "v1PackManifestEntity": { + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the OpenStack machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "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" + } } }, - "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsOpenStackPoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1PackManifestImportEntity": { + "description": "Pack manifest import objct", + "type": "object", + "properties": { + "content": { + "description": "Pack manifest content in yaml", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified OpenStack machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsOpenStackPoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1OpenStackMachine" - } - } + "name": { + "description": "Pack manifest name", + "type": "string" + } + } + }, + "v1PackManifestRef": { + "type": "object", + "properties": { + "digest": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified OpenStack machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "isOverridden": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "parentUid": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "v1PackManifestUpdateEntity": { + "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" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "registryUid": { + "description": "Pack registry uid", "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "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" } + } + }, + "v1PackManifests": { + "type": "object", + "required": [ + "items" ], - "put": { - "operationId": "v1CloudConfigsOpenStackPoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OpenStackMachine" + "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" + } + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "Updates the specified machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/tke/{configUid}": { - "get": { - "operationId": "v1CloudConfigsTkeGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1PackManifestsSpec": { + "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" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1TencentCloudConfig" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "cloudTypes": { + "description": "Pack supported cloud types", + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Returns the specified TKE cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + }, + "digest": { + "description": "Pack digest", "type": "string" - } - ] - }, - "/v1/cloudconfigs/tke/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + }, + "displayName": { + "description": "Pack display name", "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsTkeUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TencentCloudClusterConfigEntity" + }, + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/tke/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "name": { + "description": "Pack name", "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsTkeMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TencentMachinePoolConfigEntity" + }, + "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 + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "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 } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an TKE cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsTkeMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "type": { + "type": "string", + "default": "spectro", + "enum": [ + "spectro", + "helm", + "manifest", + "oci" + ] }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "values": { + "description": "Pack values", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "version": { + "description": "Pack version", "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsTkeMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TencentMachinePoolConfigEntity" + } + }, + "v1PackMetadata": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } } - ], - "summary": "Updates the specified TKE cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsTkePoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1PackMetadataList": { + "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" + ] + } + } + } + } } - ], - "responses": { - "200": { - "description": "An array of TKE machine items", - "schema": { - "$ref": "#/definitions/v1TencentMachines" + }, + "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 } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of TKE machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + } + } + }, + "v1PackMetadataSpec": { + "description": "Pack metadata spec", + "type": "object", + "properties": { + "addonSubType": { + "description": "Pack add-on sub type such as monitoring, db etc", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "addonType": { + "description": "Pack add-on type such as logging, monitoring, security etc", "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsTkePoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TencentMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "cloudTypes": { + "description": "Pack supported cloud types", + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "type": { + "type": "string", + "default": "spectro", + "enum": [ + "spectro", + "helm", + "manifest", + "oci" + ] + } } }, - "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsTkePoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1PackParamsEntity": { + "description": "Pack params request payload", + "properties": { + "references": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + } + } + }, + "v1PackPreset": { + "description": "PackPreset defines the preset pack values", + "type": "object", + "properties": { + "add": { + "type": "string", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] + "displayName": { + "type": "string", + "x-omitempty": false + }, + "group": { + "type": "string", + "x-omitempty": false + }, + "name": { + "type": "string", + "x-omitempty": false + }, + "remove": { + "type": "array", + "items": { + "type": "string" }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified Tencent machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsTkePoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "x-omitempty": false + } + } + }, + "v1PackReadme": { + "properties": { + "readme": { + "description": "Readme describes the documentation of the specified pack", + "type": "string" + } + } + }, + "v1PackRef": { + "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", + "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" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1TencentMachine" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Tke machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "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" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "inValidReason": { "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "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" - } - ], - "put": { - "operationId": "v1CloudConfigsTkePoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TencentMachine" + }, + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to the cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/virtual/{configUid}": { - "get": { - "operationId": "v1CloudConfigsVirtualGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "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" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1VirtualCloudConfig" + }, + "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 + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } } - ], - "summary": "Returns the specified Virtual cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + }, + "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" } - ] + } }, - "/v1/cloudconfigs/virtual/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1PackRefSummary": { + "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" } - ], - "put": { - "operationId": "v1CloudConfigsVirtualUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VirtualCloudClusterConfigEntity" + } + }, + "v1PackRefSummaryResponse": { + "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" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/virtual/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsVirtualMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VirtualMachinePoolConfigEntity" + "v1PackRefSummarySpec": { + "description": "Pack summary spec", + "properties": { + "macros": { + "description": "Pack resolved values", + "properties": { + "resolved": { + "description": "Pack resolved values map", + "type": "object", + "additionalProperties": { + "type": "string" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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": { - "$ref": "#/definitions/v1Uid" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Creates a virtual cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsVirtualMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1PackRegistries": { + "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" + } + } + } + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" } + } + }, + "v1PackRegistriesSummary": { + "description": "Pack Registries Summary", + "type": "object", + "required": [ + "items" ], - "put": { - "operationId": "v1CloudConfigsVirtualMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VirtualMachinePoolConfigEntity" + "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" + } + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Updates the specified virtual cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsVirtualPoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of virtual machine items", - "schema": { - "$ref": "#/definitions/v1VirtualMachines" + "v1PackRegistry": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Retrieves a list of virtual machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsVirtualPoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VirtualMachine" + "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" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1PackRegistryImportEntity": { + "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 }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsVirtualPoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1PackRegistryMetadata": { + "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 }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified virtual machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsVirtualPoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1VirtualMachine" - } - } + "kind": { + "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified virtual machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "name": { + "description": "Pack registry name", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "providerType": { + "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "uid": { + "description": "Pack registry uid", "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsVirtualPoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VirtualMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to the cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] } }, - "/v1/cloudconfigs/virtual/{configUid}/resize": { - "parameters": [ - { - "description": "Specify virtual cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } + "v1PackRegistrySpec": { + "description": "Pack registry credentials spec", + "type": "object", + "required": [ + "endpoint", + "auth" ], - "put": { - "operationId": "v1CloudConfigsVirtualUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VirtualClusterResize" + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates and resizes the virtual cluster", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/vsphere/{configUid}": { - "get": { - "operationId": "v1CloudConfigsVsphereGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1VsphereCloudConfig" - } - } + "endpoint": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified vSphere cloud config", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "name": { + "type": "string" + }, + "private": { + "type": "boolean", + "x-omitempty": false + }, + "registryUid": { + "description": "Pack registry uid", + "type": "string" + }, + "scope": { "type": "string" } - ] + } }, - "/v1/cloudconfigs/vsphere/{configUid}/clusterConfig": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "v1PackRegistrySpecSummary": { + "description": "Pack Registry spec summary", + "type": "object", + "properties": { + "endpoint": { + "type": "string" + }, + "private": { + "type": "boolean", + "x-omitempty": false + }, + "scope": { "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsVsphereUidClusterConfig", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VsphereCloudClusterConfigEntity" + } + }, + "v1PackRegistryStatus": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "Updates the cluster configuration information", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/vsphere/{configUid}/machinePools": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsVsphereMachinePoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VsphereMachinePoolConfigEntity" + "v1PackRegistryStatusSummary": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1PackRegistrySummary": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a vSphere cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}": { - "delete": { - "operationId": "v1CloudConfigsVsphereMachinePoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified machine pool", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsVsphereMachinePoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VsphereMachinePoolConfigEntity" + "spec": { + "description": "Pack Registry spec summary", + "type": "object", + "properties": { + "endpoint": { + "type": "string" + }, + "private": { + "type": "boolean", + "x-omitempty": false + }, + "scope": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Updates the specified vSphere cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + } } }, - "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}/machines": { - "get": { - "operationId": "v1CloudConfigsVspherePoolMachinesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", + "v1PackResolvedValues": { + "description": "Pack resolved values", + "properties": { + "resolved": { + "description": "Pack resolved values map", + "type": "object", + "additionalProperties": { "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", + } + } + } + }, + "v1PackSchema": { + "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" }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", + "x-omitempty": false + }, + "listOptions": { + "type": "array", + "items": { "type": "string" }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of vSphere machine items", - "schema": { - "$ref": "#/definitions/v1VsphereMachines" + "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 + } + } + }, + "v1PackSortFields": { + "description": "Packs sort by fields", + "type": "string", + "enum": [ + "name", + "type", + "layer", + "addOnType", + "displayName" + ], + "x-nullable": true + }, + "v1PackSortSpec": { + "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" + ] + } + } + }, + "v1PackSummaries": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Retrieves a list of vSphere machines", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + } + } + }, + "v1PackSummary": { + "description": "Pack summary object", + "type": "object", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "kind": { + "description": "Deprecated. Not used for the resource info.", "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsVspherePoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VsphereMachine" + }, + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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": { - "$ref": "#/definitions/v1Uid" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds the vSphere machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] + "status": { + "description": "Pack status", + "type": "object" + } } }, - "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { - "delete": { - "operationId": "v1CloudConfigsVspherePoolMachinesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1PackSummarySpec": { + "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" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified vSphere machine", - "tags": [ - "cloudconfigs" - ] - }, - "get": { - "operationId": "v1CloudConfigsVspherePoolMachinesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "cloudTypes": { + "description": "Pack supported cloud types", + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1VsphereMachine" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified vSphere machine", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "digest": { + "description": "Pack digest", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, + "displayName": { + "description": "Pack display name", "type": "string" }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "eol": { + "description": "Pack end of life, date format: yyyy-MM-dd", "type": "string" - } - ], - "put": { - "operationId": "v1CloudConfigsVspherePoolMachinesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VsphereMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}/maintenance": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "group": { + "description": "Pack group", "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" + "layer": { + "type": "string", + "enum": [ + "kernel", + "os", + "k8s", + "cni", + "csi", + "addon" + ] }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "logoUrl": { + "description": "Pack logo url", "type": "string" }, - { - "description": "Cloud type", - "in": "path", - "name": "cloudType", - "required": true, + "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" - } - ], - "put": { - "operationId": "v1CloudConfigsMachinePoolsMachineUidMaintenanceUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1MachineMaintenance" + }, + "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 + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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 + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates the specified machine maintenance", - "tags": [ - "cloudconfigs" - ] - } - }, - "/v1/cloudconfigs/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}/maintenance/status": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" + "type": { + "type": "string", + "default": "spectro", + "enum": [ + "spectro", + "helm", + "manifest", + "oci" + ] }, - { - "description": "Machine uid", - "in": "path", - "name": "machineUid", - "required": true, + "values": { + "description": "Pack values", "type": "string" }, - { - "description": "Cloud type", - "in": "path", - "name": "cloudType", - "required": true, + "version": { + "description": "Pack version", "type": "string" } - ], - "put": { - "operationId": "v1CloudConfigsMachinePoolsMachineUidMaintenanceStatusUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1MachineMaintenanceStatus" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified machine maintenance", - "tags": [ - "cloudconfigs" - ] } }, - "/v1/cloudconfigs/{configUid}/machinePools/machineUids": { - "get": { - "operationId": "v1CloudConfigsMachinePoolsMachineUidsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1MachinePoolsMachineUids" - } - } + "v1PackSummaryStatus": { + "description": "Pack status", + "type": "object" + }, + "v1PackTagEntity": { + "description": "Pack object", + "type": "object", + "properties": { + "addonSubType": { + "description": "Pack add-on sub type such as monitoring, db etc", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cloud config's machine pools and machine uid", - "tags": [ - "cloudconfigs" - ] - }, - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, + "addonType": { + "description": "Pack add-on type such as logging, monitoring, security etc", "type": "string" - } - ] - }, - "/v1/clouds/aws/account/sts": { - "get": { - "operationId": "V1AwsAccountStsGet", - "parameters": [ - { - "default": "aws", - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "enum": [ - "aws", - "aws-us-gov" - ], - "in": "query", - "name": "partition", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/V1AwsAccountSts" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves AWS external id and account id", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/aws/account/validate": { - "post": { - "operationId": "V1AwsAccountValidate", - "parameters": [ - { - "description": "Request payload to validate AWS cloud account", - "in": "body", - "name": "awsCloudAccount", - "required": true, - "schema": { - "$ref": "#/definitions/v1AwsCloudAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "cloudTypes": { + "description": "Pack supported cloud types", + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validate the specified AWS account credentials", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/aws/cloudwatch/validate": { - "post": { - "description": "Validates aws cloud watch credentials", - "operationId": "V1CloudsAwsCloudWatchValidate", - "parameters": [ - { - "description": "Request payload for cloud watch config", - "in": "body", - "name": "cloudWatchConfig", - "required": true, - "schema": { - "$ref": "#/definitions/v1.CloudWatchConfig" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "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" } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "validates aws cloud watch credentials", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/aws/cost": { - "post": { - "operationId": "v1AwsCloudCost", - "parameters": [ - { - "description": "Request payload for AWS cloud cost", - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1AwsCloudCostSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1PackTags": { + "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" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsCloudCostSummary" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves AWS cloud account usage cost from cost explorer.", - "tags": [ - "clouds" - ] + "tag": { + "description": "Pack version tag", + "type": "string" + }, + "version": { + "description": "Pack version", + "type": "string" + } } }, - "/v1/clouds/aws/imageIds/{imageId}/volumeSize": { - "get": { - "description": "Get AWS Volume Size", - "operationId": "V1AwsVolumeSizeGet", - "parameters": [ - { - "description": "Specific AWS Region", - "in": "query", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "AWS image id", - "in": "path", - "name": "imageId", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsVolumeSize" + "v1PackTemplate": { + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get AWS Volume Size", - "tags": [ - "clouds" - ] + "values": { + "description": "Pack template values", + "type": "string" + } } }, - "/v1/clouds/aws/policies": { - "post": { - "operationId": "V1AwsIamPolicies", - "parameters": [ - { - "description": "Request payload for AWS Cloud Account", - "in": "body", - "name": "account", - "required": true, - "schema": { - "$ref": "#/definitions/v1AwsCloudAccount" - } - }, - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1PackTemplateParameter": { + "description": "Pack template parameter", + "properties": { + "description": { + "description": "Pack template parameter description", + "type": "string" + }, + "displayName": { + "description": "Pack template parameter display name", + "type": "string" + }, + "format": { + "description": "Pack template parameter format", + "type": "string" + }, + "hidden": { + "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", + "type": "boolean" + }, + "listOptions": { + "description": "Pack template parameter list options as string array", + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsPolicies" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of AWS policies for the specified account", - "tags": [ - "clouds" - ] + "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" + } } }, - "/v1/clouds/aws/policyArns/validate": { - "post": { - "operationId": "V1AwsPolicyArnsValidate", - "parameters": [ - { - "description": "Request payload to validate AWS policy ARN", - "in": "body", - "name": "spec", - "required": true, - "schema": { - "$ref": "#/definitions/v1AwsPolicyArnsSpec" - } - }, - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1PackTemplateParameterOption": { + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validate the aws policy arns validate", - "tags": [ - "clouds" - ] + "description": { + "description": "Pack template parameter description", + "type": "string" + }, + "label": { + "description": "Pack template parameter label", + "type": "string" + } } }, - "/v1/clouds/aws/properties/validate": { - "post": { - "operationId": "V1AwsPropertiesValidate", - "parameters": [ - { - "description": "Request payload for AWS properties validate spec", - "in": "body", - "name": "properties", - "required": true, - "schema": { - "$ref": "#/definitions/V1AwsPropertiesValidateSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1PackTemplateParameters": { + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Validate AWS properties", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/aws/regions": { - "get": { - "operationId": "V1AwsRegions", - "parameters": [ - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1PackType": { + "type": "string", + "default": "spectro", + "enum": [ + "spectro", + "helm", + "manifest", + "oci" + ] + }, + "v1PackUidValues": { + "type": "object", + "properties": { + "annotations": { + "description": "Pack annotations is used to allow pack to add more arbitrary configurations", + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsRegions" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of AWS regions for the specified account", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/aws/regions/{region}/availabilityzones": { - "get": { - "operationId": "V1AwsZones", - "parameters": [ - { - "description": "Region for which zones are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "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 + } + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsAvailabilityZones" + }, + "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 + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Retrieves a list of AWS availability zones for the specified region", - "tags": [ - "clouds" - ] + }, + "values": { + "description": "Pack values represents the values.yaml used as input parameters", + "type": "string" + } } }, - "/v1/clouds/aws/regions/{region}/copydefaultimages": { - "post": { - "operationId": "V1AwsCopyImageFromDefaultRegion", - "parameters": [ - { - "description": "Region to copy AWS image from", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Request payload to copy the AWS image", - "in": "body", - "name": "spectroClusterAwsImageTag", - "schema": { - "$ref": "#/definitions/v1AwsFindImageRequest" + "v1PackUpdateEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AsyncOperationIdEntity" + } + } + }, + "v1PackValuesEntity": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Copies the specified image from one region to another region", - "tags": [ - "clouds" - ] + "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" + } } }, - "/v1/clouds/aws/regions/{region}/eksClusters/name/validate": { - "get": { - "description": "Returns no contents if aws cluster name is valid else error.", - "operationId": "V1AwsClusterNameValidate", - "parameters": [ - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "cluster name to be validated", - "in": "query", - "name": "name", - "required": true, - "type": "string" - }, - { - "description": "Region for which cluster name is validated", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1PacksFilterSpec": { + "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" + ] + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } + } } - ], - "summary": "Check if Aws cluster name is valid", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/aws/regions/{region}/images": { - "post": { - "operationId": "V1AwsFindImage", - "parameters": [ - { - "description": "Region to find AWS image", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Request payload to find the AWS image", - "in": "body", - "name": "awsImageRequest", - "schema": { - "$ref": "#/definitions/v1AwsFindImageRequest" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsImage" - } - } + "v1PairingCode": { + "description": "Pairing code response", + "type": "object", + "properties": { + "pairingCode": { + "type": "string" + } + } + }, + "v1Partition": { + "type": "object", + "properties": { + "fileSystemType": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns AWS image for the specified AMI name", - "tags": [ - "clouds" - ] + "freeSpace": { + "type": "integer", + "format": "int32" + }, + "mountPoint": { + "type": "string" + }, + "totalSpace": { + "type": "integer", + "format": "int32" + }, + "usedSpace": { + "type": "integer", + "format": "int32" + } } }, - "/v1/clouds/aws/regions/{region}/instancetypes": { - "get": { - "operationId": "V1AwsInstanceTypes", - "parameters": [ - { - "description": "Region for which AWS instances are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Filter for instances having cpu greater than or equal", - "format": "double", - "in": "query", - "name": "cpuGtEq", - "type": "number" - }, - { - "description": "Filter for instances having memory greater than or equal", - "format": "double", - "in": "query", - "name": "memoryGtEq", - "type": "number" - }, - { - "description": "Filter for instances having gpu greater than or equal", - "format": "double", - "in": "query", - "name": "gpuGtEq", - "type": "number" - }, - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1PasswordsBlockListEntity": { + "description": "List of block listed passwords", + "type": "object", + "properties": { + "passwords": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsInstanceTypes" + } + } + }, + "v1PaymentIntent": { + "description": "Payment setup object", + "properties": { + "clientSecret": { + "description": "Payment client secret", + "type": "string" + }, + "paymentIntentId": { + "description": "Payment intent id", + "type": "string" + }, + "status": { + "description": "Status of payment intent", + "type": "string" + } + } + }, + "v1PaymentMethod": { + "description": "Payment method object", + "properties": { + "card": { + "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", + "type": "number", + "format": "uint64" + }, + "expYear": { + "description": "Expiry year of the card", + "type": "number", + "format": "uint64" + }, + "fingerPrint": { + "description": "Finger print", + "type": "string" + }, + "funding": { + "description": "Funding", + "type": "string" + }, + "last4": { + "description": "Last 4 digit of the card", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of AWS instance types", - "tags": [ - "clouds" - ] + "customerId": { + "description": "Customer uid", + "type": "string" + }, + "firstName": { + "description": "First name of the user", + "type": "string" + }, + "lastName": { + "description": "Last name of the user", + "type": "string" + }, + "paymentMethodId": { + "description": "Payment method uid", + "type": "string" + } } }, - "/v1/clouds/aws/regions/{region}/keypairs": { - "get": { - "operationId": "V1AwsKeyPairs", - "parameters": [ - { - "description": "Region for which AWS key pairs are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsKeyPairs" + "v1PaymentMethods": { + "description": "Payment Method list", + "properties": { + "defaultPaymentMethod": { + "description": "Default payment method", + "type": "string" + }, + "paymentMethods": { + "description": "List of payment method", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Payment method object", + "properties": { + "card": { + "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", + "type": "number", + "format": "uint64" + }, + "expYear": { + "description": "Expiry year of the card", + "type": "number", + "format": "uint64" + }, + "fingerPrint": { + "description": "Finger print", + "type": "string" + }, + "funding": { + "description": "Funding", + "type": "string" + }, + "last4": { + "description": "Last 4 digit of the card", + "type": "string" + } + } + }, + "customerId": { + "description": "Customer uid", + "type": "string" + }, + "firstName": { + "description": "First name of the user", + "type": "string" + }, + "lastName": { + "description": "Last name of the user", + "type": "string" + }, + "paymentMethodId": { + "description": "Payment method uid", + "type": "string" + } } } + } + } + }, + "v1PaymentPlan": { + "description": "Stripe price detail object", + "properties": { + "billingScheme": { + "description": "Billing scheme", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of AWS keypairs", - "tags": [ - "clouds" - ] + "currency": { + "description": "Unit of currency", + "type": "string" + }, + "id": { + "description": "Stripe payment plan id", + "type": "string" + }, + "name": { + "description": "Name of the stripe plan", + "type": "string" + }, + "productId": { + "description": "Product identifier", + "type": "string" + }, + "type": { + "description": "Type of payment plan", + "type": "string" + }, + "unitAmount": { + "description": "Unit amount for the product", + "type": "number", + "format": "int64" + } } }, - "/v1/clouds/aws/regions/{region}/keypairs/{keypair}/validate": { - "post": { - "operationId": "V1AwsKeyPairValidate", - "parameters": [ - { - "description": "Region for which AWS key pairs is validated", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "AWS Key pair which is to be validated", - "in": "path", - "name": "keypair", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1PaymentPlans": { + "description": "Payment plan object model", + "type": "object", + "required": [ + "stripePlanDetails" + ], + "properties": { + "stripePlanDetails": { + "description": "List of Stripe plan details", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Stripe price detail object", + "properties": { + "billingScheme": { + "description": "Billing scheme", + "type": "string" + }, + "currency": { + "description": "Unit of currency", + "type": "string" + }, + "id": { + "description": "Stripe payment plan id", "type": "string" + }, + "name": { + "description": "Name of the stripe plan", + "type": "string" + }, + "productId": { + "description": "Product identifier", + "type": "string" + }, + "type": { + "description": "Type of payment plan", + "type": "string" + }, + "unitAmount": { + "description": "Unit amount for the product", + "type": "number", + "format": "int64" } } } + } + } + }, + "v1PaymentSecrets": { + "description": "payment secrets", + "properties": { + "publishableKey": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validate the specified AWS keypair", - "tags": [ - "clouds" - ] + "secretKey": { + "type": "string" + } } }, - "/v1/clouds/aws/regions/{region}/kms/{keyId}": { - "get": { - "operationId": "V1AwsKmsKeyGet", - "parameters": [ - { - "description": "Region for which AWS KMS key belongs", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "The globally unique identifier for the KMS key", - "in": "path", - "name": "keyId", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsKmsKeyEntity" + "v1PaymentSubscription": { + "description": "Payment subscription object", + "properties": { + "customerId": { + "description": "Customer uid", + "type": "string" + }, + "paymentIntent": { + "description": "Payment setup object", + "properties": { + "clientSecret": { + "description": "Payment client secret", + "type": "string" + }, + "paymentIntentId": { + "description": "Payment intent id", + "type": "string" + }, + "status": { + "description": "Status of payment intent", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "paymentMethodIds": { + "description": "List of payment method uids", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Get AWS KMS key by Id", - "tags": [ - "clouds" - ] + }, + "planType": { + "description": "Plan type", + "type": "string" + }, + "priceId": { + "description": "Price uid", + "type": "string" + }, + "subscriptionId": { + "description": "Subscription uid", + "type": "string" + }, + "subscriptionState": { + "description": "Plan subscription state", + "type": "string" + } + } + }, + "v1PcgSelfHostedParams": { + "properties": { + "cloudType": { + "type": "string" + }, + "name": { + "type": "string" + } } }, - "/v1/clouds/aws/regions/{region}/kmskeys": { - "get": { - "operationId": "V1AwsKmsKeys", - "parameters": [ - { - "description": "Region for which AWS KMS key are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1PcgServiceKubectlCommands": { + "description": "Array of kubectl commands", + "type": "object", + "required": [ + "kubectlCommands" + ], + "properties": { + "kubectlCommands": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsKmsKeys" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of AWS KMS keys for the specified account", - "tags": [ - "clouds" - ] + "overlordUid": { + "type": "string" + } } }, - "/v1/clouds/aws/regions/{region}/kmskeys/validate": { - "get": { - "operationId": "V1AwsKmsKeyValidate", - "parameters": [ - { - "description": "Region for which AWS KMS key is validated", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "AWS KEY ARN for validation", - "in": "query", - "name": "keyArn", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1PcgsSummary": { + "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" + } + } } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Validate an Aws KMS key for the specified account", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/aws/regions/{region}/storagetypes": { - "get": { - "operationId": "V1AwsStorageTypes", - "parameters": [ - { - "description": "Region for which AWS storage types are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1Permission": { + "description": "Permission information", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsStorageTypes" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of AWS storage types", - "tags": [ - "clouds" - ] + "scope": { + "type": "string", + "enum": [ + "system", + "tenant", + "project", + "resource" + ] + } } }, - "/v1/clouds/aws/regions/{region}/vpcs": { - "get": { - "operationId": "V1AwsVpcs", - "parameters": [ - { - "description": "Region for which VPCs are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, + "v1Permissions": { + "description": "Array of permissions", + "type": "array", + "items": { + "description": "Permission information", + "type": "object", + "properties": { + "name": { "type": "string" }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsVpcs" + "permissions": { + "type": "array", + "items": { + "type": "string" } - } - }, - "security": [ - { - "ApiKey": [] }, - { - "Authorization": [] + "scope": { + "type": "string", + "enum": [ + "system", + "tenant", + "project", + "resource" + ] } - ], - "summary": "Retrieves a list of VPCs for the specified account", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/aws/s3/validate": { - "post": { - "operationId": "V1AwsS3Validate", - "parameters": [ - { - "description": "AWS S3 bucket credentials", - "in": "body", - "name": "awsS3Credential", - "required": true, - "schema": { - "$ref": "#/definitions/v1AwsS3BucketCredentials" + "v1Plan": { + "description": "Plan", + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "spec": { + "description": "Plan specifications", + "required": [ + "type", + "start", + "expiry" + ], + "properties": { + "cost": { + "description": "Plan Cost", + "properties": { + "discount": { + "type": "number", + "format": "float", + "x-omitempty": false + }, + "price": { + "type": "number", + "format": "float", + "x-omitempty": false + } + } + }, + "developerCredits": { + "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 + } + } + }, + "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" + }, + "freeCredits": { + "type": "array", + "items": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + } + }, + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + } + } + }, + "renewal": { + "description": "Plan Renewal", + "required": [ + "type", + "start", + "expiry" + ], + "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" + }, + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + } + } + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + } } + }, + "slaCredits": { + "type": "array", + "items": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + } + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "tierPricing": { + "description": "tier price", + "properties": { + "alloyPricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } + } + }, + "purePricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } + } + } + } + }, + "type": { + "type": "string", + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "type": "object", + "properties": { + "changeLogs": { + "type": "array", + "items": { + "type": "string" + } + } } - ], - "summary": "Validate the AWS S3 bucket", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/aws/securitygroups": { - "get": { - "operationId": "V1AwsSecurityGroups", - "parameters": [ - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Region for which security groups are requested", - "in": "query", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Vpc Id for which security groups are requested", - "in": "query", - "name": "vpcId", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AwsSecurityGroups" + "v1PlanAddFreeCreditUpdate": { + "description": "Plan add free credit update entity", + "properties": { + "credit": { + "description": "Plan Credit entity for create/update request", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of AWS security groups for the specified account", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/aws/volumeTypes": { - "get": { - "description": "List all AWS Volume Types", - "operationId": "V1AwsVolumeTypesGet", - "parameters": [ - { - "description": "Specific AWS Region", - "in": "query", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AWSVolumeTypes" + "v1PlanAddSlaCreditUpdate": { + "description": "Plan add sla credit update entity", + "properties": { + "credit": { + "description": "Plan Credit entity for create/update request", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get all AWS Volume Types", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/azure/account/validate": { - "post": { - "description": "Returns no contents if account is valid else error.", - "operationId": "V1AzureAccountValidate", - "parameters": [ - { - "description": "Request payload for Azure cloud account", - "in": "body", - "name": "azureCloudAccount", - "required": true, - "schema": { - "$ref": "#/definitions/v1AzureCloudAccount" + "v1PlanChangeUpdate": { + "description": "Plan change update entity", + "required": [ + "type", + "start", + "expiry" + ], + "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" + }, + "isPaymentGateway": { + "type": "boolean" + }, + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "tierPrice": { + "description": "tier price", + "properties": { + "alloyPricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } + } + }, + "purePricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Check if Azure account is valid", - "tags": [ - "clouds" - ] + "type": { + "type": "string", + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + } } }, - "/v1/clouds/azure/groups": { - "get": { - "operationId": "V1AzureGroups", - "parameters": [ - { - "description": "Uid for the specific Azure cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureGroups" - } - } + "v1PlanCost": { + "description": "Plan Cost", + "properties": { + "discount": { + "type": "number", + "format": "float", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Azure groups", - "tags": [ - "clouds" - ] + "price": { + "type": "number", + "format": "float", + "x-omitempty": false + } } }, - "/v1/clouds/azure/regions": { - "get": { - "operationId": "V1AzureRegions", - "parameters": [ - { - "description": "Uid for the specific Azure cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "SubscriptionId for which resources is requested", - "in": "query", - "name": "subscriptionId", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureRegions" + "v1PlanCpuCoreHoursUsages": { + "type": "object", + "properties": { + "hourlyUsages": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "ResourceUsage", + "properties": { + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "project resource usage", + "properties": { + "alloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "project": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "pureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } + } + } + }, + "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" + }, + "totalAlloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "totalPureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } } } + } + } + }, + "v1PlanCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Azure regions", - "tags": [ - "clouds" - ] + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } } }, - "/v1/clouds/azure/regions/{region}/instancetypes": { - "get": { - "operationId": "V1AzureInstanceTypes", - "parameters": [ - { - "description": "Region for which Azure instance types are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Filter for instances having cpu greater than or equal", - "format": "double", - "in": "query", - "name": "cpuGtEq", - "type": "number" - }, - { - "description": "Filter for instances having memory greater than or equal", - "format": "double", - "in": "query", - "name": "memoryGtEq", - "type": "number" - }, - { - "description": "Filter for instances having gpu greater than or equal", - "format": "double", - "in": "query", - "name": "gpuGtEq", - "type": "number" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1PlanCreditEntity": { + "description": "Plan Credit entity for create/update request", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + }, + "v1PlanCreditUpdate": { + "description": "Plan credit update entity", + "properties": { + "credit": { + "description": "Plan Credit entity for create/update request", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureInstanceTypes" + } + } + }, + "v1PlanExpiry": { + "description": "Plan expiry", + "required": [ + "expiry" + ], + "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" + } + } + }, + "v1PlanLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } } - ], - "summary": "Retrieves a list of Azure instance types", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/azure/regions/{region}/storagetypes": { - "get": { - "operationId": "V1AzureStorageTypes", - "parameters": [ - { - "description": "Region for which Azure storage types are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1PlanLimitSpec": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "v1PlanLimitUpdate": { + "description": "Plan limit change update entity", + "required": [ + "planLimit" + ], + "properties": { + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureStorageTypes" + } + } + }, + "v1PlanMonthlyUsage": { + "description": "Plan monthly usage entity", + "properties": { + "dailyUsages": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "ResourceUsage", + "properties": { + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "project resource usage", + "properties": { + "alloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "project": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "pureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } + } + } + }, + "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" + }, + "totalAlloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "totalPureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "month": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + } } - ], - "summary": "Retrieves a list of Azure storage types", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/aksClusters/name/validate": { - "get": { - "description": "Returns no contents if Azure cluster name is valid else error.", - "operationId": "V1AzureClusterNameValidate", - "parameters": [ - { - "description": "Uid for the specific Azure cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "cluster name to be validated", - "in": "query", - "name": "name", - "required": true, - "type": "string" - }, - { - "description": "region in which cluster name is to be validated", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "subscriptionId in which cluster name is to be validated", - "in": "path", - "name": "subscriptionId", - "required": true, - "type": "string" - }, - { - "description": "resourceGroup in which cluster name is to be validated", - "in": "query", - "name": "resourceGroup", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + }, + "planType": { + "type": "string", + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + }, + "planUid": { + "type": "string" + }, + "totalMonthlyUsage": { + "description": "Total Resource Usage", + "properties": { + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "project resource usage", + "properties": { + "alloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "project": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "pureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } + } + } + }, + "totalAlloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "totalPureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1PlanMonthlyUsages": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "description": "Plan monthly usage entity", + "properties": { + "dailyUsages": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "ResourceUsage", + "properties": { + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "project resource usage", + "properties": { + "alloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "project": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "pureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } + } + } + }, + "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" + }, + "totalAlloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "totalPureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } + } + } + }, + "month": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + } + } + }, + "planType": { + "type": "string", + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + }, + "planUid": { "type": "string" + }, + "totalMonthlyUsage": { + "description": "Total Resource Usage", + "properties": { + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "project resource usage", + "properties": { + "alloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "project": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "pureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } + } + } + }, + "totalAlloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "totalPureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } + } } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Check if Azure cluster name is valid", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/networks": { - "get": { - "operationId": "V1AzureVirtualNetworkList", - "parameters": [ - { - "description": "Uid for the specific Azure cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Region for which Azure virtual networks are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for which Azure virtual networks are requested", - "in": "path", - "name": "subscriptionId", - "required": true, - "type": "string" - }, - { - "description": "Resource group for which Azure virtual networks are requested", - "in": "query", - "name": "resourceGroup", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureVirtualNetworkList" + "v1PlanRenewal": { + "description": "Plan Renewal", + "required": [ + "type", + "start", + "expiry" + ], + "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" + }, + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + } + } + }, + "v1PlanRenewalUpdate": { + "description": "Plan add renawal update entity", + "properties": { + "renewal": { + "description": "Plan Renewal", + "required": [ + "type", + "start", + "expiry" + ], + "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" + }, + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + } + } + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + } } - ], - "summary": "Retrieves a list of Azure virtual network list for the sepcified account", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/resourceGroups": { - "get": { - "operationId": "V1AzureResourceGroupList", - "parameters": [ - { - "description": "Uid for the specific Azure cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Region for which Azure resource group are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for which Azure resource group are requested", - "in": "path", - "name": "subscriptionId", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1PlanSpec": { + "description": "Plan specifications", + "required": [ + "type", + "start", + "expiry" + ], + "properties": { + "cost": { + "description": "Plan Cost", + "properties": { + "discount": { + "type": "number", + "format": "float", + "x-omitempty": false + }, + "price": { + "type": "number", + "format": "float", + "x-omitempty": false + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureResourceGroupList" + }, + "developerCredits": { + "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 } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + }, + "freeCredits": { + "type": "array", + "items": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } } - ], - "summary": "Retrieves a list of Azure resource group for the specified account", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/azure/regions/{region}/zones": { - "get": { - "operationId": "V1AzureZones", - "parameters": [ - { - "description": "Region for which Azure zones are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific Azure cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "subscriptionId of azure account", - "in": "query", - "name": "subscriptionId", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + }, + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureZoneEntity" + }, + "renewal": { + "description": "Plan Renewal", + "required": [ + "type", + "start", + "expiry" + ], + "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" + }, + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + } + } + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "slaCredits": { + "type": "array", + "items": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } } - ], - "summary": "Retrieves a list of Azure zones for the specified region", - "tags": [ - "clouds" - ] + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "tierPricing": { + "description": "tier price", + "properties": { + "alloyPricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } + } + }, + "purePricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } + } + } + } + }, + "type": { + "type": "string", + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + } } }, - "/v1/clouds/azure/resourceGroups/{resourceGroup}/privateDnsZones": { - "get": { - "description": "Returns Azure private DNS zones", - "operationId": "V1AzurePrivateDnsZones", - "parameters": [ - { - "description": "resourceGroup for which Azure private dns zones are requested", - "in": "path", - "name": "resourceGroup", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific Azure cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "subscriptionId for which Azure private dns zones are requested", - "in": "query", - "name": "subscriptionId", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1PlanStatus": { + "type": "object", + "properties": { + "changeLogs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzurePrivateDnsZones" + } + } + }, + "v1Plans": { + "description": "Array of Plans", + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Plan", + "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": "Plan specifications", + "required": [ + "type", + "start", + "expiry" + ], + "properties": { + "cost": { + "description": "Plan Cost", + "properties": { + "discount": { + "type": "number", + "format": "float", + "x-omitempty": false + }, + "price": { + "type": "number", + "format": "float", + "x-omitempty": false + } + } + }, + "developerCredits": { + "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 + } + } + }, + "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" + }, + "freeCredits": { + "type": "array", + "items": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + } + }, + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + } + } + }, + "renewal": { + "description": "Plan Renewal", + "required": [ + "type", + "start", + "expiry" + ], + "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" + }, + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + } + } + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + } + } + }, + "slaCredits": { + "type": "array", + "items": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } + } + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "tierPricing": { + "description": "tier price", + "properties": { + "alloyPricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } + } + }, + "purePricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } + } + } + } + }, + "type": { + "type": "string", + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ] + } + } + }, + "status": { + "type": "object", + "properties": { + "changeLogs": { + "type": "array", + "items": { + "type": "string" + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Get Azure private DNS zones for the given resource group", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/azure/resourceGroups/{resourceGroup}/storageAccounts": { - "get": { - "description": "Returns Azure storage accounts.", - "operationId": "V1AzureStorageAccounts", - "parameters": [ - { - "description": "resourceGroup for which Azure storage accounts are requested", - "in": "path", - "name": "resourceGroup", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific Azure cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "subscriptionId for which Azure storage accounts are requested", - "in": "query", - "name": "subscriptionId", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1PlansUsageComputeSpec": { + "description": "Plans usage compute spec", + "type": "object", + "properties": { + "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" + }, + "tenantUids": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureStorageAccounts" + } + } + }, + "v1PodAntiAffinity": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Get Azure storage accounts", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/azure/resourceGroups/{resourceGroup}/storageAccounts/{storageAccountName}/containers": { - "get": { - "description": "Returns Azure storage containers for the given account.", - "operationId": "V1AzureStorageContainers", - "parameters": [ - { - "description": "resourceGroup for which Azure storage accounts are requested", - "in": "path", - "name": "resourceGroup", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific Azure cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "subscriptionId for which Azure storage accounts are requested", - "in": "query", - "name": "subscriptionId", - "required": true, - "type": "string" - }, - { - "description": "resourceGroup for which Azure storage accounts are requested", - "in": "path", - "name": "storageAccountName", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureStorageContainers" + "v1Pool": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get Azure storage containers", - "tags": [ - "clouds" - ] + "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" + } } }, - "/v1/clouds/azure/storageaccounttypes": { - "get": { - "description": "Returns Azure storage account types.", - "operationId": "V1AzureStorageAccountTypes", - "parameters": [ - { - "description": "Region for which Azure storage account types are requested", - "in": "query", - "name": "region", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureStorageAccountEntity" + "v1PriceRange": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } + }, + "v1PrivateCloudRateConfig": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + }, + "v1ProductUsage": { + "description": "Product usage", + "properties": { + "alloyUsage": { + "description": "Yearly usage", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "breachedCredits": { + "description": "Credits exceeded the allocated and free credits", + "type": "number", + "format": "float64" + }, + "freeSlaCredits": { + "description": "Free allocated SLA credits", + "type": "number", + "format": "int64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "pureUsage": { + "description": "Yearly usage", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "breachedCredits": { + "description": "Credits exceeded the allocated and free credits", + "type": "number", + "format": "float64" + }, + "freeSlaCredits": { + "description": "Free allocated SLA credits", + "type": "number", + "format": "int64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } } - ], - "summary": "Get Azure storage account types", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/azure/subscriptions": { - "get": { - "description": "Returns list of Azure subscription list.", - "operationId": "V1AzureSubscriptionList", - "parameters": [ - { - "description": "Uid for the specific Azure cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureSubscriptionList" + "v1ProfileMetaEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "description": "Cluster profile update spec", + "type": "object", + "properties": { + "version": { + "description": "Cluster profile version", + "type": "string" + } } - ], - "summary": "Retrieves a list of Azure subscription list for the specified account", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/azure/vhds/{vhd}/url": { - "get": { - "operationId": "V1AzureVhdUrl", - "parameters": [ - { - "description": "vhd location for which Azure vhd url is requested", - "in": "path", - "name": "vhd", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1ProfileResolvedValues": { + "description": "Cluster profile resolved pack values", + "properties": { + "resolved": { + "description": "Cluster profile pack resolved values", + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1AzureVhdUrlEntity" + }, + "uid": { + "description": "Cluster profile uid", + "type": "string" + } + } + }, + "v1ProfileStatus": { + "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 + } + } + }, + "v1ProfileTemplateSummary": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the Azure vhd url for the specified vhd location", - "tags": [ - "clouds" - ] + "type": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "version": { + "type": "string" + } } }, - "/v1/clouds/cloudTypes": { - "get": { - "operationId": "V1CustomCloudTypesGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1ProfileType": { + "type": "string", + "default": "cluster", + "enum": [ + "cluster", + "infra", + "add-on", + "system" + ] + }, + "v1Project": { + "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" + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CustomCloudTypes" + }, + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the custom cloud types", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/cloudTypes/register": { - "post": { - "operationId": "V1CustomCloudTypeRegister", - "parameters": [ - { - "description": "Request payload to register custom cloud type", - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CustomCloudRequestEntity" + "v1ProjectActiveAppDeployment": { + "description": "Active app deployment", + "type": "object", + "properties": { + "appRef": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "state": { + "type": "string" + } + } + }, + "v1ProjectActiveAppDeployments": { + "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" + } + } + }, + "v1ProjectActiveCluster": { + "description": "Active clusters", + "type": "object", + "properties": { + "clusterRef": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "uid": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Registers the custom cloud type", - "tags": [ - "clouds" - ] + "state": { + "type": "string" + } } }, - "/v1/clouds/cloudTypes/{cloudType}": { - "delete": { - "operationId": "V1CustomCloudTypesDelete", - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1ProjectActiveClusters": { + "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" + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the custom cloud type", - "tags": [ - "clouds" - ] + "count": { + "type": "integer", + "format": "int32" + } } }, - "/v1/clouds/cloudTypes/{cloudType}/cloudAccountKeys": { - "get": { - "operationId": "V1CustomCloudTypeCloudAccountKeysGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1ProjectActiveResources": { + "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" + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CustomCloudTypeCloudAccountKeys" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns valid keys for the cloud account used for custom cloud type", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" } - ], - "put": { - "operationId": "V1CustomCloudTypeCloudAccountKeysUpdate", - "parameters": [ - { - "description": "Request payload for custom cloud meta entity", - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1CustomCloudTypeCloudAccountKeys" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "v1ProjectAlertComponent": { + "description": "Project alert component", + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "supportedChannels": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1ProjectAlertComponents": { + "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" + } } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the custom cloud type cloud account keys", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/cloudTypes/{cloudType}/content/bootstrap": { - "delete": { - "operationId": "V1CustomCloudTypeBootstrapDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1ProjectCleanUpStatus": { + "description": "Project cleanup status", + "type": "object", + "properties": { + "cleanedResources": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete the custom cloud type bootstrap", - "tags": [ - "clouds" - ] - }, - "get": { - "operationId": "V1CustomCloudTypeBootstrapGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + "msg": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1ProjectCleanup": { + "description": "Project delete request payload", + "properties": { + "deletingClusterDurationThresholdInMin": { + "type": "integer", + "format": "int32" + }, + "provisioningClusterDurationThresholdInMin": { + "type": "integer", + "format": "int32" + } + } + }, + "v1ProjectClusterSettings": { + "properties": { + "nodesAutoRemediationSetting": { + "properties": { + "disableNodesAutoRemediation": { + "type": "boolean", + "x-omitempty": false + }, + "isEnabled": { + "type": "boolean", + "x-omitempty": false } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "tenantClusterSettings": { + "properties": { + "nodesAutoRemediationSetting": { + "properties": { + "disableNodesAutoRemediation": { + "type": "boolean", + "x-omitempty": false + }, + "isEnabled": { + "type": "boolean", + "x-omitempty": false + } + } + } } - ], - "summary": "Returns the custom cloud type bootstrap", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" } - ], - "put": { - "consumes": [ - "multipart/form-data" - ], - "operationId": "V1CustomCloudTypeBootstrapUpdate", - "parameters": [ - { - "in": "formData", - "name": "fileName", - "type": "file" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1ProjectEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Update the custom cloud type bootstrap", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/cloudTypes/{cloudType}/content/cloudProvider": { - "delete": { - "operationId": "V1CustomCloudTypeCloudProviderDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1ProjectEntitySpec": { + "description": "Project specifications", + "properties": { + "logoUid": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete the custom cloud type cloud provider", - "tags": [ - "clouds" - ] - }, - "get": { - "operationId": "V1CustomCloudTypeCloudProviderGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + "teams": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "teamId": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "userId": { + "type": "string" + } + } } - ], - "summary": "Returns the custom cloud type cloud provider", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" } + } + }, + "v1ProjectFilterSortFields": { + "type": "string", + "enum": [ + "name", + "creationTimestamp", + "lastModifiedTimestamp" ], - "put": { - "consumes": [ - "multipart/form-data" - ], - "operationId": "V1CustomCloudTypeCloudProviderUpdate", - "parameters": [ - { - "in": "formData", - "name": "fileName", - "type": "file" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + "x-nullable": true + }, + "v1ProjectFilterSortSpec": { + "properties": { + "field": { + "type": "string", + "enum": [ + "name", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true + }, + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "v1ProjectFilterSpec": { + "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 } } + } + } + }, + "v1ProjectMeta": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the custom cloud type cloud provider", - "tags": [ - "clouds" - ] + "uid": { + "type": "string" + } } }, - "/v1/clouds/cloudTypes/{cloudType}/content/controlPlane": { - "delete": { - "operationId": "V1CustomCloudTypeControlPlaneDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1ProjectMetadata": { + "description": "Project metadata", + "properties": { + "metadata": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } + } + } + }, + "v1ProjectPatch": { + "type": "array", + "items": { + "type": "object", + "required": [ + "op", + "path" ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] + "properties": { + "from": { + "description": "A path to the pointer from which reference will be taken", + "type": "string" }, - { - "Authorization": [] - } - ], - "summary": "Delete the custom cloud type control plane", - "tags": [ - "clouds" - ] - }, - "get": { - "operationId": "V1CustomCloudTypeControlPlaneGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "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" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + } + } + }, + "v1ProjectResourceUsage": { + "description": "project resource usage", + "properties": { + "alloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "project": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the custom cloud type control plane", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" + "pureCpuCoreHours": { + "type": "number", + "x-omitempty": false } - ], - "put": { - "consumes": [ - "multipart/form-data" - ], - "operationId": "V1CustomCloudTypeControlPlaneUpdate", - "parameters": [ - { - "in": "formData", - "name": "fileName", - "type": "file" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1ProjectRolesEntity": { + "type": "object", + "properties": { + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "inheritedRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "uid": { "type": "string" } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the custom cloud type control plane", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/cloudTypes/{cloudType}/content/templates/clusterTemplate": { - "delete": { - "operationId": "V1CustomCloudTypeClusterTemplateDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1ProjectRolesPatch": { + "type": "object", + "properties": { + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "projectUid": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + } + } } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + } + } + }, + "v1ProjectSpec": { + "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" + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete the custom cloud type cluster template", - "tags": [ - "clouds" - ] - }, - "get": { - "operationId": "V1CustomCloudTypeClusterTemplateGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + "logoUrl": { + "type": "string" + }, + "teams": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "teamId": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "userId": { + "type": "string" + } + } } - ], - "summary": "Returns the custom cloud type cluster template", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" } - ], - "put": { - "consumes": [ - "multipart/form-data" - ], - "operationId": "V1CustomCloudTypeClusterTemplateUpdate", - "parameters": [ - { - "in": "formData", - "name": "fileName", - "type": "file" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1ProjectSpecSummary": { + "type": "object", + "properties": { + "logoUrl": { + "type": "string" + }, + "teams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { "type": "string" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "users": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } } - ], - "summary": "Update the custom cloud type cluster template", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/cloudTypes/{cloudType}/content/templates/controlPlanePoolTemplate": { - "delete": { - "operationId": "V1CustomCloudTypeControlPlanePoolTemplateDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1ProjectStatus": { + "description": "Project status", + "properties": { + "cleanUpStatus": { + "description": "Project cleanup status", + "type": "object", + "properties": { + "cleanedResources": { + "type": "array", + "items": { + "type": "string" + } + }, + "msg": { + "type": "string" + }, + "state": { + "type": "string" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete the custom cloud type controlPlane pool template", - "tags": [ - "clouds" - ] - }, - "get": { - "operationId": "V1CustomCloudTypeControlPlanePoolTemplateGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "isDisabled": { + "type": "boolean" + } + } + }, + "v1ProjectStatusSummary": { + "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 + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Returns the custom cloud type controlPlane pool template", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" } - ], - "put": { - "consumes": [ - "multipart/form-data" - ], - "operationId": "V1CustomCloudTypeControlPlanePoolTemplateUpdate", - "parameters": [ - { - "in": "formData", - "name": "fileName", - "type": "file" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1ProjectSummary": { + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } } - ], - "summary": "Update the custom cloud type controlPlane pool template", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/cloudTypes/{cloudType}/content/templates/workerPoolTemplate": { - "delete": { - "operationId": "V1CustomCloudTypeWorkerPoolTemplateDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1ProjectTeamsEntity": { + "properties": { + "teams": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "teamId": { + "type": "string" + } + } } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + } + } + }, + "v1ProjectUsage": { + "description": "Project usage object", + "properties": { + "alloy": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete the custom cloud type worker pool template", - "tags": [ - "clouds" - ] - }, - "get": { - "operationId": "V1CustomCloudTypeWorkerPoolTemplateGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + "pure": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" } } + } + } + }, + "v1ProjectUsageData": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "type": "number", + "format": "float64" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the custom cloud type worker pool template", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" + "tierPrice": { + "description": "Tier price based on the usage", + "type": "number", + "format": "float64" + }, + "usedCredits": { + "description": "Project used credits", + "type": "number", + "format": "float64" } - ], - "put": { - "consumes": [ - "multipart/form-data" - ], - "operationId": "V1CustomCloudTypeWorkerPoolTemplateUpdate", - "parameters": [ - { - "in": "formData", - "name": "fileName", - "type": "file" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1ProjectUsageSummary": { + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the custom cloud type worker pool template", - "tags": [ - "clouds" - ] + "pureCpuCores": { + "type": "number", + "x-omitempty": false + } } }, - "/v1/clouds/cloudTypes/{cloudType}/logo": { - "get": { - "operationId": "V1CustomCloudTypeLogoGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "Download the logo", - "headers": { - "Content-Disposition": { + "v1ProjectUsersEntity": { + "properties": { + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "userId": { "type": "string" } - }, - "schema": { - "format": "binary", - "type": "string" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the custom cloud type logo", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" } + } + }, + "v1Projects": { + "type": "object", + "required": [ + "items" ], - "put": { - "consumes": [ - "multipart/form-data" - ], - "operationId": "V1CustomCloudTypeLogoUpdate", - "parameters": [ - { - "in": "formData", - "name": "fileName", - "type": "file" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "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" + } + } } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Update the custom cloud type logo", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/cloudTypes/{cloudType}/meta": { - "get": { - "operationId": "V1CustomCloudTypeMetaGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CustomCloudMetaEntity" + "v1ProjectsFilterSpec": { + "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 + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } + } } - ], - "summary": "Returns the custom cloud type meta", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" } + } + }, + "v1ProjectsMetadata": { + "type": "object", + "required": [ + "items" ], - "put": { - "operationId": "V1CustomCloudTypeMetaUpdate", - "parameters": [ - { - "description": "Request payload for custom cloud meta entity", - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1CustomCloudRequestEntity" + "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" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + } + } + }, + "v1ProjectsSummary": { + "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 + } + } + } + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Update the custom cloud type meta", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/coxedge/account/validate": { - "post": { - "operationId": "V1CoxEdgeAccountValidate", - "parameters": [ - { - "description": "Request payload to validate CoxEdge cloud account", - "in": "body", - "name": "account", - "required": true, - "schema": { - "$ref": "#/definitions/v1CoxEdgeCloudAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1ProjectsWorkspaces": { + "description": "List projects and its workspaces", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "workspaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace users and their roles", + "properties": { + "inheritedRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "uid": { "type": "string" } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validate the specified CoxEdge account credentials", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/coxedge/default/baseurls": { - "get": { - "operationId": "V1CoxEdgeBaseUrls", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CoxEdgeBaseUrls" + "v1PublicCloudRateConfig": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } } - ], - "summary": "Retrieves a list of default base urls", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/coxedge/environments": { - "get": { - "operationId": "V1CoxEdgeEnvironmentsGet", - "parameters": [ - { - "description": "Uid for the specific CoxEdge cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "OrganizationId for the specific CoxEdge account", - "in": "query", - "name": "organizationId", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "List of CoxEdge environments", - "schema": { - "$ref": "#/definitions/v1CoxEdgeEnvironments" + "v1RateConfig": { + "description": "Rate config", + "properties": { + "aws": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of environments for the specified account", - "tags": [ - "clouds" - ] - }, - "post": { - "operationId": "V1CoxEdgeEnvironments", - "parameters": [ - { - "description": "Request payload to get CoxEdge environments", - "in": "body", - "name": "spec", - "required": true, - "schema": { - "$ref": "#/definitions/v1CoxEdgeEnvironmentsRequest" + "azure": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "List of CoxEdge environments", - "schema": { - "$ref": "#/definitions/v1CoxEdgeEnvironments" + }, + "coxedge": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of environments for baseUrl and apiKey", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/coxedge/organizations": { - "get": { - "operationId": "V1CoxEdgeOrganizationsGet", - "parameters": [ - { - "description": "Uid for the specific CoxEdge cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "List of CoxEdge organizations", - "schema": { - "$ref": "#/definitions/v1CoxEdgeOrganizations" + "custom": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Private cloud rate config", + "properties": { + "cloudType": { + "type": "string" + }, + "rateConfig": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of organizations for the specified account", - "tags": [ - "clouds" - ] - }, - "post": { - "operationId": "V1CoxEdgeOrganizations", - "parameters": [ - { - "description": "Request payload to get CoxEdge organizations", - "in": "body", - "name": "spec", - "required": true, - "schema": { - "$ref": "#/definitions/v1CoxEdgeCredentials" + "edge": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "List of CoxEdge organizations", - "schema": { - "$ref": "#/definitions/v1CoxEdgeOrganizations" + }, + "edgeNative": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of organizations for baseUrl and apiKey", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/coxedge/regions": { - "get": { - "operationId": "V1CoxEdgeRegions", - "parameters": [ - { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "CoxEdge organization id", - "in": "query", - "name": "organizationId", - "type": "string" - }, - { - "description": "CoxEdge service name", - "in": "query", - "name": "service", - "type": "string" - }, - { - "description": "CoxEdge environment name", - "in": "query", - "name": "environment", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "gcp": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + }, + "memoryOptimized": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "type": "number", + "format": "float" + }, + "memoryRateProportion": { + "type": "number", + "format": "float" + } + } + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CoxEdgeRegions" + }, + "generic": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "libvirt": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } } - ], - "summary": "Retrieves a list of CoxEdge regions for the specified account", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/coxedge/regions/{region}/instancetypes": { - "get": { - "operationId": "V1CoxEdgeInstanceTypes", - "parameters": [ - { - "description": "Region for which CoxEdge instances are listed", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Filter for instances having cpu greater than or equal", - "format": "double", - "in": "query", - "name": "cpuGtEq", - "type": "number" - }, - { - "description": "Filter for instances having memory greater than or equal", - "format": "double", - "in": "query", - "name": "memoryGtEq", - "type": "number" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + }, + "maas": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CoxEdgeInstanceTypes" + }, + "openstack": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "vsphere": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "gpuUnitPricePerHour": { + "type": "number", + "format": "float64" + }, + "memoryUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + }, + "storageUnitPriceGiBPerHour": { + "type": "number", + "format": "float64" + } } - ], - "summary": "Retrieves a list of CoxEdge instance types", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/coxedge/services": { - "get": { - "operationId": "V1CoxEdgeServicesGet", - "parameters": [ - { - "description": "Uid for the specific CoxEdge cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "OrganizationId for the specific CoxEdge account", - "in": "query", - "name": "organizationId", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "List of CoxEdge services", - "schema": { - "$ref": "#/definitions/v1CoxEdgeServices" + "v1RegistriesMetadata": { + "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" + } } } + } + } + }, + "v1RegistryAuth": { + "description": "Auth credentials of the registry", + "type": "object", + "properties": { + "password": { + "type": "string", + "format": "password" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of services for the specified account", - "tags": [ - "clouds" - ] - }, - "post": { - "operationId": "V1CoxEdgeServices", - "parameters": [ - { - "description": "Request payload to get CoxEdge services", - "in": "body", - "name": "spec", - "required": true, - "schema": { - "$ref": "#/definitions/v1CoxEdgeCredentials" + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CoxEdgeServices" + }, + "token": { + "type": "string", + "format": "password" + }, + "type": { + "type": "string", + "enum": [ + "noAuth", + "basic", + "token" + ] + }, + "username": { + "type": "string" + } + } + }, + "v1RegistryConf": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of services for baseUrl and apiKey", - "tags": [ - "clouds" - ] + "endpoint": { + "type": "string" + } } }, - "/v1/clouds/eks/properties/validate": { - "post": { - "operationId": "V1EksPropertiesValidate", - "parameters": [ - { - "description": "Request payload for EKS properties validate spec", - "in": "body", - "name": "properties", - "required": true, - "schema": { - "$ref": "#/definitions/V1EksPropertiesValidateSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + "v1RegistryConfigEntity": { + "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" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validate EKS properties", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/gcp/account/validate": { - "post": { - "operationId": "V1GcpAccountValidate", - "parameters": [ - { - "description": "Uid for the specific GCP cloud account", - "in": "body", - "name": "gcpCloudAccount", - "required": true, - "schema": { - "$ref": "#/definitions/v1GcpCloudAccountValidateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + "v1RegistryConfiguration": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validate the specified GCP account credentials", - "tags": [ - "clouds" - ] + "endpoint": { + "type": "string" + }, + "name": { + "type": "string" + } } }, - "/v1/clouds/gcp/azs/validate": { - "post": { - "operationId": "V1GcpAzValidate", - "parameters": [ - { - "description": "Uid for the specific GCP cloud account", - "in": "body", - "name": "entity", - "required": true, - "schema": { - "$ref": "#/definitions/v1AzValidateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1RegistryMetadata": { + "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" + } + } + }, + "v1RegistryPackMetadata": { + "description": "Registry metadata information", + "properties": { + "annotations": { + "description": "Pack annotations is used to allow pack to add more arbitrary configurations", + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "latestPackUid": { + "description": "Latest pack uid", + "type": "string" + }, + "latestVersion": { + "description": "Pack latest version", + "type": "string" + }, + "logoUrl": { + "description": "Pack logo url", + "type": "string" + }, + "name": { + "description": "Pack registry name", + "type": "string" + }, + "scope": { + "description": "Pack registry scope", + "type": "string" + }, + "uid": { + "description": "Pack registry uid", + "type": "string" + } + } + }, + "v1RegistrySyncStatus": { + "description": "Status of the registry sync", + "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" + } + } + }, + "v1RelatedObject": { + "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" + } + } + }, + "v1ReleaseDescription": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1ReleaseVersion": { + "description": "spectro application management release version information", + "properties": { + "date": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "releaseNotes": { + "type": "array", + "items": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { "type": "string" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validate the specified GCP az", - "tags": [ - "clouds" - ] + "version": { + "type": "string" + } } }, - "/v1/clouds/gcp/bucketname/validate": { - "post": { - "operationId": "V1GcpBucketNameValidate", - "parameters": [ - { - "description": "Request payload for GCP account name validate", - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1GcpAccountNameValidateSpec" + "v1ResourceCloudCostSummary": { + "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 + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + }, + "entity": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Validate the specified GCP bucket name credentials", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/gcp/image/container/validate": { - "get": { - "operationId": "V1GcpContainerImageValidate", - "parameters": [ - { - "description": "image path in the container", - "in": "query", - "name": "imagePath", - "required": true, - "type": "string" - }, - { - "description": "tag in the GCP container", - "in": "query", - "name": "tag", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1ResourceConsumption": { + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates the image with tag", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/gcp/images/{imageName}/url": { - "get": { - "operationId": "V1GcpImageUrl", - "parameters": [ - { - "description": "imageName for which GCP image url is requested", - "in": "path", - "name": "imageName", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1GcpImageUrlEntity" + "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 + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the Gcp image url for the specified image location", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/gcp/projects": { - "get": { - "operationId": "V1GcpProjects", - "parameters": [ - { - "description": "Uid for the specific GCP cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "entity": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1GcpProjects" + }, + "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 + } + } } } + } + } + }, + "v1ResourceConsumptionData": { + "description": "Resource cosumption data", + "type": "object", + "properties": { + "cpu": { + "type": "number", + "format": "float64", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of GCP projects for the specified account", - "tags": [ - "clouds" - ] + "memory": { + "type": "number", + "format": "float64", + "x-omitempty": false + } } }, - "/v1/clouds/gcp/projects/{project}/regions": { - "get": { - "operationId": "V1GcpRegions", - "parameters": [ - { - "description": "Uid for the specific GCP cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Project Name for which GCP zones are requested", - "in": "path", - "name": "project", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1GcpRegions" + "v1ResourceConsumptionDataPoint": { + "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 } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Retrieves a list of GCP regions", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/gcp/projects/{project}/regions/{region}/networks": { - "get": { - "operationId": "V1GcpNetworks", - "parameters": [ - { - "description": "Uid for the specific GCP cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Region for which GCP networks are requested", - "in": "path", - "name": "region", - "required": true, + "v1ResourceConsumptionFilter": { + "description": "Resource consumption filter", + "type": "object", + "properties": { + "clouds": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" - }, - { - "description": "Project Name for which GCP networks are requested", - "in": "path", - "name": "project", - "required": true, + } + }, + "clusters": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "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" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1GcpNetworks" - } + }, + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Retrieves a list of GCP networks for the specified account", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/gcp/projects/{project}/regions/{region}/zones": { - "get": { - "operationId": "V1GcpZones", - "parameters": [ - { - "description": "Uid for the specific GCP cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Region for which GCP zones are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Project Name for which GCP zones are requested", - "in": "path", - "name": "project", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1GcpZones" - } - } + "v1ResourceConsumptionOptions": { + "description": "Resource consumption options", + "type": "object", + "properties": { + "enableSummaryView": { + "type": "boolean", + "default": true }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of GCP zones for the specified account and region", - "tags": [ - "clouds" - ] + "groupBy": { + "type": "string", + "default": "namespace", + "enum": [ + "tenant", + "project", + "workspace", + "cluster", + "namespace", + "cloud" + ] + }, + "period": { + "type": "integer", + "format": "int32", + "default": 60 + } } }, - "/v1/clouds/gcp/projects/{project}/validate": { - "post": { - "operationId": "V1GcpProjectValidate", - "parameters": [ - { - "description": "GCP project uid", - "in": "path", - "name": "project", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific GCP cloud account", - "in": "body", - "name": "cloudAccountUid", - "required": true, - "schema": { - "$ref": "#/definitions/v1CloudAccountUidEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1ResourceConsumptionSpec": { + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Validate the specified GCP project", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/gcp/projects/{project}/zones": { - "get": { - "operationId": "V1GcpAvailabilityZones", - "parameters": [ - { - "description": "Uid for the specific GCP cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Project Name for which GCP zones are requested", - "in": "path", - "name": "project", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1GcpZones" + "v1ResourceCost": { + "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 } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of GCP zones for the specified account", - "tags": [ - "clouds" - ] + "total": { + "type": "number", + "format": "float64", + "x-omitempty": false + } } }, - "/v1/clouds/gcp/properties/validate": { - "post": { - "operationId": "V1GcpPropertiesValidate", - "parameters": [ - { - "description": "Request payload for GCP properties validate spec", - "in": "body", - "name": "properties", - "required": true, - "schema": { - "$ref": "#/definitions/V1GcpPropertiesValidateSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1ResourceCostDataPoint": { + "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 + } + } + }, + "v1ResourceCostSummary": { + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validate GCP properties", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/gcp/regions/{region}/instancetypes": { - "get": { - "operationId": "V1GcpInstanceTypes", - "parameters": [ - { - "description": "Region for which GCP instance types are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Filter for instances having cpu greater than or equal", - "format": "double", - "in": "query", - "name": "cpuGtEq", - "type": "number" - }, - { - "description": "Filter for instances having memory greater than or equal", - "format": "double", - "in": "query", - "name": "memoryGtEq", - "type": "number" - }, - { - "description": "Filter for instances having gpu greater than or equal", - "format": "double", - "in": "query", - "name": "gpuGtEq", - "type": "number" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "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 + } + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1GcpInstanceTypes" + }, + "entity": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Retrieves a list of GCP instance types", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/gcp/regions/{region}/storagetypes": { - "get": { - "operationId": "V1GcpStorageTypes", - "parameters": [ - { - "description": "Region for which GCP storage types are requested", - "in": "path", - "name": "region", - "required": true, + "v1ResourceCostSummaryFilter": { + "description": "Resource cost summary filter", + "type": "object", + "properties": { + "clouds": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "clusters": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1GcpStorageTypes" - } + }, + "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" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Retrieves a list of Gcp storage types", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/maas/account/validate": { - "post": { - "description": "Returns no contents if account is valid else error.", - "operationId": "V1MaasAccountValidate", - "parameters": [ - { - "description": "Request payload for Maas cloud account", - "in": "body", - "name": "account", - "required": true, - "schema": { - "$ref": "#/definitions/v1MaasCloudAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "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" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1ResourceCostSummaryOptions": { + "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 + } + } + }, + "v1ResourceCostSummarySpec": { + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Check if Maas account is valid", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/maas/azs": { - "get": { - "operationId": "V1MaasZonesGet", - "parameters": [ - { - "description": "Uid for the specific Maas cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1ResourceEntity": { + "type": "object", + "properties": { + "checks": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1MaasZones" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "data": { + "type": "object", + "additionalProperties": { + "type": "object" } - ], - "summary": "Retrieves a list of Maas zones for a particular account uid", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/maas/domains": { - "get": { - "operationId": "V1MaasDomainsGet", - "parameters": [ - { - "description": "Uid for the specific Maas cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1MaasDomains" - } - } + "v1ResourceGroup": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Maas domains", - "tags": [ - "clouds" - ] + "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/maas/resourcePools": { - "get": { - "operationId": "V1MaasPoolsGet", - "parameters": [ - { - "description": "Uid for the specific Maas cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1MaasPools" - } - } + "v1ResourceLimitType": { + "type": "string", + "enum": [ + "user", + "project", + "apiKey", + "team", + "role", + "cloudaccount", + "clusterprofile", + "workspace", + "registry", + "privategateway", + "location", + "certificate", + "macro", + "sshkey", + "alert", + "spectrocluster", + "edgehost", + "appprofile", + "appdeployment", + "edgetoken", + "clustergroup", + "filter", + "systemadmin" + ] + }, + "v1ResourceReference": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Maas pools for a particular account uid", - "tags": [ - "clouds" - ] + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } }, - "/v1/clouds/maas/subnets": { - "get": { - "operationId": "V1MaasSubnetsGet", - "parameters": [ - { - "description": "Uid for the specific Maas cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1MaasSubnets" + "v1ResourceRoles": { + "type": "object", + "properties": { + "resourceRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "filterRefs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "projectUids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "uid": { + "type": "string" + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Maas subnets for a particular account uid", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/maas/tags": { - "get": { - "operationId": "V1MaasTagsGet", - "parameters": [ - { - "description": "Uid for the specific Maas cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1MaasTags" + "v1ResourceRolesEntity": { + "type": "object", + "properties": { + "filterRefs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Maas tags for a particular account uid", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/openstack/account/validate": { - "post": { - "description": "Returns no contents if account is valid else error.", - "operationId": "V1OpenStackAccountValidate", - "parameters": [ - { - "description": "Request payload for OpenStack cloud account", - "in": "body", - "name": "openstackCloudAccount", - "required": true, - "schema": { - "$ref": "#/definitions/v1OpenStackCloudAccount" + "projectUids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { "type": "string" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Check if OpenStack account is valid", - "tags": [ - "clouds" - ] + "uid": { + "type": "string" + } } }, - "/v1/clouds/openstack/azs": { - "get": { - "operationId": "V1OpenStackAzsGet", - "parameters": [ - { - "description": "Uid for the specific OpenStack cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "project for which OpenStack azs are requested", - "in": "query", - "name": "project", - "type": "string" - }, - { - "description": "region for which OpenStack azs are requested", - "in": "query", - "name": "region", - "type": "string" - }, - { - "description": "domain for which OpenStack azs are requested", - "in": "query", - "name": "domain", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1ResourceRolesUpdateEntity": { + "type": "object", + "properties": { + "filterRefs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackAzs" - } + }, + "projectUids": { + "type": "array", + "items": { + "type": "string" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "roles": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Retrieves a list of OpenStack azs for a particular account uid", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/openstack/flavors": { - "get": { - "operationId": "V1OpenStackFlavorsGet", - "parameters": [ - { - "description": "Uid for the specific OpenStack cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "project for which OpenStack flavors are requested", - "in": "query", - "name": "project", - "type": "string" - }, - { - "description": "region for which OpenStack flavors are requested", - "in": "query", - "name": "region", - "type": "string" - }, - { - "description": "domain for which OpenStack flavors are requested", - "in": "query", - "name": "domain", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackFlavors" + "v1ResourceTotalCloudCost": { + "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 + } + } + }, + "v1ResourceTotalConsumptionData": { + "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 } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "usage": { + "description": "Resource cosumption data", + "type": "object", + "properties": { + "cpu": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "memory": { + "type": "number", + "format": "float64", + "x-omitempty": false + } } - ], - "summary": "Returns the OpenStack flavors", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/openstack/keypairs": { - "get": { - "operationId": "V1OpenStackKeypairsGet", - "parameters": [ - { - "description": "Uid for the specific OpenStack cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "project for which OpenStack keypairs are requested", - "in": "query", - "name": "project", - "type": "string" - }, - { - "description": "region for which OpenStack keypairs are requested", - "in": "query", - "name": "region", - "type": "string" - }, - { - "description": "domain for which OpenStack keypairs are requested", - "in": "query", - "name": "domain", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackKeypairs" + "v1ResourceTotalCost": { + "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 + } + } + }, + "v1ResourceUsage": { + "description": "ResourceUsage", + "properties": { + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "project resource usage", + "properties": { + "alloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "project": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "pureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the OpenStack keypair", - "tags": [ - "clouds" - ] + "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" + }, + "totalAlloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "totalPureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } } }, - "/v1/clouds/openstack/networks": { - "get": { - "operationId": "V1OpenStackNetworksGet", - "parameters": [ - { - "description": "Uid for the specific OpenStack cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "project for which OpenStack networks are requested", - "in": "query", - "name": "project", - "type": "string" - }, - { - "description": "region for which OpenStack networks are requested", - "in": "query", - "name": "region", - "type": "string" - }, - { - "description": "domain for which OpenStack networks are requested", - "in": "query", - "name": "domain", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackNetworks" + "v1ResourceUsageDataPoint": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the OpenStack networks", - "tags": [ - "clouds" - ] + }, + "memory": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "timestamp": { + "type": "number", + "format": "int64" + } } }, - "/v1/clouds/openstack/projects": { - "get": { - "operationId": "V1OpenStackProjectsGet", - "parameters": [ - { - "description": "Uid for the specific OpenStack cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1ResourceUsageMeteringDataPoint": { + "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" + } + } + }, + "v1ResourceUsageSummary": { + "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" + } + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackProjects" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "entity": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } - ], - "summary": "Returns the OpenStack projects", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/openstack/regions": { - "get": { - "operationId": "V1OpenStackRegionsGet", - "parameters": [ - { - "description": "Uid for the specific OpenStack cloud account", - "in": "query", - "name": "cloudAccountUid", + "v1ResourceUsageSummaryFilter": { + "description": "Resource usage summary filter", + "type": "object", + "properties": { + "clouds": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "clusters": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OpenStackRegions" - } + }, + "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" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "pods": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Returns the OpenStack regions", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/tencent/account/validate": { - "post": { - "operationId": "V1TencentAccountValidate", - "parameters": [ - { - "description": "Request payload to validate tencent cloud account", - "in": "body", - "name": "account", - "required": true, - "schema": { - "$ref": "#/definitions/v1TencentCloudAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "projects": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "workspaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Validate the specified Tencent account credentials", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/tencent/regions": { - "get": { - "operationId": "V1TencentRegions", - "parameters": [ - { - "description": "Uid for the specific Tencent cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TencentRegions" - } - } + "v1ResourceUsageSummaryOptions": { + "description": "Resource usage summary options", + "type": "object", + "properties": { + "enableSummaryView": { + "type": "boolean", + "default": true }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Tencent regions for the specified account", - "tags": [ - "clouds" - ] + "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 + } } }, - "/v1/clouds/tencent/regions/{region}/instancetypes": { - "get": { - "operationId": "V1TencentInstanceTypes", - "parameters": [ - { - "description": "Region for which tencent instances are listed", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Filter for instances having cpu greater than or equal", - "format": "double", - "in": "query", - "name": "cpuGtEq", - "type": "number" - }, - { - "description": "Filter for instances having memory greater than or equal", - "format": "double", - "in": "query", - "name": "memoryGtEq", - "type": "number" - }, - { - "description": "Filter for instances having gpu greater than or equal", - "format": "double", - "in": "query", - "name": "gpuGtEq", - "type": "number" - }, - { - "description": "Uid for the specific tencent cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TencentInstanceTypes" + "v1ResourceUsageSummarySpec": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Retrieves a list of Tencent instance types", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/tencent/regions/{region}/keypairs": { - "get": { - "operationId": "V1TencentKeypairs", - "parameters": [ - { - "description": "Region for which keypairs are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific Tencent cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1ResourceWorkloadFilter": { + "description": "Workload resource filter", + "type": "object", + "properties": { + "names": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TencentKeypairs" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of keypairs for the specified account", - "tags": [ - "clouds" - ] + "type": { + "type": "string", + "default": "all", + "enum": [ + "deployment", + "statefulset", + "daemonset", + "all" + ] + } } }, - "/v1/clouds/tencent/regions/{region}/securitygroups": { - "get": { - "operationId": "V1TencentSecurityGroups", - "parameters": [ - { - "description": "Region for which security groups are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific Tencent cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TencentSecurityGroups" + "v1Resources": { + "type": "object", + "properties": { + "resources": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "checks": { + "type": "array", + "items": { + "type": "string" + } + }, + "data": { + "type": "object", + "additionalProperties": { + "type": "object" + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of secutity groups for the specified account", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/tencent/regions/{region}/storagetypes": { - "get": { - "operationId": "V1TencentStorageTypes", - "parameters": [ - { - "description": "Region for which tencent storages are listed", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific tencent cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Zone for which tencent storages are listed", - "in": "query", - "name": "zone", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TencentStorageTypes" + "v1ResourcesCloudCostSummary": { + "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 + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Retrieves a list of Tencent storage types", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/tencent/regions/{region}/vpcs": { - "get": { - "operationId": "V1TencentVpcs", - "parameters": [ - { - "description": "Region for which VPCs are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific Tencent cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TencentVpcs" + "v1ResourcesConsumption": { + "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 + } + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } } - ], - "summary": "Retrieves a list of VPCs for the specified account", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/tencent/regions/{region}/zones": { - "get": { - "operationId": "V1TencentZones", - "parameters": [ - { - "description": "Region for which zones are requested", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Uid for the specific Tencent cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1ResourcesCostSummary": { + "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 + } + } + } + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TencentAvailabilityZones" + }, + "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 } } + } + } + }, + "v1ResourcesUsageSummary": { + "description": "Resources usage summary information", + "type": "object", + "properties": { + "cpuUnit": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Retrieves a list of Tencent availability zones for the specified region", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/vsphere/account/validate": { - "post": { - "description": "Returns no contents if account is valid else error.", - "operationId": "V1VsphereAccountValidate", - "parameters": [ - { - "description": "Request payload for VSphere cloud account", - "in": "body", - "name": "vsphereCloudAccount", - "required": true, - "schema": { - "$ref": "#/definitions/v1VsphereCloudAccount" + "v1RestoreStatusMeta": { + "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" + } + } + }, + "v1Role": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "description": "Role status", + "properties": { + "isEnabled": { + "description": "Specifies if role account is enabled/disabled", + "type": "boolean", + "x-omitempty": false + } } - ], - "summary": "Check if Vsphere account is valid", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/vsphere/datacenters": { - "get": { - "operationId": "V1VsphereDatacenters", - "parameters": [ - { - "description": "Uid for the specific OpenStack cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VsphereDatacenters" + "v1RoleClone": { + "description": "Role clone specifications", + "properties": { + "metadata": { + "description": "Role clone metadata", + "properties": { + "name": { + "type": "string" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the vsphere data centers", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/vsphere/datacenters/{uid}/computeclusters/{computecluster}": { - "get": { - "operationId": "V1VsphereComputeClusterResources", - "parameters": [ - { - "description": "Uid for the specific VSphere cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, + "v1RoleCloneMetadata": { + "description": "Role clone metadata", + "properties": { + "name": { + "type": "string" + } + } + }, + "v1RolePatch": { + "type": "array", + "items": { + "type": "object", + "required": [ + "op", + "path" + ], + "properties": { + "from": { + "description": "A path to the pointer from which reference will be taken", "type": "string" }, - { - "description": "computecluster for which resources is requested", - "in": "path", - "name": "computecluster", - "required": true, - "type": "string" + "op": { + "description": "The operation to be performed", + "type": "string", + "enum": [ + "add", + "remove", + "replace", + "move", + "copy" + ] }, - { - "description": "VSphere datacenter uid for which resources is requested", - "in": "path", - "name": "uid", - "required": true, + "path": { + "description": "A path to the pointer on which operation will be done", "type": "string" }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "value": { + "description": "The value to be used within the operations.", + "type": "object" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VsphereComputeClusterResources" - } + } + } + }, + "v1RoleSpec": { + "description": "Role specifications", + "properties": { + "permissions": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the resources for vsphere compute cluster", - "tags": [ - "clouds" - ] + "scope": { + "type": "string", + "enum": [ + "system", + "tenant", + "project", + "resource" + ] + }, + "type": { + "type": "string", + "enum": [ + "system", + "user" + ] + } } }, - "/v1/clouds/vsphere/env": { - "get": { - "operationId": "V1VsphereEnv", - "parameters": [ - { - "description": "Request payload for VSphere cloud account", - "in": "body", - "name": "vsphereCloudAccount", - "required": true, - "schema": { - "$ref": "#/definitions/v1VsphereCloudAccount" + "v1RoleStatus": { + "description": "Role status", + "properties": { + "isEnabled": { + "description": "Specifies if role account is enabled/disabled", + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1Roles": { + "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 + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VsphereEnv" + }, + "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 } } + } + } + }, + "v1S3StorageConfig": { + "description": "S3 storage config object", + "type": "object", + "required": [ + "bucketName", + "region", + "credentials" + ], + "properties": { + "bucketName": { + "description": "S3 storage bucket name", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "caCert": { + "description": "CA Certificate", + "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" + } + } + } } - ], - "summary": "Retrieves vsphere env", - "tags": [ - "clouds" - ] + }, + "region": { + "description": "AWS region name", + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean", + "default": true + }, + "s3Url": { + "description": "Custom hosted S3 URL", + "type": "string" + }, + "useRestic": { + "description": "Set to 'true', to use Restic plugin for the backup", + "type": "boolean", + "default": true + } } }, - "/v1/clouds/{cloudType}/instance/spotprice": { - "get": { - "operationId": "V1CloudInstanceSpotPriceGet", - "parameters": [ - { - "description": "Cloud type [aws/azure/gcp/tencent]", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" - }, - { - "description": "Instance type for a specific cloud type", - "in": "query", - "name": "instanceType", - "required": true, - "type": "string" - }, - { - "description": "Availability zone for a specific cloud type", - "in": "query", - "name": "zone", - "required": true, - "type": "string" - }, - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "format": "date-time", - "in": "query", - "name": "timestamp", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CloudSpotPrice" + "v1SchedulerJob": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "type": "object", + "properties": { + "cycles": { + "type": "integer", + "x-omitempty": false + }, + "interval": { + "type": "integer", + "x-omitempty": false + } } - ], - "summary": "Retrieves the cloud instance spot price based on zone and timestamp for a specific cloud", - "tags": [ - "clouds" - ] + }, + "status": { + "type": "object", + "properties": { + "cycleNumber": { + "type": "integer", + "x-omitempty": false + }, + "error": { + "type": "string", + "x-omitempty": false + }, + "forceNextRun": { + "type": "boolean", + "x-omitempty": false + }, + "isActive": { + "type": "boolean", + "x-omitempty": false + }, + "isDisabled": { + "type": "boolean", + "x-omitempty": false + }, + "isLocked": { + "type": "boolean", + "x-omitempty": false + }, + "lastRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastSuccessfulRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "nextRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } } }, - "/v1/clouds/{cloud}/compute/{type}/rate": { - "get": { - "operationId": "V1CloudComputeRate", - "parameters": [ - { - "description": "cloud for which compute rate is requested", - "in": "path", - "name": "cloud", - "required": true, - "type": "string" - }, - { - "description": "instance type for which compute rate is requested", - "in": "path", - "name": "type", - "required": true, - "type": "string" - }, - { - "description": "region for which compute rate is requested", - "in": "query", - "name": "region", - "required": true, - "type": "string" + "v1SchedulerJobs": { + "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" + } + } }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CloudCost" + "spec": { + "type": "object", + "properties": { + "cycles": { + "type": "integer", + "x-omitempty": false + }, + "interval": { + "type": "integer", + "x-omitempty": false + } } - } - }, - "security": [ - { - "ApiKey": [] }, - { - "Authorization": [] + "status": { + "type": "object", + "properties": { + "cycleNumber": { + "type": "integer", + "x-omitempty": false + }, + "error": { + "type": "string", + "x-omitempty": false + }, + "forceNextRun": { + "type": "boolean", + "x-omitempty": false + }, + "isActive": { + "type": "boolean", + "x-omitempty": false + }, + "isDisabled": { + "type": "boolean", + "x-omitempty": false + }, + "isLocked": { + "type": "boolean", + "x-omitempty": false + }, + "lastRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastSuccessfulRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "nextRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } } - ], - "summary": "Returns the cloud compute rate", - "tags": [ - "clouds" - ] + } } }, - "/v1/clouds/{cloud}/storage/{type}/rate": { - "get": { - "operationId": "V1CloudStorageRate", - "parameters": [ - { - "description": "cloud for which compute rate is requested", - "in": "path", - "name": "cloud", - "required": true, - "type": "string" - }, - { - "description": "storage type for which compute rate is requested", - "in": "path", - "name": "type", - "required": true, - "type": "string" - }, - { - "description": "region for which compute rate is requested", - "in": "query", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "maxDiskType for which compute rate is requested", - "in": "query", - "name": "maxDiskType", - "type": "integer" + "v1SchedulerJobsHealth": { + "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" + } + } }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CloudCost" + "spec": { + "type": "object", + "properties": { + "cycles": { + "type": "integer", + "x-omitempty": false + }, + "interval": { + "type": "integer", + "x-omitempty": false + } } - } - }, - "security": [ - { - "ApiKey": [] }, - { - "Authorization": [] + "status": { + "type": "object", + "properties": { + "cycleNumber": { + "type": "integer", + "x-omitempty": false + }, + "error": { + "type": "string", + "x-omitempty": false + }, + "forceNextRun": { + "type": "boolean", + "x-omitempty": false + }, + "isActive": { + "type": "boolean", + "x-omitempty": false + }, + "isDisabled": { + "type": "boolean", + "x-omitempty": false + }, + "isLocked": { + "type": "boolean", + "x-omitempty": false + }, + "lastRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastSuccessfulRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "nextRunTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } } - ], - "summary": "Returns the cloud storage rate", - "tags": [ - "clouds" - ] + } } }, - "/v1/clustergroups": { - "post": { - "operationId": "v1ClusterGroupsCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterGroupEntity" + "v1Scope": { + "type": "string", + "enum": [ + "system", + "tenant", + "project", + "resource" + ] + }, + "v1SearchFilterBoolCondition": { + "properties": { + "value": { + "type": "boolean" + } + } + }, + "v1SearchFilterCondition": { + "properties": { + "bool": { + "properties": { + "value": { + "type": "boolean" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "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" + } + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "negation": { + "type": "boolean" + }, + "operator": { + "type": "string", + "enum": [ + "eq", + "gt", + "gte", + "lt", + "lte", + "range" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } } - ], - "summary": "Create cluster groups", - "tags": [ - "clustergroups" - ] - } - }, - "/v1/clustergroups/developerCredit/usage/{scope}": { - "get": { - "operationId": "v1ClusterGroupsDeveloperCreditUsageGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + }, + "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" + ] + } } - ], - "responses": { - "200": { - "description": "Cluster group developer credit usage", - "schema": { - "$ref": "#/definitions/v1ClusterGroupsDeveloperCreditUsage" + }, + "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" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } } - ], - "summary": "Get cluster group developer credit usage by scope", - "tags": [ - "clustergroups" - ] - }, - "parameters": [ - { - "in": "path", - "name": "scope", - "required": true, - "type": "string" } - ] + } }, - "/v1/clustergroups/hostCluster": { - "get": { - "operationId": "v1ClusterGroupsHostClusterSummary", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster groups of host cluster type summary", - "schema": { - "$ref": "#/definitions/v1ClusterGroupsHostClusterSummary" + "v1SearchFilterConjunctionOperator": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true + }, + "v1SearchFilterDateCondition": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of cluster groups host cluster summary", - "tags": [ - "clustergroups" - ] + "negation": { + "type": "boolean" + }, + "operator": { + "type": "string", + "enum": [ + "eq", + "gt", + "gte", + "lt", + "lte", + "range" + ] + } } }, - "/v1/clustergroups/hostCluster/metadata": { - "get": { - "operationId": "v1ClusterGroupsHostClusterMetadata", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster groups host cluster metadata items", - "schema": { - "$ref": "#/definitions/v1ClusterGroupsHostClusterMetadata" - } - } + "v1SearchFilterDateConditionMatch": { + "properties": { + "conjunction": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Retrieves a list of cluster groups host cluster metadata", - "tags": [ - "clustergroups" - ] + } } }, - "/v1/clustergroups/validate/name": { - "get": { - "operationId": "v1ClusterGroupsValidateName", - "parameters": [ - { - "in": "query", - "name": "name", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + "v1SearchFilterDateOperator": { + "type": "string", + "enum": [ + "eq", + "gt", + "gte", + "lt", + "lte", + "range" + ] + }, + "v1SearchFilterFloatCondition": { + "properties": { + "match": { + "properties": { + "conjunction": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true + }, + "values": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "number", + "format": "float64" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates the cluster groups name", - "tags": [ - "clustergroups" - ] + "negation": { + "type": "boolean" + }, + "operator": { + "type": "string", + "enum": [ + "eq", + "gt", + "gte", + "lt", + "lte" + ] + } } }, - "/v1/clustergroups/{uid}": { - "delete": { - "operationId": "v1ClusterGroupsUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1SearchFilterFloatConditionMatch": { + "properties": { + "conjunction": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified cluster group", - "tags": [ - "clustergroups" - ] - }, - "get": { - "operationId": "v1ClusterGroupsUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterGroup" - } + "values": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "number", + "format": "float64" } + } + } + }, + "v1SearchFilterGroup": { + "properties": { + "conjunction": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } + } } - ], - "summary": "Returns the specified cluster groups", - "tags": [ - "clustergroups" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/clustergroups/{uid}/clusters": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "description": "Deprecated: Use PUT /v1/clustergroups/{uid}/hostCluster", - "operationId": "v1ClusterGroupsUidClustersUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterGroupClusterRefs" + "v1SearchFilterIntegerCondition": { + "properties": { + "match": { + "properties": { + "conjunction": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true + }, + "values": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "integer" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified cluster groups clusters", - "tags": [ - "clustergroups" - ] + "negation": { + "type": "boolean" + }, + "operator": { + "type": "string", + "enum": [ + "eq", + "gt", + "gte", + "lt", + "lte" + ] + } } }, - "/v1/clustergroups/{uid}/hostCluster": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1ClusterGroupsUidHostClusterUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterGroupHostClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "v1SearchFilterIntegerConditionMatch": { + "properties": { + "conjunction": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "values": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "integer" } - ], - "summary": "Updates cluster reference and host cluster config", - "tags": [ - "clustergroups" - ] + } } }, - "/v1/clustergroups/{uid}/hostCluster/config": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "description": "Deprecated: Use PUT /v1/clustergroups/{uid}/hostCluster", - "operationId": "v1ClusterGroupsUidHostClusterConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterGroupClustersConfig" + "v1SearchFilterIntegerOperator": { + "type": "string", + "enum": [ + "eq", + "gt", + "gte", + "lt", + "lte" + ] + }, + "v1SearchFilterItem": { + "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" + ] + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the host cluster config in cluster group", - "tags": [ - "clustergroups" - ] + "property": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "string", + "int", + "float", + "bool", + "date", + "keyValue" + ] + } } }, - "/v1/clustergroups/{uid}/meta": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1SearchFilterKeyValueCondition": { + "properties": { + "ignoreCase": { + "type": "boolean" + }, + "key": { "type": "string" - } - ], - "put": { - "operationId": "v1ClusterGroupsUidMetaUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ObjectMeta" + }, + "match": { + "properties": { + "conjunction": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true + }, + "values": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified cluster groups meta", - "tags": [ - "clustergroups" - ] + "negation": { + "type": "boolean" + }, + "operator": { + "type": "string", + "enum": [ + "eq", + "contains", + "beginsWith" + ] + } } }, - "/v1/clustergroups/{uid}/packs/resolvedValues": { - "get": { - "operationId": "v1ClusterGroupsUidPacksResolvedValuesGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfilesResolvedValues" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified clustergroup's profile packs resolved values", - "tags": [ - "clustergroups" - ] - }, - "parameters": [ - { - "description": "Cluster group uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1SearchFilterKeyValueConditionMatch": { + "properties": { + "conjunction": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfilesParamReferenceEntity" + "values": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } } + } + }, + "v1SearchFilterKeyValueOperator": { + "type": "string", + "enum": [ + "eq" ] }, - "/v1/clustergroups/{uid}/profiles": { - "get": { - "operationId": "v1ClusterGroupsUidProfilesGet", - "parameters": [ - { - "description": "includes pack meta such as schema, presets", - "in": "query", - "name": "includePackMeta", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfileList" + "v1SearchFilterPropertyType": { + "type": "string", + "enum": [ + "string", + "int", + "float", + "bool", + "date", + "keyValue" + ] + }, + "v1SearchFilterSchemaSpec": { + "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 + } + } + } } } + } + } + }, + "v1SearchFilterSchemaSpecEnumValue": { + "properties": { + "displayValue": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the associated profiles of a specified cluster group", - "tags": [ - "clustergroups" - ] - }, - "parameters": [ - { - "description": "ClusterGroup uid", - "in": "path", - "name": "uid", - "required": true, + "value": { "type": "string" } - ], - "put": { - "operationId": "v1ClusterGroupsUidProfilesUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfiles" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified cluster groups profiles", - "tags": [ - "clustergroups" - ] } }, - "/v1/clusterprofiles": { - "get": { - "description": "Deprecated: Use POST /v1/dashboard/clusterprofiles", - "operationId": "v1ClusterProfilesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster profile items", - "schema": { - "$ref": "#/definitions/v1ClusterProfiles" + "v1SearchFilterSchemaSpecProperties": { + "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 + } } } + } + } + }, + "v1SearchFilterSchemaSpecProperty": { + "properties": { + "default": { + "type": "string", + "x-order": 6 }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of cluster profiles", - "tags": [ - "clusterprofiles" - ] - }, - "post": { - "operationId": "v1ClusterProfilesCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterProfileEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "displayName": { + "type": "string", + "x-order": 2 + }, + "enum": { + "type": "array", + "items": { "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "x-omitempty": true, + "x-order": 4 + }, + "enumValues": { + "type": "array", + "items": { + "properties": { + "displayValue": { + "type": "string" + }, + "value": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } - } - }, - "security": [ - { - "ApiKey": [] }, - { - "Authorization": [] - } - ], - "summary": "Creates a cluster profile", - "tags": [ - "clusterprofiles" - ] + "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/clusterprofiles/bulk": { - "delete": { - "operationId": "v1ClusterProfilesBulkDelete", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1BulkDeleteRequest" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1BulkDeleteResponse" - } - } + "v1SearchFilterSortSpec": { + "properties": { + "field": { + "type": "string", + "enum": [ + "environment", + "clusterName", + "clusterState", + "healthState", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes list of cluster profiles", - "tags": [ - "clusterprofiles" - ] + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } } }, - "/v1/clusterprofiles/import": { - "post": { - "operationId": "v1ClusterProfilesImport", - "parameters": [ - { - "description": "If true then cluster profile will be published post successful import", - "in": "query", - "name": "publish", - "type": "boolean" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterProfileImportEntity" + "v1SearchFilterSpec": { + "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" + ] + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1SearchFilterStringCondition": { + "properties": { + "ignoreCase": { + "type": "boolean" + }, + "match": { + "properties": { + "conjunction": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true + }, + "values": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Imports a cluster profile", - "tags": [ - "clusterprofiles" - ] + "negation": { + "type": "boolean" + }, + "operator": { + "type": "string", + "enum": [ + "eq", + "contains", + "beginsWith" + ] + } } }, - "/v1/clusterprofiles/import/file": { - "post": { - "consumes": [ - "multipart/form-data" - ], - "operationId": "v1ClusterProfilesImportFile", - "parameters": [ - { - "description": "If true then cluster profile will be published post successful import", - "in": "query", - "name": "publish", - "type": "boolean" - }, - { - "description": "Cluster profile import file", - "in": "formData", - "name": "importFile", - "type": "file" - }, - { - "default": "json", - "description": "Cluster profile import file format [\"yaml\", \"json\"]", - "enum": [ - "yaml", - "json" - ], - "in": "query", - "name": "format", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1SearchFilterStringConditionMatch": { + "properties": { + "conjunction": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true + }, + "values": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + } + } + }, + "v1SearchFilterStringOperator": { + "type": "string", + "enum": [ + "eq", + "contains", + "beginsWith" + ] + }, + "v1SearchFilterSummarySpec": { + "description": "Spectro cluster search filter summary spec", + "properties": { + "filter": { + "properties": { + "conjunction": { + "type": "string", + "enum": [ + "and", + "or" + ], + "x-nullable": true }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" + ] + } + } + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } + } } - ], - "summary": "Imports a cluster profile via file", - "tags": [ - "clusterprofiles" - ] + } } }, - "/v1/clusterprofiles/import/validate": { - "post": { - "operationId": "v1ClusterProfilesImportValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterProfileImportEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Cluster profile import validated response", - "schema": { - "$ref": "#/definitions/v1ClusterProfileImportEntity" - } - } + "v1SearchSortFields": { + "type": "string", + "enum": [ + "environment", + "clusterName", + "clusterState", + "healthState", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true + }, + "v1SectroClusterK8sDashboardUrl": { + "description": "Service version information", + "type": "object", + "properties": { + "url": { + "type": "string" + } + } + }, + "v1ServiceEncryptionKey": { + "description": "Returns the data encryption key for the session", + "type": "object", + "properties": { + "encryptionKey": { + "description": "Encryption key to be used to decrypt the encrypted data in the response", + "type": "string" + } + } + }, + "v1ServiceImage": { + "description": "Service image entity", + "type": "object", + "properties": { + "buildId": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates cluster profile import", - "tags": [ - "clusterprofiles" - ] + "image": { + "type": "string" + }, + "serviceName": { + "type": "string" + }, + "version": { + "type": "string" + } } }, - "/v1/clusterprofiles/macros": { - "get": { - "operationId": "v1MacrosList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Macros" + "v1ServiceManifest": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Retrieves a list of macros", - "tags": [ - "clusterprofiles" - ] + } } }, - "/v1/clusterprofiles/validate/name": { - "get": { - "description": "Validates the cluster profile name and version", - "operationId": "v1ClusterProfilesValidateNameVersion", - "parameters": [ - { - "description": "Cluster profile name", - "in": "query", - "name": "name", - "type": "string" - }, - { - "description": "Cluster profile version", - "in": "query", - "name": "version", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1ServiceManifestSpec": { + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates the cluster profile metadata", - "tags": [ - "clusterprofiles" - ] + "name": { + "type": "string" + }, + "version": { + "type": "string" + } } }, - "/v1/clusterprofiles/validate/packs": { - "post": { - "operationId": "v1ClusterProfilesValidatePacks", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterProfileTemplateDraft" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Cluster profile packs validation response", - "schema": { - "$ref": "#/definitions/v1ClusterProfileValidatorResponse" - } - } + "v1ServicePort": { + "type": "object", + "required": [ + "port" + ], + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "type": "integer", + "format": "int32" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates cluster profile packs", - "tags": [ - "clusterprofiles" - ] + "protocol": { + "type": "string" + } } }, - "/v1/clusterprofiles/{uid}/clone": { - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, + "v1ServiceSpec": { + "description": "ServiceSpec defines the specification of service registering edge", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "version": { "type": "string" } - ], - "post": { - "operationId": "v1ClusterProfilesUidClone", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterProfileCloneEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1ServiceVersion": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Creates a clone of the specified cluster profile", - "tags": [ - "clusterprofiles" - ] + } } }, - "/v1/clusterprofiles/{uid}/clone/validate": { - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, + "v1ServiceVersionSpec": { + "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" } - ], - "post": { - "description": "Validates the cloned cluster profile name, version and target project uid", - "operationId": "v1ClusterProfilesUidCloneValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterProfileCloneMetaInputEntity" + } + }, + "v1ServicesImages": { + "type": "object", + "properties": { + "serviceImages": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Service image entity", + "type": "object", + "properties": { + "buildId": { + "type": "string" + }, + "image": { + "type": "string" + }, + "serviceName": { + "type": "string" + }, + "version": { + "type": "string" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1SonobuoyEntity": { + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates the cluster profile clone", - "tags": [ - "clusterprofiles" - ] + "requestUid": { + "type": "string" + }, + "status": { + "type": "string", + "enum": [ + "Completed", + "InProgress", + "Failed", + "Initiated" + ] + } } }, - "/v1/clusterprofiles/{uid}/export": { - "get": { - "operationId": "V1ClusterProfilesUidExport", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "Exports cluster profile as a file", - "headers": { - "Content-Disposition": { + "v1SonobuoyLog": { + "description": "Compliance Scan Sonobuoy Log", + "properties": { + "description": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "output": { + "type": "string" + }, + "path": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1SonobuoyLogEntity": { + "description": "Sonobuoy log", + "properties": { + "description": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "output": { + "type": "string" + }, + "path": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1SonobuoyReport": { + "description": "Compliance Scan Sonobuoy Report", + "properties": { + "fail": { + "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" } - }, - "schema": { - "format": "binary", - "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Export the specified cluster profile", - "tags": [ - "clusterprofiles" - ] - }, - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, + "node": { "type": "string" }, - { - "default": "json", - "description": "Cluster profile export file format [ \"yaml\", \"json\" ]", - "enum": [ - "yaml", - "json" - ], - "in": "query", - "name": "format", + "pass": { + "type": "integer", + "format": "int32" + }, + "plugin": { + "type": "string" + }, + "status": { "type": "string" + }, + "total": { + "type": "integer", + "format": "int32" } - ] + } }, - "/v1/clusterprofiles/{uid}/export/terraform": { - "get": { - "operationId": "V1ClusterProfilesUidExportTerraform", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "Downloads cluster profile export file", - "headers": { - "Content-Disposition": { + "v1SonobuoyReportEntity": { + "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" } - }, - "schema": { - "format": "binary", - "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Downloads the specified cluster profile", - "tags": [ - "clusterprofiles" - ] - }, - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, + "node": { "type": "string" }, - { - "default": "yaml", - "description": "Cluster profile export file format [ \"yaml\", \"json\" ]", + "pass": { + "type": "integer", + "format": "int32" + }, + "plugin": { + "type": "string" + }, + "status": { + "type": "string" + }, + "total": { + "type": "integer", + "format": "int32" + } + } + }, + "v1SortOrder": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + }, + "v1SpcApply": { + "type": "object", + "properties": { + "actionType": { + "type": "string", "enum": [ - "yaml", - "json" - ], - "in": "query", - "name": "format", + "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" } - ] + } }, - "/v1/clusterprofiles/{uid}/metadata": { - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1SpcApplySettings": { + "type": "object", + "properties": { + "actionType": { + "type": "string", + "enum": [ + "DownloadAndInstall", + "DownloadAndInstallLater" + ] } - ], - "patch": { - "operationId": "v1ClusterProfilesUidMetadataUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ProfileMetaEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified cluster profile metadata", - "tags": [ - "clusterprofiles" - ] } }, - "/v1/clusterprofiles/{uid}/packRefs": { - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Cluster profile notification uid", - "in": "query", - "name": "notify", + "v1SpcPatchTimeEntity": { + "type": "object", + "properties": { + "clusterHash": { "type": "string" }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterProfileNotificationUpdateEntity" - } + "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" } + } + }, + "v1SpectroAppMgmtUpgrade": { + "description": "Spectro application management upgrade information", + "type": "object", + "required": [ + "version" ], - "patch": { - "operationId": "v1ClusterProfilesPacksRefUpdate", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + "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" + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates cluster profile packs ref", - "tags": [ - "clusterprofiles" - ] + "version": { + "type": "string" + } } }, - "/v1/clusterprofiles/{uid}/packs": { - "get": { - "operationId": "v1ClusterProfilesUidPacksGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterProfilePacksEntities" + "v1SpectroAwsClusterEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cluster profile packs", - "tags": [ - "clusterprofiles" - ] - }, - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Comma seperated pack meta such as schema, presets", - "in": "query", - "name": "includePackMeta", - "type": "string" - } - ], - "post": { - "operationId": "v1ClusterProfilesUidPacksAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1PackInputEntity" + "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" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1SpectroAwsClusterImportEntity": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "labels": { + "description": "Labels are key value data to 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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } } - ], - "summary": "Adds a new pack to the specified cluster profile and returns the created pack uid", - "tags": [ - "clusterprofiles" - ] + } } }, - "/v1/clusterprofiles/{uid}/packs/manifests": { - "get": { - "operationId": "v1ClusterProfilesUidPacksManifestsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterProfilePacksManifests" + "v1SpectroAwsClusterRateEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } } - ], - "summary": "Returns the specified cluster profile pack manifests", - "tags": [ - "clusterprofiles" - ] - }, - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Comma seperated pack meta such as schema, presets", - "in": "query", - "name": "includePackMeta", - "type": "string" } - ] + } }, - "/v1/clusterprofiles/{uid}/packs/resolvedValues": { - "get": { - "operationId": "v1ClusterProfilesUidPacksResolvedValuesGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1PackResolvedValues" + "v1SpectroAzureClusterEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cluster profile packs resolved values", - "tags": [ - "clusterprofiles" - ] - }, - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1PackParamsEntity" + "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" + } + } + } + } } } - ] + } }, - "/v1/clusterprofiles/{uid}/packs/{packName}": { - "delete": { - "operationId": "v1ClusterProfilesUidPacksNameDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1SpectroAzureClusterImportEntity": { + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified pack information in the cluster profile", - "tags": [ - "clusterprofiles" - ] - }, - "get": { - "operationId": "V1ClusterProfilesUidPacksNameGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "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" + } + } + } + } + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1PackRefSummaryResponse" + } + } + }, + "v1SpectroAzureClusterRateEntity": { + "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" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } } - ], - "summary": "Returns the specified cluster profile pack", - "tags": [ - "clusterprofiles" - ] - }, - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, + } + } + }, + "v1SpectroCluster": { + "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" }, - { - "description": "Cluster profile pack name", - "in": "path", - "name": "packName", - "required": true, + "kind": { + "description": "Cloud type of the cloud config", "type": "string" - } - ], - "put": { - "operationId": "v1ClusterProfilesUidPacksNameUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1PackUpdateEntity" + }, + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" + ] + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } + } } - ], - "summary": "Updates the specified pack information in the cluster profile", - "tags": [ - "clusterprofiles" - ] + } } }, - "/v1/clusterprofiles/{uid}/packs/{packName}/config": { - "get": { - "operationId": "v1ClusterProfilesUidPacksConfigGet", - "parameters": [ - { - "description": "cluster profile uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Cluster profile pack name", - "in": "path", - "name": "packName", - "required": true, - "type": "string" - }, - { - "description": "Cluster profile pack uid", - "in": "query", - "name": "packUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster profile pack configurations", - "schema": { - "$ref": "#/definitions/v1ClusterProfilePackConfigList" + "v1SpectroClusterActiveAppDeployment": { + "description": "Active app deployment", + "type": "object", + "properties": { + "appRef": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cluster profile pack configuration", - "tags": [ - "clusterprofiles" - ] + "state": { + "type": "string" + } } }, - "/v1/clusterprofiles/{uid}/packs/{packName}/manifests": { - "get": { - "operationId": "v1ClusterProfilesUidPacksUidManifests", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ManifestEntities" + "v1SpectroClusterActiveCluster": { + "description": "Active clusters", + "type": "object", + "properties": { + "clusterRef": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the associated manifests for the specified profile's pack", - "tags": [ - "clusterprofiles" - ] - }, - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Cluster profile pack name", - "in": "path", - "name": "packName", - "required": true, + "state": { "type": "string" } - ], - "post": { - "operationId": "v1ClusterProfilesUidPacksNameManifestsAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ManifestInputEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1SpectroClusterActiveResources": { + "description": "Active cluster resources", + "type": "object", + "properties": { + "appDeployments": { + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Adds manifest to the profiles packs and returns the added manifests uid", - "tags": [ - "clusterprofiles" - ] - } - }, - "/v1/clusterprofiles/{uid}/packs/{packName}/manifests/{manifestUid}": { - "delete": { - "operationId": "v1ClusterProfilesUidPacksNameManifestsUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified cluster profile pack manifest", - "tags": [ - "clusterprofiles" - ] - }, - "get": { - "operationId": "v1ClusterProfilesUidPacksNameManifestsUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ManifestEntity" + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "virtualClusters": { + "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" + } + } } - ], - "summary": "Returns the specified cluster profile pack manifest", - "tags": [ - "clusterprofiles" - ] - }, - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, + } + } + }, + "v1SpectroClusterAddOnService": { + "description": "Spectro cluster addon service", + "properties": { + "endpoint": { "type": "string" }, - { - "description": "Cluster profile pack name", - "in": "path", - "name": "packName", - "required": true, + "name": { + "type": "string" + } + } + }, + "v1SpectroClusterAddOnServiceSummary": { + "description": "Spectro cluster status summary", + "properties": { + "endpoint": { "type": "string" }, - { - "description": "Cluster profile pack manifest uid", - "in": "path", - "name": "manifestUid", - "required": true, + "name": { "type": "string" } - ], - "put": { - "operationId": "v1ClusterProfilesUidPacksNameManifestsUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ManifestInputEntity" + } + }, + "v1SpectroClusterAssetEntity": { + "description": "Cluster asset", + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "frpKubeconfig": { + "type": "string" + }, + "kubeconfig": { + "type": "string" + }, + "kubeconfigclient": { + "type": "string" + }, + "manifest": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "Updates the specified manifest of the profile's pack", - "tags": [ - "clusterprofiles" - ] + } } }, - "/v1/clusterprofiles/{uid}/publish": { - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, + "v1SpectroClusterAssetFrpKubeConfig": { + "description": "Cluster asset Frp Kube Config", + "type": "object", + "properties": { + "frpKubeconfig": { "type": "string" } - ], - "patch": { - "description": "Publish the draft cluster profile with next revision, the current draft cluster profile will be marked to published\nand the draft cluster profile will be set to null in the cluster profile template.\n", - "operationId": "v1ClusterProfilesPublish", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Cluster profile published successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Publishes the specified cluster profile", - "tags": [ - "clusterprofiles" - ] } }, - "/v1/clusterprofiles/{uid}/spc/download": { - "get": { - "operationId": "v1ClusterProfilesUidSpcDownload", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "Download cluster profile archive file", - "headers": { - "Content-Disposition": { - "type": "string" + "v1SpectroClusterAssetKubeConfig": { + "description": "Cluster asset Kube Config", + "type": "object", + "properties": { + "kubeconfig": { + "type": "string" + } + } + }, + "v1SpectroClusterAssetKubeConfigClient": { + "description": "Cluster asset Kube Config Client", + "type": "object", + "properties": { + "kubeconfigclient": { + "type": "string" + } + } + }, + "v1SpectroClusterAssetManifest": { + "description": "Cluster asset", + "type": "object", + "properties": { + "manifest": { + "type": "string" + } + } + }, + "v1SpectroClusterCloudCost": { + "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 + } } }, - "schema": { - "format": "binary", - "type": "string" + "total": { + "type": "number", + "format": "float64", + "x-omitempty": false } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } } - ], - "summary": "Downloads the specified cluster profile", - "tags": [ - "clusterprofiles" - ] - }, - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/clusterprofiles/{uid}/validate/packs": { - "post": { - "operationId": "v1ClusterProfilesUidValidatePacks", - "parameters": [ - { - "description": "Cluster profile uid", - "in": "path", - "name": "uid", - "required": true, + "v1SpectroClusterCloudCostSummaryFilter": { + "description": "Spectro cluster cloud cost summary filter", + "type": "object", + "properties": { + "clouds": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterProfileTemplateDraft" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "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" } - ], - "responses": { - "200": { - "description": "Cluster profile packs validation response", - "schema": { - "$ref": "#/definitions/v1ClusterProfileValidatorResponse" + }, + "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" + } + } + } + }, + "v1SpectroClusterCloudCostSummaryOptions": { + "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 + } + } + }, + "v1SpectroClusterCloudCostSummarySpec": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Validates specified cluster profile packs", - "tags": [ - "clusterprofiles" - ] + } } }, - "/v1/dashboard/appDeployments": { - "post": { - "operationId": "v1DashboardAppDeployments", - "parameters": [ - { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "maximum": 20, - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppDeploymentsFilterSpec" + "v1SpectroClusterCost": { + "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 + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of application deployment summary items", - "schema": { - "$ref": "#/definitions/v1AppDeploymentsSummary" + }, + "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 } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "v1SpectroClusterCostSummary": { + "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" + } } - ], - "summary": "Retrieves a list of application deployments filter summary Supported filter fields - [\"appDeploymentName\", \"clusterUid\", \"tags\"] Supported sort fields - [\"appDeploymentName\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", - "tags": [ - "dashboard" - ] + }, + "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" + } } }, - "/v1/dashboard/appProfiles": { - "post": { - "operationId": "v1DashboardAppProfiles", - "parameters": [ - { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "maximum": 20, - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", + "v1SpectroClusterFilterSpec": { + "description": "Spectro cluster filter spec", + "properties": { + "cloudAccounts": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AppProfilesFilterSpec" + } + }, + "clusterName": { + "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 } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "clusterProfiles": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of application profiles summary items", - "schema": { - "$ref": "#/definitions/v1AppProfilesSummary" + }, + "clusterState": { + "type": "string", + "enum": [ + "Pending", + "Provisioning", + "Running", + "Deleting", + "Deleted", + "Error", + "Importing" + ] + }, + "clusterStates": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "Pending", + "Provisioning", + "Running", + "Deleting", + "Deleted", + "Error", + "Importing" + ] + } + }, + "cpuUsage": { + "type": "object", + "properties": { + "eq": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "gt": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "gte": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "lt": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "lte": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "ne": { + "type": "integer", + "format": "int32", + "x-nullable": true } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "environment": { + "description": "Deprecated. Use environments", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Retrieves a list of application profiles filter summary Supported filter fields - [\"profileName\", \"tags\"] Supported sort fields - [\"profileName\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/appProfiles/metadata": { - "get": { - "operationId": "v1DashboardAppProfilesMetadata", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "environments": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of application profile summary items", - "schema": { - "$ref": "#/definitions/v1AppProfilesMetadata" + }, + "healthState": { + "type": "string", + "default": "all", + "enum": [ + "all", + "Healthy", + "UnHealthy" + ] + }, + "isDeleted": { + "type": "boolean", + "default": false + }, + "isHostCluster": { + "type": "boolean", + "default": false, + "x-omitempty": false + }, + "memoryUsage": { + "type": "object", + "properties": { + "eq": { + "type": "number", + "x-nullable": true + }, + "gt": { + "type": "number", + "x-nullable": true + }, + "gte": { + "type": "number", + "x-nullable": true + }, + "lt": { + "type": "number", + "x-nullable": true + }, + "lte": { + "type": "number", + "x-nullable": true + }, + "ne": { + "type": "number", + "x-nullable": true } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "metricPeriod": { + "description": "Metric period in minutes defines latest metrics by period", + "type": "integer", + "format": "int32", + "default": 60 + }, + "projectUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Retrieves a list of application profile metadata", - "tags": [ - "dashboard" - ] + }, + "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 + } + } + } } }, - "/v1/dashboard/appliances/metadata": { - "post": { - "operationId": "v1EdgeHostsMetadata", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeHostsMetadataFilter" + "v1SpectroClusterHealthCheck": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "orgName": { + "type": "string" + }, + "ownerName": { + "type": "string" + }, + "ownerUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of edgehost summary items", - "schema": { - "$ref": "#/definitions/v1EdgeHostsMetadataSummary" + }, + "status": { + "type": "object", + "properties": { + "machineHealthChecks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + } + } + } + }, + "msgBrokerHealthChecks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + } + } + } + }, + "spectroClusterHealthChecks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + } + } + } } } + } + } + }, + "v1SpectroClusterHealthCheckSpec": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of edgehosts summary", - "tags": [ - "dashboard" - ] + "orgName": { + "type": "string" + }, + "ownerName": { + "type": "string" + }, + "ownerUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + } } }, - "/v1/dashboard/cloudaccounts/metadata": { - "get": { - "operationId": "v1DashboardCloudAccountsMetadata", - "parameters": [ - { - "in": "query", - "name": "environment", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1SpectroClusterHealthCheckStatus": { + "type": "object", + "properties": { + "machineHealthChecks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + } + } } - ], - "responses": { - "200": { - "description": "An array of cloud accounts summary items", - "schema": { - "$ref": "#/definitions/v1CloudAccountsMetadata" + }, + "msgBrokerHealthChecks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spectroClusterHealthChecks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + } + } } - ], - "summary": "Retrieves a list of cloud accounts metadata", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/clustergroups/{uid}/hostClusters": { - "post": { - "operationId": "v1ClusterGroupUidHostClustersSummary", - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SearchFilterSummarySpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster summary items", - "schema": { - "$ref": "#/definitions/v1SpectroClustersSummary" + "v1SpectroClusterHealthCondition": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of cluster summary for a given cluster group", - "tags": [ - "dashboard" - ] + "type": { + "type": "string" + } } }, - "/v1/dashboard/clustergroups/{uid}/virtualClusters": { - "post": { - "operationId": "v1ClusterGroupUidVirtualClustersSummary", - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SearchFilterSummarySpec" + "v1SpectroClusterHealthStatus": { + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster summary items", - "schema": { - "$ref": "#/definitions/v1SpectroClustersSummary" + }, + "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" + } + } + }, + "v1SpectroClusterKubeCtlRedirect": { + "description": "Active resources of tenant", + "type": "object", + "properties": { + "redirectUri": { + "type": "string" + } + } + }, + "v1SpectroClusterLocationInputEntity": { + "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" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of cluster summary for a given cluster group", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/clusterprofiles": { - "post": { - "operationId": "v1ClusterProfilesFilterSummary", - "parameters": [ - { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "maximum": 20, - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterProfilesFilterSpec" + "v1SpectroClusterMetaSummary": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster profiles summary items", - "schema": { - "$ref": "#/definitions/v1ClusterProfilesSummary" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } } - ], - "summary": "Retrieves a list of cluster profiles filter summary Supported filter fields - [\"profileName\", \"tags\", \"profileType\", \"environment\"] Supported sort fields - [\"profileName\", \"environment\", \"profileType\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/clusterprofiles/metadata": { - "get": { - "operationId": "v1ClusterProfilesMetadata", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster summary items", - "schema": { - "$ref": "#/definitions/v1ClusterProfilesMetadata" + "v1SpectroClusterMetadataFilterSpec": { + "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 } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of cluster profiles metadata", - "tags": [ - "dashboard" - ] + "state": { + "type": "string" + } } }, - "/v1/dashboard/clusterprofiles/{uid}": { - "get": { - "operationId": "v1ClusterProfilesUidSummary", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1SpectroClusterMetadataSpec": { + "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" + } } - ], - "responses": { - "200": { - "description": "Cluster profile summary response", - "schema": { - "$ref": "#/definitions/v1ClusterProfileSummary" + }, + "sort": { + "type": "string", + "enum": [ + "environment", + "state", + "name" + ], + "x-nullable": true + } + } + }, + "v1SpectroClusterMetrics": { + "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 } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Retrieves a specified cluster profile summary", - "tags": [ - "dashboard" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/dashboard/edgehosts/search": { - "post": { - "operationId": "v1DashboardEdgehostsSearch", - "parameters": [ - { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "maximum": 20, - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SearchFilterSummarySpec" + "v1SpectroClusterMigration": { + "description": "Spectro cluster migration status", + "type": "object", + "properties": { + "database": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "finishTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "folderName": { + "type": "string" + }, + "isCompleted": { + "type": "boolean" + }, + "message": { + "type": "array", + "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" + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "status": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of edgehost summary items", - "schema": { - "$ref": "#/definitions/v1EdgeHostsSearchSummary" + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "tenant": { + "description": "Spectro tenant migration status", + "type": "object", + "properties": { + "clusters": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Spectro tenant cluster migration status", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "state": { + "type": "string", + "x-omitempty": false } } + } + } + }, + "v1SpectroClusterNotifications": { + "description": "Spectro cluster notifications", + "properties": { + "isAvailable": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1SpectroClusterOidcClaims": { + "type": "object", + "properties": { + "Email": { + "type": "string", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Edgehosts summary with provided search filter. Supported fields as per schema /v1/dashboard/edgehosts/search/schema", - "tags": [ - "dashboard" - ] + "FirstName": { + "type": "string", + "x-omitempty": false + }, + "LastName": { + "type": "string", + "x-omitempty": false + }, + "SpectroTeam": { + "type": "string", + "x-omitempty": false + } } }, - "/v1/dashboard/edgehosts/search/schema": { - "get": { - "operationId": "v1DashboardEdgehostsSearchSchemaGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of schema items", - "schema": { - "$ref": "#/definitions/v1SearchFilterSchemaSpec" + "v1SpectroClusterOidcSpec": { + "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 } } }, - "security": [ - { - "ApiKey": [] + "scopes": { + "type": "array", + "items": { + "type": "string" }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a schema for the Edgehost search filter", - "tags": [ - "dashboard" - ] + "x-omitempty": false + } } }, - "/v1/dashboard/pcgs/search": { - "post": { - "operationId": "v1DashboardPcgsSearchSummary", - "parameters": [ - { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "maximum": 20, - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SearchFilterSummarySpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster summary items", - "schema": { - "$ref": "#/definitions/v1PcgsSummary" - } - } + "v1SpectroClusterPackCondition": { + "type": "object", + "properties": { + "message": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of PCG summary with provided search filter. Supported fields as per schema /v1/dashboard/pcgs/search/schema", - "tags": [ - "dashboard" - ] + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "ReadyForInstall", + "Installed", + "Ready", + "Error", + "UpgradeAvailable", + "WaitingForOtherLayers" + ] + } } }, - "/v1/dashboard/pcgs/search/schema": { - "get": { - "operationId": "v1DashboardPcgSearchSchemaGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of schema items", - "schema": { - "$ref": "#/definitions/v1SearchFilterSchemaSpec" + "v1SpectroClusterPackConfigList": { + "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" + } + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a schema for the PCG search filter", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/projects": { - "get": { - "description": "Deprecated: Use POST /v1/dashboard/projects", - "operationId": "v1ProjectsSummary", - "parameters": [ - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "default": 60, - "description": "Metric period in minutes defines latest metrics by period", - "format": "int32", - "in": "query", - "name": "metricPeriod", - "type": "integer" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of project summary items", + "v1SpectroClusterPackDiff": { + "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": { - "$ref": "#/definitions/v1ProjectsSummary" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of project summary", - "tags": [ - "dashboard" - ] - }, - "post": { - "operationId": "v1ProjectsFilterSummary", - "parameters": [ - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ProjectsFilterSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "diffConfigKeys": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of project filter summary items", + }, + "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": { - "$ref": "#/definitions/v1ProjectsSummary" + "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" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/projects/metadata": { - "get": { - "operationId": "v1ProjectsMetadata", - "parameters": [ - { - "description": "Name of the project", - "in": "query", - "name": "name", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of project metadata items", - "schema": { - "$ref": "#/definitions/v1ProjectsMetadata" + "v1SpectroClusterPackProperties": { + "description": "Cluster pack properties response", + "type": "object", + "properties": { + "yaml": { + "type": "string", + "x-omitempty": false + } + } + }, + "v1SpectroClusterPackStatusEntity": { + "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" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of projects metadata", - "tags": [ - "dashboard" - ] + "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" + } } }, - "/v1/dashboard/spectroclusters": { - "post": { - "description": "Deprecated: Use POST /v1/dashboard/spectroclusters/search", - "operationId": "v1SpectroClustersFilterSummary", - "parameters": [ - { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "maximum": 20, - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterSummarySpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster summary items", - "schema": { - "$ref": "#/definitions/v1SpectroClustersSummary" + "v1SpectroClusterPacksEntity": { + "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" + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of cluster summary with provided filter spec Supported filter fields - [\"cpuUsage\", \"memoryUsage\", \"clusterName\", \"tags\", \"healthState\", \"clusterStates\", \"isDeleted\", \"environments\", \"metricPeriod\"] Supported sort fields - [\"environment\", \"clusterName\", \"memoryUsage\", \"healthState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/cost": { - "post": { - "operationId": "v1DashboardSpectroClustersCostSummary", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterCloudCostSummarySpec" + "v1SpectroClusterPacksStatusEntity": { + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of resources cloud cost summary items", - "schema": { - "$ref": "#/definitions/v1ResourcesCloudCostSummary" + } + } + }, + "v1SpectroClusterPolicies": { + "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" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } } - ], - "summary": "Retrieves spectro clusters cloud cost summary information", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/filters/workspace": { - "get": { - "operationId": "v1SpectroClustersFiltersWorkspace", - "parameters": [ - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster summary items", - "schema": { - "$ref": "#/definitions/v1SpectroClustersSummary" + "v1SpectroClusterProfile": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Retrieves a list of running, non rbac configured clusters in a workspace", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/metadata": { - "get": { - "operationId": "v1SpectroClustersMetadataGet", - "parameters": [ - { - "enum": [ - "hostclusters", - "strictHostclusters" + "v1SpectroClusterProfileEntity": { + "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" ], - "in": "query", - "name": "quickFilter", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster summary items", - "schema": { - "$ref": "#/definitions/v1SpectroClustersMetadata" + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of cluster summary metadata", - "tags": [ - "dashboard" - ] - }, - "post": { - "operationId": "v1SpectroClustersMetadata", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterMetadataSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster summary items", - "schema": { - "$ref": "#/definitions/v1SpectroClustersMetadata" - } - } + "replaceWithProfile": { + "description": "Cluster profile uid to be replaced with new profile", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of cluster summary", - "tags": [ - "dashboard" - ] + "uid": { + "description": "Cluster profile uid", + "type": "string" + } } }, - "/v1/dashboard/spectroclusters/metadata/search": { - "post": { - "operationId": "v1SpectroClustersMetadataSearch", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SearchFilterSummarySpec" + "v1SpectroClusterProfileList": { + "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" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster summary meta items", - "schema": { - "$ref": "#/definitions/v1SpectroClustersMetadataSearch" + } + } + }, + "v1SpectroClusterProfileSpec": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Retrieves a list of cluster metadata with provided search filter spec Supported sort fields - [\"environment\", \"clusterName\", \"clusterState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", - "tags": [ - "dashboard" - ] + }, + "type": { + "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", + "type": "string" + }, + "version": { + "description": "Cluster profile version", + "type": "integer", + "format": "int32" + } } }, - "/v1/dashboard/spectroclusters/metadata/search/schema": { - "get": { - "operationId": "v1SpectroClustersMetadataSearchSchema", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1SpectroClusterProfileUpdates": { + "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" + } + } } - ], - "responses": { - "200": { - "description": "An array of cluster meta schema items", - "schema": { - "$ref": "#/definitions/v1SearchFilterSchemaSpec" + } + } + }, + "v1SpectroClusterProfileValidatorResponse": { + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a schema for the cluster metadata search filter", - "tags": [ - "dashboard" - ] + "uid": { + "description": "Cluster profile uid", + "type": "string" + } } }, - "/v1/dashboard/spectroclusters/repaveStatus": { - "get": { - "operationId": "v1DashboardSpectroClustersRepaveList", - "parameters": [ - { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "maximum": 20, - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "InProgress", - "Completed" - ], - "in": "query", - "name": "repaveState", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1SpectroClusterProfiles": { + "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" + } + } } - ], - "responses": { - "200": { - "description": "An array of cluster summary items", - "schema": { - "$ref": "#/definitions/v1SpectroClustersSummary" + }, + "spcApplySettings": { + "type": "object", + "properties": { + "actionType": { + "type": "string", + "enum": [ + "DownloadAndInstall", + "DownloadAndInstallLater" + ] } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of clusters with the desired repave state", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/resources/consumption": { - "post": { - "operationId": "v1SpectroClustersResourcesConsumption", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ResourceConsumptionSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1SpectroClusterProfilesDeleteEntity": { + "type": "object", + "properties": { + "profileUids": { + "description": "Cluster's profile uid list", + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of resource consumption data items", - "schema": { - "$ref": "#/definitions/v1ResourcesConsumption" + } + } + }, + "v1SpectroClusterProfilesPacksManifests": { + "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" + } + } + } + } + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves spectro clusters resource consumption", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/resources/cost": { - "post": { - "operationId": "v1SpectroClustersResourcesCostSummary", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ResourceCostSummarySpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1SpectroClusterProfilesParamReferenceEntity": { + "description": "Cluster profiles param reference entity", + "type": "object", + "properties": { + "references": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of resources cost summary items", - "schema": { - "$ref": "#/definitions/v1ResourcesCostSummary" + } + } + }, + "v1SpectroClusterProfilesResolvedValues": { + "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" + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + } + } + }, + "v1SpectroClusterProjectCleanedResource": { + "description": "List of cleaned project spectro cluster resources", + "type": "object", + "properties": { + "resources": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Retrieves spectro clusters resources cost summary information", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/resources/usage": { - "post": { - "operationId": "v1SpectroClustersResourcesUsageSummary", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ResourceUsageSummarySpec" + "v1SpectroClusterProjectCleanupValidateEntity": { + "description": "Cluster duration thresholds", + "type": "object", + "properties": { + "deletingClusterDurationThresholdInMin": { + "type": "integer", + "format": "int32" + }, + "provisioningClusterDurationThresholdInMin": { + "type": "integer", + "format": "int32" + } + } + }, + "v1SpectroClusterRate": { + "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 + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of resources usage summary items", - "schema": { - "$ref": "#/definitions/v1ResourcesUsageSummary" + }, + "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 } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } + } + } + } + } } - ], - "summary": "Retrieves spectro clusters resources usage summary information", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/search": { - "post": { - "operationId": "v1SpectroClustersSearchFilterSummary", - "parameters": [ - { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "maximum": 20, - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SearchFilterSummarySpec" + "v1SpectroClusterRepave": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster summary items", - "schema": { - "$ref": "#/definitions/v1SpectroClustersSummary" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } } - ], - "summary": "Retrieves a list of cluster summary with provided search filter spec Supported sort fields - [\"environment\", \"clusterName\", \"memoryUsage\", \"healthState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/search/export": { - "get": { - "operationId": "v1DashboardClustersSearchSummaryExportGet", - "parameters": [ - { - "in": "query", - "name": "encodedFilter", - "type": "string" - }, - { - "default": "csv", - "enum": [ - "csv" - ], - "in": "query", - "name": "format", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1SpectroClusterRepaveReason": { + "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" + } + } + } } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "OK", - "headers": { - "Content-Disposition": { + } + } + }, + "v1SpectroClusterRepaveSpec": { + "type": "object", + "properties": { + "reasons": { + "description": "Spectro cluster repave reasons", + "type": "array", + "items": { + "description": "Cluster repave reason description", + "type": "object", + "properties": { + "code": { "type": "string" }, - "Content-Type": { + "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" + } + } + } + } } - }, - "schema": { - "type": "file" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Export and download the list of cluster summary with matching search filter and download as a file(csv)", - "tags": [ - "dashboard" - ] - }, - "post": { - "operationId": "v1DashboardClustersSearchSummaryExport", - "parameters": [ - { - "default": "csv", - "enum": [ - "csv" - ], - "in": "query", - "name": "format", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SearchFilterSummarySpec" + "source": { + "type": "string", + "enum": [ + "user", + "hubble", + "palette", + "stylus" + ] + }, + "spectroClusterUid": { + "type": "string" + } + } + }, + "v1SpectroClusterRepaveStatus": { + "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" + ] + } + } + }, + "v1SpectroClusterRepaveValidationResponse": { + "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" + } + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download file", - "headers": { - "Content-Disposition": { + } + } + }, + "v1SpectroClusterRevision": { + "description": "Revision specification details for a cluster", + "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" } }, - "schema": { - "format": "binary", + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } } - ], - "summary": "Export the list of cluster summary with matching search filter and download as a file(csv) Supported sort fields - [\"environment\", \"clusterName\", \"healthState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/search/input": { - "get": { - "operationId": "v1DashboardSpectroClustersSearchInput", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster search filter input items", - "schema": { - "$ref": "#/definitions/v1ClusterSearchInputSpec" - } - } + "v1SpectroClusterRevisionMeta": { + "description": "Revision spec uid along with the creationTimestamp for the revision", + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a supported input values for the cluster search filter", - "tags": [ - "dashboard" - ] + "uid": { + "description": "The unique id of the spc revision document", + "type": "string" + } } }, - "/v1/dashboard/spectroclusters/search/schema": { - "get": { - "operationId": "v1SpectroClustersSearchSchema", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster filter schema items", - "schema": { - "$ref": "#/definitions/v1SearchFilterSchemaSpec" + "v1SpectroClusterRevisionMetaList": { + "type": "object", + "properties": { + "spcRevisions": { + "type": "array", + "items": { + "description": "Revision spec uid along with the creationTimestamp for the revision", + "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" + }, + "uid": { + "description": "The unique id of the spc revision document", + "type": "string" + } } } + } + } + }, + "v1SpectroClusterSortFields": { + "type": "string", + "enum": [ + "environment", + "clusterName", + "healthState", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true + }, + "v1SpectroClusterSortSpec": { + "properties": { + "field": { + "type": "string", + "enum": [ + "environment", + "clusterName", + "healthState", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a schema for the cluster search filter", - "tags": [ - "dashboard" - ] + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } } }, - "/v1/dashboard/spectroclusters/vms": { - "get": { - "operationId": "V1DashboardVMEnabledClustersList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1SpectroClusterSpec": { + "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" + } } - ], - "responses": { - "200": { - "description": "An array of schema items", - "schema": { - "$ref": "#/definitions/v1VMClusters" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Retrieves a list of Virtual machine enabled clusters", - "tags": [ - "dashboard" - ] + }, + "clusterType": { + "type": "string", + "enum": [ + "PureManage", + "AlloyMonitor", + "AlloyAssist", + "AlloyExtend" + ] + } } }, - "/v1/dashboard/spectroclusters/{uid}": { - "get": { - "operationId": "v1SpectroClustersSummaryUid", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An spectro cluster summary", - "schema": { - "$ref": "#/definitions/v1SpectroClusterUidSummary" + "v1SpectroClusterStatus": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Returns the specified cluster summary", - "tags": [ - "dashboard" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ] - }, - "/v1/dashboard/spectroclusters/{uid}/cost": { - "get": { - "operationId": "v1SpectroClustersUidCostSummary", - "parameters": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "format": "date-time", - "in": "query", - "name": "startTime", - "type": "string" - }, - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "format": "date-time", - "in": "query", - "name": "endTime", - "type": "string" - }, - { - "description": "period in minutes, group the data point by the specified period", - "format": "int32", - "in": "query", - "minimum": 60, - "name": "period", - "type": "integer" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + }, + "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" + } } - ], - "responses": { - "200": { - "description": "An spectro cluster cost summary", - "schema": { - "$ref": "#/definitions/v1SpectroClusterCostSummary" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "fips": { + "properties": { + "mode": { + "type": "string", + "default": "none", + "enum": [ + "full", + "none", + "partial", + "unknown" + ] + } } - ], - "summary": "Retrieves the specified cluster cost summary", - "tags": [ - "dashboard" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ] - }, - "/v1/dashboard/spectroclusters/{uid}/overview": { - "get": { - "operationId": "v1SpectroClustersSummaryUidOverview", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + }, + "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" + } } - ], - "responses": { - "200": { - "description": "An spectro cluster summary overview", - "schema": { - "$ref": "#/definitions/v1SpectroClusterUidSummary" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cluster summary overview", - "tags": [ - "dashboard" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ] - }, - "/v1/dashboard/spectroclusters/{uid}/resources/consumption": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1SpectroClustersUidResourcesConsumption", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ResourceConsumptionSpec" + "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 } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of resource consumption data items", - "schema": { - "$ref": "#/definitions/v1ResourcesConsumption" + }, + "repave": { + "description": "Cluster repave status", + "properties": { + "state": { + "type": "string", + "default": "Pending", + "enum": [ + "Pending", + "Approved", + "Reverted" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } } - ], - "summary": "Retrieves specified spectro cluster resource consumption", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/spectroclusters/{uid}/workloads": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardSpectroClustersUidWorkloads", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadsSpec" + }, + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster workloads", - "schema": { - "$ref": "#/definitions/v1ClusterWorkload" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Retrieves specified cluster workloads", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/{uid}/workloads/clusterrolebinding": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardSpectroClustersUidWorkloadsClusterRoleBinding", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadsSpec" + "v1SpectroClusterSummary": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster workload clusterrolebindings", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadRoleBindings" + }, + "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" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } + } } - ], - "summary": "Retrieves specified cluster workload clusterrolebindings", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/{uid}/workloads/cronjob": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardSpectroClustersUidWorkloadsCronJob", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadsSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster workload cronjobs", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadCronJobs" + "v1SpectroClusterSummarySpec": { + "description": "Spectro cluster filter summary spec", + "properties": { + "filter": { + "description": "Spectro cluster filter spec", + "properties": { + "cloudAccounts": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "clusterName": { + "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 + } + } + }, + "clusterProfiles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "clusterState": { + "type": "string", + "enum": [ + "Pending", + "Provisioning", + "Running", + "Deleting", + "Deleted", + "Error", + "Importing" + ] + }, + "clusterStates": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "Pending", + "Provisioning", + "Running", + "Deleting", + "Deleted", + "Error", + "Importing" + ] + } + }, + "cpuUsage": { + "type": "object", + "properties": { + "eq": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "gt": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "gte": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "lt": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "lte": { + "type": "integer", + "format": "int32", + "x-nullable": true + }, + "ne": { + "type": "integer", + "format": "int32", + "x-nullable": true + } + } + }, + "environment": { + "description": "Deprecated. Use environments", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "environments": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "healthState": { + "type": "string", + "default": "all", + "enum": [ + "all", + "Healthy", + "UnHealthy" + ] + }, + "isDeleted": { + "type": "boolean", + "default": false + }, + "isHostCluster": { + "type": "boolean", + "default": false, + "x-omitempty": false + }, + "memoryUsage": { + "type": "object", + "properties": { + "eq": { + "type": "number", + "x-nullable": true + }, + "gt": { + "type": "number", + "x-nullable": true + }, + "gte": { + "type": "number", + "x-nullable": true + }, + "lt": { + "type": "number", + "x-nullable": true + }, + "lte": { + "type": "number", + "x-nullable": true + }, + "ne": { + "type": "number", + "x-nullable": true + } + } + }, + "metricPeriod": { + "description": "Metric period in minutes defines latest metrics by period", + "type": "integer", + "format": "int32", + "default": 60 + }, + "projectUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "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 + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves specified cluster workload cronjobs", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/spectroclusters/{uid}/workloads/daemonset": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardSpectroClustersUidWorkloadsDaemonSet", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadsSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster workload daemonsets", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadDaemonSets" + "sort": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "field": { + "type": "string", + "enum": [ + "environment", + "clusterName", + "healthState", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "x-nullable": true + }, + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves specified cluster workload daemonsets", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/spectroclusters/{uid}/workloads/deployment": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardSpectroClustersUidWorkloadsDeployment", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadsSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster workload deployments", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadDeployments" + "v1SpectroClusterUidStatusSummary": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves specified cluster workload deployments", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/spectroclusters/{uid}/workloads/job": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardSpectroClustersUidWorkloadsJob", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadsSpec" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster workload jobs", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadJobs" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves specified cluster workload jobs", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/spectroclusters/{uid}/workloads/namespace": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardSpectroClustersUidWorkloadsNamespace", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadsSpec" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster workload namespaces", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadNamespaces" + }, + "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 } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves specified cluster workload namespaces", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/spectroclusters/{uid}/workloads/pod": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardSpectroClustersUidWorkloadsPod", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadsSpec" + "fips": { + "properties": { + "mode": { + "type": "string", + "default": "none", + "enum": [ + "full", + "none", + "partial", + "unknown" + ] } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster workload pods", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadPods" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves specified cluster workload pods", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/spectroclusters/{uid}/workloads/rolebinding": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardSpectroClustersUidWorkloadsRoleBinding", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadsSpec" + "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 } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster workload rolebindings", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadRoleBindings" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves specified cluster workload rolebindings", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/spectroclusters/{uid}/workloads/statefulset": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardSpectroClustersUidWorkloadsStatefulSet", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadsSpec" + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster workload statefulsets", - "schema": { - "$ref": "#/definitions/v1ClusterWorkloadStatefulSets" + }, + "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 + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves specified cluster workload statefulsets", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/workspaces": { - "get": { - "operationId": "v1DashboardWorkspacesList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of workspace", - "schema": { - "$ref": "#/definitions/v1DashboardWorkspaces" + "notifications": { + "description": "Spectro cluster notifications", + "properties": { + "isAvailable": { + "type": "boolean", + "x-omitempty": false } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of workspace", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/clusterrolebinding": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsClusterRoleBinding", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of clusters workload clusterrolebindings", - "schema": { - "$ref": "#/definitions/v1WorkspaceClustersWorkloadRoleBindings" + }, + "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" + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Retrieves specified workspace clusters workload clusterrolebindings", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/cronjob": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + }, + "state": { + "description": "current operational state", "type": "string" - } - ], - "post": { - "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsCronJob", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + }, + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of clusters workload cronjobs", - "schema": { - "$ref": "#/definitions/v1WorkspaceClustersWorkloadCronJobs" + }, + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "workspaces": { + "type": "array", + "items": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } } - ], - "summary": "Retrieves specified workspace clusters workload cronjobs", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/daemonset": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsDaemonSet", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + "v1SpectroClusterUidSummary": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of clusters workload daemonsets", - "schema": { - "$ref": "#/definitions/v1WorkspaceClustersWorkloadDaemonSets" + }, + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Retrieves specified workspace clusters workload daemonsets", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/deployment": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1SpectroClusterUidUpgrades": { + "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" + } + } + } } + } + }, + "v1SpectroClusterVMCloneEntity": { + "type": "object", + "required": [ + "cloneName" ], - "post": { - "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsDeployment", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "properties": { + "annotationFilters": { + "description": "Annotation filters", + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of clusters workload deployments", - "schema": { - "$ref": "#/definitions/v1WorkspaceClustersWorkloadDeployments" - } + }, + "cloneName": { + "description": "Cloning Virtual machine's name", + "type": "string" + }, + "labelFilters": { + "description": "Label filters", + "type": "array", + "items": { + "type": "string" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "newMacAddresses": { + "description": "NewMacAddresses manually sets that target interfaces' mac addresses. The key is the interface name and the value is the new mac address. If this field is not specified, a new MAC address will be generated automatically, as for any interface that is not included in this map", + "type": "object", + "additionalProperties": { + "type": "string" } - ], - "summary": "Retrieves specified workspace clusters workload deployments", - "tags": [ - "dashboard" - ] - } - }, - "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/job": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + }, + "newSMBiosSerial": { + "description": "NewSMBiosSerial manually sets that target's SMbios serial. If this field is not specified, a new serial will be generated automatically.", "type": "string" } - ], - "post": { - "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsJob", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of clusters workload jobs", - "schema": { - "$ref": "#/definitions/v1WorkspaceClustersWorkloadJobs" + } + }, + "v1SpectroClusterValidatorResponse": { + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Retrieves specified workspace clusters workload jobs", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/namespace": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } + "v1SpectroClusters": { + "type": "object", + "required": [ + "items" ], - "post": { - "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsNamespace", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of clusters workload namespaces", - "schema": { - "$ref": "#/definitions/v1WorkspaceClustersWorkloadNamespaces" + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "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" + } + } + } + } + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Retrieves specified workspace clusters workload namespaces", - "tags": [ - "dashboard" - ] + } } }, - "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/pod": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsPod", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1SpectroClustersAgentsNotifyEntity": { + "description": "SpectroClusters for which agents has to be notified", + "properties": { + "clusterUids": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of clusters workload pods", - "schema": { - "$ref": "#/definitions/v1WorkspaceClustersWorkloadPods" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves specified workspace clusters workload pods", - "tags": [ - "dashboard" - ] + "notifyAllClusters": { + "type": "boolean" + } } }, - "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/rolebinding": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsRoleBinding", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1SpectroClustersCostComputeSpec": { + "description": "Cluster's cost compute spec", + "type": "object", + "properties": { + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of clusters workload rolebindings", - "schema": { - "$ref": "#/definitions/v1WorkspaceClustersWorkloadRoleBindings" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves specified workspace clusters workload rolebindings", - "tags": [ - "dashboard" - ] + "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" + } } }, - "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/statefulset": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1SpectroClustersHealth": { + "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 } + } + }, + "v1SpectroClustersMetadata": { + "type": "object", + "required": [ + "items" ], - "post": { - "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsStatefulSet", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "An array of clusters workload statefulsets", - "schema": { - "$ref": "#/definitions/v1WorkspaceClustersWorkloadStatefulSets" + } + } + }, + "v1SpectroClustersMetadataSearch": { + "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 + } + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Retrieves specified workspace clusters workload statefulsets", - "tags": [ - "dashboard" - ] + } } }, - "/v1/datasinks/cloudwatch": { - "post": { - "description": "Sync data to cloud watch", - "operationId": "V1DataSinksCloudWatchSink", - "parameters": [ - { - "description": "Request payload for cloud watch config", - "in": "body", - "name": "dataSinkCloudWatchConfig", - "required": true, - "schema": { - "$ref": "#/definitions/v1.DataSinkCloudWatchConfig" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + "v1SpectroClustersSummary": { + "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" + } + } + } + } + } + } + } } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "sync data to cloud watch", - "tags": [ - "datasinks" - ] + } } }, - "/v1/edgehosts": { - "get": { - "description": "Deprecated. Use POST /v1/dashboard/edgehosts/search , to retrieve all the edgehosts without pagination use GET /v1/edgehosts/metadata.", - "operationId": "v1EdgeHostDevicesList", - "parameters": [ - { - "enum": [ - "libvirt", - "edge-native", - "vsphere" - ], - "in": "query", - "name": "type", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1SpectroClustersUsageComputeSpec": { + "description": "Cluster's usage compute spec", + "type": "object", + "properties": { + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of edge host device items", - "schema": { - "$ref": "#/definitions/v1EdgeHostDevices" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieve the Complete Edgehost Metadata List", - "tags": [ - "edgehosts" - ] - }, - "post": { - "operationId": "v1EdgeHostDevicesCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeHostDeviceEntity" + "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" + } + } + }, + "v1SpectroCoxEdgeClusterEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "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 + } + } + } + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" + } + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create the edge host device", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/metadata": { - "get": { - "operationId": "v1EdgeHostsMetadataQuickFilterGet", - "parameters": [ - { - "enum": [ - "libvirt", - "edge-native", - "vsphere" - ], - "in": "query", - "name": "type", - "type": "string" - }, - { - "enum": [ - "unusedEdgeHosts" - ], - "in": "query", - "name": "quickFilter", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of edge host metadata", - "schema": { - "$ref": "#/definitions/v1EdgeHostsMeta" + "v1SpectroCoxEdgeClusterRateEntity": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } } - ], - "summary": "Retrieves a list of edge hosts metadata matching the filter condition", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/register": { - "post": { - "operationId": "v1EdgeHostDevicesRegister", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeHostDevice" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1EdgeHostDevice" + "v1SpectroCustomClusterEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Registers the edge host device", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/tokens": { - "get": { - "operationId": "v1EdgeTokensList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of edge tokens", - "schema": { - "$ref": "#/definitions/v1EdgeTokens" + "v1SpectroEdgeClusterEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of edge tokens", - "tags": [ - "edgehosts" - ] - }, - "post": { - "operationId": "v1EdgeTokensCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeTokenEntity" + "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" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1SpectroEdgeClusterImportEntity": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "labels": { + "description": "Labels are key value data to 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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } } - ], - "summary": "Create the edge token", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/tokens/{uid}": { - "delete": { - "operationId": "v1EdgeTokensUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1SpectroEdgeClusterRateEntity": { + "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" + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified edge token", - "tags": [ - "edgehosts" - ] - }, - "get": { - "operationId": "v1EdgeTokensUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "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 + } + } + } + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1EdgeToken" + } + } + }, + "v1SpectroEdgeNativeClusterEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Returns the specified edge token", - "tags": [ - "edgehosts" - ] - }, - "parameters": [ - { - "description": "Edge token uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ], - "put": { - "operationId": "v1EdgeTokensUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeTokenUpdate" + } + }, + "v1SpectroEdgeNativeClusterImportEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } } - ], - "summary": "Updates the specified edge token", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/tokens/{uid}/state": { - "parameters": [ - { - "description": "Edge token uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1EdgeTokensUidState", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeTokenActiveState" + "v1SpectroEdgeNativeClusterRateEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } } - ], - "summary": "Revoke or re-activate the edge token access", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/{uid}": { - "delete": { - "operationId": "v1EdgeHostDevicesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1SpectroEksClusterEntity": { + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified edge host device", - "tags": [ - "edgehosts" - ] - }, - "get": { - "operationId": "v1EdgeHostDevicesUidGet", - "parameters": [ - { - "default": false, - "description": "resolve pack values if set to true", - "in": "query", - "name": "resolvePackValues", - "type": "boolean" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "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" + } + } + } + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1EdgeHostDevice" + } + } + }, + "v1SpectroEksClusterRateEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } } - ], - "summary": "Returns the specified edge host device", - "tags": [ - "edgehosts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ], - "put": { - "operationId": "v1EdgeHostDevicesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeHostDevice" + } + }, + "v1SpectroGcpClusterEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Updates the specified edge host device", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/{uid}/cluster/associate": { - "delete": { - "operationId": "v1EdgeHostDevicesUidClusterDeassociate", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1SpectroGcpClusterImportEntity": { + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } } - ], - "summary": "Deassociate the clusters to the edge host", - "tags": [ - "edgehosts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ], - "patch": { - "operationId": "v1EdgeHostDevicesUidClusterAssociate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeHostClusterEntity" + } + }, + "v1SpectroGcpClusterRateEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } } - ], - "summary": "Associate the clusters to the edge host", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/{uid}/health": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1EdgeHostDevicesHealthUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeHostHealth" + "v1SpectroGenericClusterImportEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Updates the edge host health", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/{uid}/hostCheckSum": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1EdgeHostDeviceHostCheckSumUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeHostDeviceHostCheckSum" + "v1SpectroGenericClusterRateEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } } - ], - "summary": "Update the specified edge host device host check sum", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/{uid}/hostPairingKey": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1EdgeHostDeviceHostPairingKeyUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeHostDeviceHostPairingKey" + "v1SpectroInstallerEntity": { + "description": "Spectro installer entity for create", + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "spec": { + "type": "object", + "properties": { + "cloudAccountUid": { + "type": "string" + }, + "privateGatewayUid": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "description": "Spectro cluster installer status", + "type": "object", + "properties": { + "clusterMigration": { + "description": "Spectro cluster migration status", + "type": "object", + "properties": { + "database": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "finishTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "folderName": { + "type": "string" + }, + "isCompleted": { + "type": "boolean" + }, + "message": { + "type": "array", + "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" + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "status": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "tenant": { + "description": "Spectro tenant migration status", + "type": "object", + "properties": { + "clusters": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Spectro tenant cluster migration status", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "state": { + "type": "string", + "x-omitempty": false + } + } + } + } + }, + "clusterState": { + "type": "string" + }, + "endpoint": { + "type": "string", + "x-omitempty": false + } } - ], - "summary": "Update the specified edge host device host pairing key", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/{uid}/meta": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1EdgeHostDevicesUidMetaUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeHostDeviceMetaUpdateEntity" + "v1SpectroInstallerInputEntity": { + "description": "Spectro installer entity for create", + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified edge host device meta", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/{uid}/pack/manifests/{manifestUid}": { - "get": { - "operationId": "v1EdgeHostDevicesUidPackManifestsUidGet", - "parameters": [ - { - "description": "edge host uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "manifest uid which is part of the pack ref", - "in": "path", - "name": "manifestUid", - "required": true, - "type": "string" - }, - { - "default": false, - "description": "resolve pack manifest values if set to true", - "in": "query", - "name": "resolveManifestValues", - "type": "boolean" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1SpectroInstallerStatus": { + "description": "spectro installer status", + "type": "object", + "properties": { + "status": { + "description": "Spectro cluster installer status", + "type": "object", + "properties": { + "clusterMigration": { + "description": "Spectro cluster migration status", + "type": "object", + "properties": { + "database": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "finishTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "folderName": { + "type": "string" + }, + "isCompleted": { + "type": "boolean" + }, + "message": { + "type": "array", + "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" + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "status": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "tenant": { + "description": "Spectro tenant migration status", + "type": "object", + "properties": { + "clusters": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Spectro tenant cluster migration status", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "state": { + "type": "string", + "x-omitempty": false + } + } + } + } + }, + "clusterState": { + "type": "string" + }, + "endpoint": { + "type": "string", + "x-omitempty": false + } } - ], - "responses": { - "200": { - "description": "Pack manifest content", - "schema": { - "$ref": "#/definitions/v1Manifest" + } + } + }, + "v1SpectroInstallers": { + "description": "List Spectro installers", + "type": "object", + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Spectro installer entity for create", + "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": { + "cloudAccountUid": { + "type": "string" + }, + "privateGatewayUid": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + } + } + }, + "status": { + "description": "Spectro cluster installer status", + "type": "object", + "properties": { + "clusterMigration": { + "description": "Spectro cluster migration status", + "type": "object", + "properties": { + "database": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "finishTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "folderName": { + "type": "string" + }, + "isCompleted": { + "type": "boolean" + }, + "message": { + "type": "array", + "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" + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "status": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "tenant": { + "description": "Spectro tenant migration status", + "type": "object", + "properties": { + "clusters": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Spectro tenant cluster migration status", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "state": { + "type": "string", + "x-omitempty": false + } + } + } + } + }, + "clusterState": { + "type": "string" + }, + "endpoint": { + "type": "string", + "x-omitempty": false + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Returns the specified edge host's manifest", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/{uid}/packs/status": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1EdgeHostDevicesUidPacksStatusPatch", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterPacksStatusEntity" + "v1SpectroLibvirtClusterEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Patch update specified edge host's packs status", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/{uid}/profiles": { - "get": { - "operationId": "v1EdgeHostDevicesUidProfilesGet", - "parameters": [ - { - "description": "includes pack meta such as schema, presets", - "in": "query", - "name": "includePackMeta", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfileList" + "v1SpectroLibvirtClusterImportEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } } - ], - "summary": "Returns the associated profiles of a specified edge host device", - "tags": [ - "edgehosts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ], - "put": { - "operationId": "v1EdgeHostDevicesUidProfilesUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfiles" + } + }, + "v1SpectroLibvirtClusterRateEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } } - ], - "summary": "Associate cluster profiles to the specified edge host device", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/{uid}/reset": { - "parameters": [ - { - "description": "Edge host uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "V1EdgeHostsUidReset", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1SpectroMaasClusterEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Reset the cluster through edge host", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/edgehosts/{uid}/spc/download": { - "get": { - "operationId": "v1EdgeHostDevicesUidSpcDownload", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download spc archive file", - "headers": { - "Content-Disposition": { + "v1SpectroMaasClusterImportEntity": { + "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" } }, - "schema": { - "format": "binary", + "labels": { + "description": "Labels are key value data to 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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } } - ], - "summary": "Download the specified edge host device spc", - "tags": [ - "edgehosts" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/edgehosts/{uid}/vsphere/properties": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1EdgeHostDevicesUidVspherePropertiesUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EdgeHostVsphereCloudProperties" + "v1SpectroMaasClusterRateEntity": { + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } } - ], - "summary": "Updates the specified edge host device vsphere properties", - "tags": [ - "edgehosts" - ] + } } }, - "/v1/events/components": { - "get": { - "description": "Returns a paginated list of component events based on request parameters", - "operationId": "v1EventsComponentsList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of component events items", - "schema": { - "$ref": "#/definitions/v1Events" + "v1SpectroMgmt": { + "description": "Spectro management data", + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns a paginated list of component events based on request parameters", - "tags": [ - "events" - ] - }, - "post": { - "description": "Creates a component event", - "operationId": "v1EventsComponentsCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Event" + "spec": { + "description": "spectro management specifications", + "properties": { + "installerMode": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + }, + "targetVersion": { + "type": "string" + }, + "version": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "status": { + "description": "spectro management status information", + "properties": { + "appVersions": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro application management app version information", + "properties": { + "intermediateVersions": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro application management release version information", + "properties": { + "date": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "releaseNotes": { + "type": "array", + "items": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "version": { + "type": "string" + } + } + } + }, + "latestVerson": { + "description": "spectro application management release version information", + "properties": { + "date": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "releaseNotes": { + "type": "array", + "items": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "version": { + "type": "string" + } + } + } + } + } + }, + "isFailed": { + "type": "boolean", + "x-omitempty": false + }, + "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" + }, + "message": { + "type": "string" + }, + "messageLogs": { + "type": "array", + "items": { "type": "string" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "state": { + "type": "string" + }, + "upgradeHistory": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro management upgrade logs", + "properties": { + "upgradeTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "version": { + "type": "string" + } + } + } } } + } + } + }, + "v1SpectroMgmtSpec": { + "description": "spectro management specifications", + "properties": { + "installerMode": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a component event", - "tags": [ - "events" - ] + "spectroClusterUid": { + "type": "string" + }, + "targetVersion": { + "type": "string" + }, + "version": { + "type": "string" + } } }, - "/v1/events/components/bulk": { - "post": { - "description": "Creates the component events in bulk", - "operationId": "v1EventsComponentsCreateBulk", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1BulkEvents" + "v1SpectroMgmtStatus": { + "description": "spectro management status information", + "properties": { + "appVersions": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro application management app version information", + "properties": { + "intermediateVersions": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro application management release version information", + "properties": { + "date": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "releaseNotes": { + "type": "array", + "items": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "version": { + "type": "string" + } + } + } + }, + "latestVerson": { + "description": "spectro application management release version information", + "properties": { + "date": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "releaseNotes": { + "type": "array", + "items": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + }, + "version": { + "type": "string" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "isFailed": { + "type": "boolean", + "x-omitempty": false + }, + "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" + }, + "message": { + "type": "string" + }, + "messageLogs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "$ref": "#/definitions/v1Uids" + }, + "state": { + "type": "string" + }, + "upgradeHistory": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "spectro management upgrade logs", + "properties": { + "upgradeTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "version": { + "type": "string" + } } } + } + } + }, + "v1SpectroMgmtUpgrade": { + "description": "spectro management upgrade logs", + "properties": { + "upgradeTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates the component events in bulk", - "tags": [ - "events" - ] + "version": { + "type": "string" + } } }, - "/v1/events/components/{objectKind}/{objectUid}": { - "delete": { - "operationId": "v1EventsComponentsObjTypeUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1SpectroMgmtUpgradePack": { + "description": "Spectro application management cluster upgrade pack information", + "type": "object", + "properties": { + "diffMessage": { + "description": "Spectro application management cluster pack difference message", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete all the components events for the specified related object", - "tags": [ - "events" - ] - }, - "get": { - "description": "Returns a list of components events for the specified related object", - "operationId": "v1EventsComponentsObjTypeUidList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of component event items", - "schema": { - "$ref": "#/definitions/v1Events" - } - } + "layer": { + "description": "Spectro application management cluster pack layer type", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns a list of components events for the specified related object", - "tags": [ - "events" - ] - }, - "parameters": [ - { - "description": "Describes the related object uid for which events has to be fetched", - "enum": [ - "spectrocluster", - "edgehost" - ], - "in": "path", - "name": "objectKind", - "required": true, + "name": { + "description": "Spectro application management cluster pack name", "type": "string" }, - { - "description": "Describes the related object kind for which events has to be fetched", - "in": "path", - "name": "objectUid", - "required": true, + "registryUid": { + "description": "Spectro application management cluster pack registry unique identifier", + "type": "string" + }, + "type": { + "description": "Spectro application management cluster pack type", + "type": "string" + }, + "uid": { + "description": "Spectro application management cluster pack unique identifier", + "type": "string" + }, + "values": { + "description": "Spectro application management cluster pack values", + "type": "string" + }, + "version": { + "description": "Spectro application management cluster pack version", "type": "string" } - ] + } }, - "/v1/filters": { - "get": { - "operationId": "v1FiltersList", - "parameters": [ - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of filters", - "schema": { - "$ref": "#/definitions/v1FiltersSummary" + "v1SpectroMgmtUpgradeProfile": { + "description": "Spectro application management cluster upgrade pack information", + "type": "object", + "properties": { + "packs": { + "description": "Spectro application management cluster upgrade packs", + "type": "array", + "items": { + "description": "Spectro application management cluster upgrade pack information", + "type": "object", + "properties": { + "diffMessage": { + "description": "Spectro application management cluster pack difference message", + "type": "string" + }, + "layer": { + "description": "Spectro application management cluster pack layer type", + "type": "string" + }, + "name": { + "description": "Spectro application management cluster pack name", + "type": "string" + }, + "registryUid": { + "description": "Spectro application management cluster pack registry unique identifier", + "type": "string" + }, + "type": { + "description": "Spectro application management cluster pack type", + "type": "string" + }, + "uid": { + "description": "Spectro application management cluster pack unique identifier", + "type": "string" + }, + "values": { + "description": "Spectro application management cluster pack values", + "type": "string" + }, + "version": { + "description": "Spectro application management cluster pack version", + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns a list of Filters", - "tags": [ - "filters" - ] + "uid": { + "description": "Spectro application management cluster profile unique identifier", + "type": "string" + } } }, - "/v1/filters/metadata": { - "get": { - "operationId": "v1FiltersMetadata", - "parameters": [ - { - "description": "filterType can be - [tag, meta, resource]", - "in": "query", - "name": "filterType", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1SpectroMgmtUpgradeProfiles": { + "description": "Spectro application management cluster information", + "type": "object", + "properties": { + "profiles": { + "description": "Spectro application management cluster profiles", + "type": "array", + "items": { + "description": "Spectro application management cluster upgrade pack information", + "type": "object", + "properties": { + "packs": { + "description": "Spectro application management cluster upgrade packs", + "type": "array", + "items": { + "description": "Spectro application management cluster upgrade pack information", + "type": "object", + "properties": { + "diffMessage": { + "description": "Spectro application management cluster pack difference message", + "type": "string" + }, + "layer": { + "description": "Spectro application management cluster pack layer type", + "type": "string" + }, + "name": { + "description": "Spectro application management cluster pack name", + "type": "string" + }, + "registryUid": { + "description": "Spectro application management cluster pack registry unique identifier", + "type": "string" + }, + "type": { + "description": "Spectro application management cluster pack type", + "type": "string" + }, + "uid": { + "description": "Spectro application management cluster pack unique identifier", + "type": "string" + }, + "values": { + "description": "Spectro application management cluster pack values", + "type": "string" + }, + "version": { + "description": "Spectro application management cluster pack version", + "type": "string" + } + } + } + }, + "uid": { + "description": "Spectro application management cluster profile unique identifier", + "type": "string" + } + } } - ], - "responses": { - "200": { - "description": "An array of filters", - "schema": { - "$ref": "#/definitions/v1FiltersMetadata" + }, + "version": { + "description": "Spectro application management cluster version", + "type": "string" + } + } + }, + "v1SpectroMgmtUpgradeSpc": { + "description": "Spectro application management cluster upgrade profiles", + "type": "object", + "properties": { + "current": { + "description": "Spectro application management cluster information", + "type": "object", + "properties": { + "profiles": { + "description": "Spectro application management cluster profiles", + "type": "array", + "items": { + "description": "Spectro application management cluster upgrade pack information", + "type": "object", + "properties": { + "packs": { + "description": "Spectro application management cluster upgrade packs", + "type": "array", + "items": { + "description": "Spectro application management cluster upgrade pack information", + "type": "object", + "properties": { + "diffMessage": { + "description": "Spectro application management cluster pack difference message", + "type": "string" + }, + "layer": { + "description": "Spectro application management cluster pack layer type", + "type": "string" + }, + "name": { + "description": "Spectro application management cluster pack name", + "type": "string" + }, + "registryUid": { + "description": "Spectro application management cluster pack registry unique identifier", + "type": "string" + }, + "type": { + "description": "Spectro application management cluster pack type", + "type": "string" + }, + "uid": { + "description": "Spectro application management cluster pack unique identifier", + "type": "string" + }, + "values": { + "description": "Spectro application management cluster pack values", + "type": "string" + }, + "version": { + "description": "Spectro application management cluster pack version", + "type": "string" + } + } + } + }, + "uid": { + "description": "Spectro application management cluster profile unique identifier", + "type": "string" + } + } + } + }, + "version": { + "description": "Spectro application management cluster version", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "target": { + "description": "Spectro application management cluster information", + "type": "object", + "properties": { + "profiles": { + "description": "Spectro application management cluster profiles", + "type": "array", + "items": { + "description": "Spectro application management cluster upgrade pack information", + "type": "object", + "properties": { + "packs": { + "description": "Spectro application management cluster upgrade packs", + "type": "array", + "items": { + "description": "Spectro application management cluster upgrade pack information", + "type": "object", + "properties": { + "diffMessage": { + "description": "Spectro application management cluster pack difference message", + "type": "string" + }, + "layer": { + "description": "Spectro application management cluster pack layer type", + "type": "string" + }, + "name": { + "description": "Spectro application management cluster pack name", + "type": "string" + }, + "registryUid": { + "description": "Spectro application management cluster pack registry unique identifier", + "type": "string" + }, + "type": { + "description": "Spectro application management cluster pack type", + "type": "string" + }, + "uid": { + "description": "Spectro application management cluster pack unique identifier", + "type": "string" + }, + "values": { + "description": "Spectro application management cluster pack values", + "type": "string" + }, + "version": { + "description": "Spectro application management cluster pack version", + "type": "string" + } + } + } + }, + "uid": { + "description": "Spectro application management cluster profile unique identifier", + "type": "string" + } + } + } + }, + "version": { + "description": "Spectro application management cluster version", + "type": "string" + } } - ], - "summary": "Returns a list of Filters metadata", - "tags": [ - "filters" - ] + } } }, - "/v1/filters/tag": { - "post": { - "operationId": "v1TagFiltersCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TagFilter" + "v1SpectroOpenStackClusterEntity": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" + } + } + } + } + } + } + } + }, + "v1SpectroOpenStackClusterImportEntity": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "labels": { + "description": "Labels are key value data to 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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } } - ], - "summary": "Creates a Tag filter", - "tags": [ - "filters" - ] + } } }, - "/v1/filters/tag/{uid}": { - "delete": { - "operationId": "v1TagFilterUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete the specified Filter object", - "tags": [ - "filters" - ] - }, - "get": { - "operationId": "v1TagFilterUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "A Filter object", - "schema": { - "$ref": "#/definitions/v1TagFilterSummary" + "v1SpectroOpenStackClusterRateEntity": { + "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" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Filter object", - "tags": [ - "filters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1TagFilterUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TagFilter" + "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 + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "Updates a Tag filter", - "tags": [ - "filters" - ] + } } }, - "/v1/installers/spectro/vsphere/{uid}": { - "delete": { - "description": "Deprecated: please use the generic api", - "operationId": "v1SpectroInstallerDeleteDeprecated", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1SpectroTenantClusterMigration": { + "description": "Spectro tenant cluster migration status", + "type": "object", + "properties": { + "message": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the spectroinstaller entity", - "tags": [ - "installers" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "uid": { "type": "string" } - ] + } }, - "/v1/metrics/{resourceKind}/values": { - "get": { - "description": "Returns all the metrics for a given resource kind", - "operationId": "v1MetricsList", - "parameters": [ - { - "enum": [ - "pod", - "namespace", - "spectrocluster", - "machine", - "project" - ], - "in": "path", - "name": "resourceKind", - "required": true, - "type": "string" - }, - { - "default": "all", - "in": "query", - "name": "metricKind", - "type": "string" - }, - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "format": "date-time", - "in": "query", - "name": "startTime", - "type": "string" - }, - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "format": "date-time", - "in": "query", - "name": "endTime", - "type": "string" - }, - { - "default": 1, - "format": "int32", - "in": "query", - "name": "period", - "type": "integer" - }, - { - "default": false, - "description": "includeMasterMachines in boolean, group the data point by including master nodes if set to true", - "in": "query", - "name": "includeMasterMachines", - "type": "boolean" - }, - { - "default": false, - "description": "if true then api returns only aggregation values, else api returns all data points by default", - "in": "query", - "name": "discrete", - "type": "boolean" - }, - { - "in": "query", - "name": "spectroClusterUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of metric items", - "schema": { - "$ref": "#/definitions/v1MetricTimeSeriesList" + "v1SpectroTenantMigration": { + "description": "Spectro tenant migration status", + "type": "object", + "properties": { + "clusters": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Spectro tenant cluster migration status", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "uid": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves the list of metrics for a specified resource kind", - "tags": [ - "metrics" - ] + "state": { + "type": "string", + "x-omitempty": false + } } }, - "/v1/metrics/{resourceKind}/{resourceUid}/values": { - "delete": { - "operationId": "v1MetricsUidDelete", - "parameters": [ - { - "enum": [ - "pod", - "namespace", - "spectrocluster", - "machine", - "project" - ], - "in": "path", - "name": "resourceKind", - "required": true, - "type": "string" - }, - { - "in": "path", - "name": "resourceUid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1SpectroTencentClusterEntity": { + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the metrics of the specified resource", - "tags": [ - "metrics" - ] - }, - "get": { - "operationId": "v1MetricsUidList", - "parameters": [ - { - "enum": [ - "pod", - "namespace", - "spectrocluster", - "machine", - "project" - ], - "in": "path", - "name": "resourceKind", - "required": true, - "type": "string" - }, - { - "in": "path", - "name": "resourceUid", - "required": true, - "type": "string" - }, - { - "default": "all", - "description": "multiple metric kinds can be provided with comma separated", - "in": "query", - "name": "metricKind", - "type": "string" - }, - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "format": "date-time", - "in": "query", - "name": "startTime", - "type": "string" - }, - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "format": "date-time", - "in": "query", - "name": "endTime", - "type": "string" - }, - { - "default": 1, - "description": "period in minutes, group the data point by the specified period", - "format": "int32", - "in": "query", - "name": "period", - "type": "integer" - }, - { - "default": false, - "description": "includeMasterMachines in boolean, group the data point by including master nodes if set to true", - "in": "query", - "name": "includeMasterMachines", - "type": "boolean" - }, - { - "default": false, - "description": "if true then api returns only aggregation values, else api returns all data points by default", - "in": "query", - "name": "discrete", - "type": "boolean" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "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" + } + } + } + } } - ], - "responses": { - "200": { - "description": "An array of metric items", - "schema": { - "$ref": "#/definitions/v1MetricTimeSeries" + } + } + }, + "v1SpectroTencentClusterRateEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } } - ], - "summary": "Returns the metrics for a specified resource uid", - "tags": [ - "metrics" - ] + } } }, - "/v1/notifications/": { - "get": { - "description": "Returns a paginated list of notifications based on request parameters", - "operationId": "v1NotificationsList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" + "v1SpectroVirtualClusterEntity": { + "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" + } } - ], - "responses": { - "200": { - "description": "An array of notification items", - "schema": { - "$ref": "#/definitions/v1Notifications" + }, + "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" + } + } + } + } + } + } + } + }, + "v1SpectroVsphereClusterEntity": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Returns a paginated list of notifications based on request parameters", - "tags": [ - "notifications" - ] + } } }, - "/v1/notifications/events": { - "post": { - "description": "Creates a notification event", - "operationId": "v1NotificationsEventCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1NotificationEvent" + "v1SpectroVsphereClusterImportEntity": { + "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" } } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" + } + } + } + } + } + } + } + } + }, + "v1SpectroVsphereClusterRateEntity": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } } - ], - "summary": "Creates a notification event", - "tags": [ - "notifications" - ] + } } }, - "/v1/notifications/{objectKind}/{objectUid}": { - "get": { - "description": "Returns a list of notifications for the specified related object", - "operationId": "v1NotificationsObjTypeUidList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", + "v1SpotMarketOptions": { + "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", + "type": "object", + "properties": { + "maxPrice": { + "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", + "type": "string" + } + } + }, + "v1SpotVMOptions": { + "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" + } + } + }, + "v1SsoLogin": { + "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" + } + } + }, + "v1SsoLogins": { + "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" }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", + "logo": { + "description": "Describes the url path for the sso login", "type": "string" }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", + "name": { + "description": "Describes the processed name for the sso login", "type": "string" }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", + "redirectUri": { + "description": "Describes the sso login url for the authentication", "type": "string" } - ], - "responses": { - "200": { - "description": "An array of component event items", - "schema": { - "$ref": "#/definitions/v1Notifications" - } - } + } + } + }, + "v1StorageAccount": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns a list of notifications for the specified related object", - "tags": [ - "notifications" - ] - }, - "parameters": [ - { - "description": "Describes the related object kind for which notifications have to be fetched", - "enum": [ - "spectrocluster", - "clusterprofile", - "appdeployment" - ], - "in": "path", - "name": "objectKind", - "required": true, + "location": { + "description": "The geo-location where the resource lives", "type": "string" }, - { - "description": "Describes the related object uid for which notifications have to be fetched", - "in": "path", - "name": "objectUid", - "required": true, + "name": { + "description": "The name of the resource", + "type": "string" + } + } + }, + "v1StorageAccountEntity": { + "description": "Azure storage account entity", + "type": "object", + "properties": { + "id": { + "description": "Azure storage account id", "type": "string" }, - { - "description": "Describes a way to fetch \"done\" notifications", - "in": "query", - "name": "isDone", + "name": { + "description": "Azure storage account name", "type": "string" } - ] + } }, - "/v1/notifications/{uid}/ack": { - "parameters": [ - { - "description": "Describes acknowledging notification uid", - "in": "path", - "name": "uid", - "required": true, + "v1StorageContainer": { + "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" } - ], - "patch": { - "description": "Updates the specified notification for the acknowledgment", - "operationId": "v1NotificationsUidAck", - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1StorageCost": { + "description": "Cloud storage cost", + "type": "object", + "properties": { + "discountedUsage": { + "description": "Cloud storage upper limit which is free.", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Updates the specified notification for the acknowledgment", - "tags": [ - "notifications" - ] + } } }, - "/v1/notifications/{uid}/done": { - "parameters": [ - { - "description": "Describes notification uid", - "in": "path", - "name": "uid", - "required": true, + "v1StoragePrice": { + "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" } - ], - "patch": { - "description": "Updates the specified notification action as done", - "operationId": "v1NotificationsUidDone", - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1StorageRate": { + "description": "Storage estimated rate information", + "type": "object", + "properties": { + "iops": { + "type": "number", + "format": "float64" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified notification action as done", - "tags": [ - "notifications" - ] + "rate": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "sizeGB": { + "type": "number", + "format": "float64" + }, + "throughput": { + "type": "number", + "format": "float64" + }, + "type": { + "type": "string" + } } }, - "/v1/overlords": { - "get": { - "operationId": "v1OverlordsList", - "parameters": [ - { - "in": "query", - "name": "name", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1StorageType": { + "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" + } + } + } + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1Overlords" + }, + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Retrieves a list of overlords owned by the tenant", - "tags": [ - "overlords" - ] + } } }, - "/v1/overlords/maas/manifest": { - "get": { - "operationId": "V1OverlordsMaasManifest", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OverlordManifest" - } - } + "v1StripeKey": { + "description": "Stripe key object", + "properties": { + "publishKey": { + "description": "Publish stripe key", + "type": "string" + } + } + }, + "v1Subnet": { + "type": "object", + "properties": { + "cidrBlock": { + "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the manifests required for the private gateway installation", - "tags": [ - "overlords" - ] - }, - "parameters": [ - { - "in": "query", - "name": "pairingCode", - "required": true, + "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" } - ] + } }, - "/v1/overlords/maas/{uid}/account": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1Subscription": { + "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" + } + } + }, + "v1SyftDependency": { + "description": "Compliance Scan Syft Dependency", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1SyftDependencyEntity": { + "description": "Syft dependency", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "version": { "type": "string" } + } + }, + "v1SyftEntity": { + "description": "Syft response", + "required": [ + "requestUid", + "status", + "report" ], - "post": { - "operationId": "v1OverlordsUidMaasAccountCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordMaasAccountCreate" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + "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" + } + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "create the maas cloudaccount for the private gateway", - "tags": [ - "overlords" - ] - }, - "put": { - "operationId": "v1OverlordsUidMaasAccountUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordMaasAccountEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "requestUid": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "update the maas cloudaccount for the private gateway", - "tags": [ - "overlords" - ] + "status": { + "type": "string", + "enum": [ + "Completed", + "InProgress", + "Failed", + "Initiated" + ] + } } }, - "/v1/overlords/maas/{uid}/account/validate": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1SyftImageContext": { + "description": "Compliance Scan Syft Image Context", + "properties": { + "containerName": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { "type": "string" } - ], - "post": { - "operationId": "v1OverlordsUidMaasAccountValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "properties": { - "account": { - "$ref": "#/definitions/v1MaasCloudAccount" - } + } + }, + "v1SyftReport": { + "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" } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "validate the maas cloudaccount for the private gateway", - "tags": [ - "overlords" - ] + } } }, - "/v1/overlords/maas/{uid}/cloudconfig": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "V1OverlordsUidMaasCloudConfigCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordMaasCloudConfig" + "v1SyftReportEntity": { + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "image": { + "type": "string" + }, + "imageContexts": { + "type": "array", + "items": { + "description": "Compliance Scan Syft Image Context", + "properties": { + "containerName": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "create the maas cloud config for the private gateway", - "tags": [ - "overlords" - ] - }, - "put": { - "operationId": "V1OverlordsUidMaasCloudConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordMaasCloudConfig" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "update the maas cloud config for the private gateway", - "tags": [ - "overlords" - ] + } } }, - "/v1/overlords/maas/{uid}/clusterprofile": { - "get": { - "operationId": "v1OverlordsUidMaasClusterProfile", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterProfile" - } - } + "v1SyftScanContext": { + "description": "Compliance Scan Syft Context", + "properties": { + "format": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified maas private gateway cluster profile", - "tags": [ - "overlords" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "labelSelector": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "scope": { "type": "string" } - ] + } }, - "/v1/overlords/migrate": { - "post": { - "operationId": "V1OverlordsMigrate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordMigrateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "v1SyftVulnerability": { + "description": "Compliance Scan Syft Vulnerability", + "properties": { + "fixedIn": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "migrate all the clusters from source overlord to target overlord", - "tags": [ - "overlords" - ] + "installed": { + "type": "string" + }, + "name": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "type": { + "type": "string" + }, + "vulnerability": { + "type": "string" + } } }, - "/v1/overlords/openstack/manifest": { - "get": { - "operationId": "v1OverlordsOpenStackManifest", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OverlordManifest" - } - } + "v1SyftVulnerabilityEntity": { + "description": "Syft vulnerability", + "properties": { + "fixedIn": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the manifests required for the private gateway installation", - "tags": [ - "overlords" - ] - }, - "parameters": [ - { - "in": "query", - "name": "pairingCode", - "required": true, + "installed": { + "type": "string" + }, + "name": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "type": { + "type": "string" + }, + "vulnerability": { "type": "string" } - ] + } }, - "/v1/overlords/openstack/{uid}/account": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1SyftVulnerabilitySummary": { + "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" + } + } + }, + "v1SyftVulnerabilitySummaryEntity": { + "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" + } + } + }, + "v1SysLogin": { + "description": "System admin login input", + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "password": { + "type": "string", + "format": "password" + }, + "username": { "type": "string" } - ], - "post": { - "operationId": "v1OverlordsUidOpenStackAccountCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordOpenStackAccountCreate" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1SysUserToken": { + "description": "Auth token response", + "type": "object", + "properties": { + "Authorization": { + "type": "string" + }, + "IsEmailSet": { + "type": "boolean", + "x-omitempty": false + }, + "IsEmailVerified": { + "type": "boolean", + "x-omitempty": false + }, + "IsMfa": { + "type": "boolean", + "x-omitempty": false + }, + "IsPasswordReset": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1SystemAdmin": { + "description": "System Admin 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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "create the OpenStack cloudaccount for the private gateway", - "tags": [ - "overlords" - ] - }, - "put": { - "operationId": "v1OverlordsUidOpenStackAccountUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordOpenStackAccountEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "update the OpenStack cloudaccount for the private gateway", - "tags": [ - "overlords" - ] - } - }, - "/v1/overlords/openstack/{uid}/account/validate": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1OverlordsUidOpenStackAccountValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { + "spec": { + "description": "System Administrator Entity Specification", + "type": "object", + "required": [ + "firstName", + "lastName", + "emailId", + "adminType" + ], + "properties": { + "adminType": { + "type": "string", + "enum": [ + "AccountAdmin", + "OperationAdmin" + ] + }, + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "mfa": { + "description": "System Administrator MFA configuration", + "type": "object", "properties": { - "account": { - "$ref": "#/definitions/v1OpenStackCloudAccount" + "devices": { + "type": "array", + "items": { + "type": "string" + } + }, + "state": { + "type": "string" } } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "status": { + "description": "System Administrator Status", + "type": "object", + "properties": { + "activation": { + "description": "System Administrator Activation 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" + }, + "link": { + "type": "string" + } } + }, + "createdBy": { + "type": "string" + }, + "lastPasswordUpdate": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct 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" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "validate the OpenStack cloudaccount for the private gateway", - "tags": [ - "overlords" - ] + } } }, - "/v1/overlords/openstack/{uid}/cloudconfig": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1SystemAdminActivation": { + "description": "System Administrator Activation 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" + }, + "link": { "type": "string" } - ], - "post": { - "operationId": "v1OverlordsUidOpenStackCloudConfigCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordOpenStackCloudConfig" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1SystemAdminEntity": { + "description": "System Admin 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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "labels": { + "description": "Labels are key value data to 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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "create the OpenStack cloud config for the private gateway", - "tags": [ - "overlords" - ] - }, - "put": { - "operationId": "v1OverlordsUidOpenStackCloudConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordOpenStackCloudConfig" + "spec": { + "description": "System Administrator Entity Specification", + "type": "object", + "required": [ + "firstName", + "lastName", + "emailId", + "adminType" + ], + "properties": { + "adminType": { + "type": "string", + "enum": [ + "AccountAdmin", + "OperationAdmin" + ] + }, + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "mfa": { + "description": "System Administrator MFA configuration", + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "type": "string" + } + }, + "state": { + "type": "string" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "update the OpenStack cloud config for the private gateway", - "tags": [ - "overlords" - ] + } } }, - "/v1/overlords/openstack/{uid}/clusterprofile": { - "get": { - "operationId": "v1OverlordsUidOpenStackClusterProfile", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1SystemAdminMfa": { + "description": "System Administrator MFA configuration", + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterProfile" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified OpenStack private gateway cluster profile", - "tags": [ - "overlords" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "state": { "type": "string" } - ] + } }, - "/v1/overlords/pairing/code": { - "get": { - "operationId": "v1OverlordsPairingCode", - "parameters": [ - { - "enum": [ - "vsphere", - "openstack", - "maas" - ], - "in": "query", - "name": "cloudType", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1PairingCode" + "v1SystemAdminProfile": { + "description": "System Administrator Profile 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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "description": "System Administrator Profile Specification", + "type": "object", + "properties": { + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + } } - ], - "summary": "Returns the pairing code for the private gateway", - "tags": [ - "overlords" - ] + } } }, - "/v1/overlords/vsphere/manifest": { - "get": { - "operationId": "v1OverlordsVsphereManifest", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OverlordManifest" - } - } + "v1SystemAdminProfileSpec": { + "description": "System Administrator Profile Specification", + "type": "object", + "properties": { + "firstName": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the manifests required for the private gateway installation", - "tags": [ - "overlords" - ] - }, - "parameters": [ - { - "in": "query", - "name": "pairingCode", - "required": true, + "lastName": { "type": "string" } - ] - }, - "/v1/overlords/vsphere/ova": { - "get": { - "operationId": "v1OverlordsVsphereOvaGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OverloadVsphereOva" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns overlord's ova information", - "tags": [ - "overlords" - ] } }, - "/v1/overlords/vsphere/{uid}/account": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } + "v1SystemAdministratorSpec": { + "description": "System Administrator Entity Specification", + "type": "object", + "required": [ + "firstName", + "lastName", + "emailId", + "adminType" ], - "post": { - "operationId": "v1OverlordsUidVsphereAccountCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordVsphereAccountCreate" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "properties": { + "adminType": { + "type": "string", + "enum": [ + "AccountAdmin", + "OperationAdmin" + ] + }, + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "mfa": { + "description": "System Administrator MFA configuration", + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { "type": "string" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "state": { + "type": "string" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "create the vSphere cloudaccount for the private gateway", - "tags": [ - "overlords" - ] - }, - "put": { - "operationId": "v1OverlordsUidVsphereAccountUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordVsphereAccountEntity" + } + } + }, + "v1SystemAdministratorStatus": { + "description": "System Administrator Status", + "type": "object", + "properties": { + "activation": { + "description": "System Administrator Activation 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" + }, + "link": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "update the vSphere cloudaccount for the private gateway", - "tags": [ - "overlords" - ] - } - }, - "/v1/overlords/vsphere/{uid}/account/validate": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "createdBy": { + "type": "string" + }, + "lastPasswordUpdate": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct 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" } + } + }, + "v1SystemAdmins": { + "description": "List of System Admin information's", + "type": "object", + "required": [ + "items" ], - "post": { - "operationId": "v1OverlordsUidVsphereAccountValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "properties": { - "account": { - "$ref": "#/definitions/v1VsphereCloudAccount" + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "System Admin 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": "System Administrator Entity Specification", + "type": "object", + "required": [ + "firstName", + "lastName", + "emailId", + "adminType" + ], + "properties": { + "adminType": { + "type": "string", + "enum": [ + "AccountAdmin", + "OperationAdmin" + ] + }, + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "mfa": { + "description": "System Administrator MFA configuration", + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "type": "string" + } + }, + "state": { + "type": "string" + } + } + } + } + }, + "status": { + "description": "System Administrator Status", + "type": "object", + "properties": { + "activation": { + "description": "System Administrator Activation 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" + }, + "link": { + "type": "string" + } + } + }, + "createdBy": { + "type": "string" + }, + "lastPasswordUpdate": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct 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" + } } } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + } + } + }, + "v1SystemAwsAccount": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system aws account specifications", + "properties": { + "accessKey": { + "type": "string" + }, + "secretKey": { + "type": "string" + } + } + } + } + }, + "v1SystemAwsImage": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system aws account specifications", + "properties": { + "goldenImageRegion": { + "type": "string" } } + } + } + }, + "v1SystemAwsImageSpec": { + "description": "system aws account specifications", + "properties": { + "goldenImageRegion": { + "type": "string" + } + } + }, + "v1SystemAwsSpec": { + "description": "system aws account specifications", + "properties": { + "accessKey": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "validate the vSphere cloudaccount for the private gateway", - "tags": [ - "overlords" - ] + "secretKey": { + "type": "string" + } } }, - "/v1/overlords/vsphere/{uid}/cloudconfig": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1SystemAwsStsAccount": { + "description": "System AWS Gov account specifications", + "properties": { + "accessKey": { + "type": "string" + }, + "accountId": { + "type": "string" + }, + "secretKey": { "type": "string" } - ], - "post": { - "operationId": "v1OverlordsUidVsphereCloudConfigCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordVsphereCloudConfig" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + } + }, + "v1SystemAzureAccount": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system azure account specifications", + "properties": { + "clientId": { + "type": "string" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "clientSecret": { + "type": "string" + }, + "subscriptionId": { + "type": "string" + }, + "tenantId": { + "type": "string" } } + } + } + }, + "v1SystemAzureSpec": { + "description": "system azure account specifications", + "properties": { + "clientId": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "create the vSphere cloud config for the private gateway", - "tags": [ - "overlords" - ] - }, - "put": { - "operationId": "v1OverlordsUidVsphereCloudConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OverlordVsphereCloudConfig" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "clientSecret": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "update the vSphere cloud config for the private gateway", - "tags": [ - "overlords" - ] + "subscriptionId": { + "type": "string" + }, + "tenantId": { + "type": "string" + } } }, - "/v1/overlords/vsphere/{uid}/clusterprofile": { - "get": { - "operationId": "v1OverlordsUidVsphereClusterProfile", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterProfile" + "v1SystemAzureStorage": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system aws account specifications", + "properties": { + "accessKey": { + "type": "string" + }, + "container": { + "type": "string" + }, + "storageName": { + "type": "string" } } + } + } + }, + "v1SystemAzureStorageSpec": { + "description": "system aws account specifications", + "properties": { + "accessKey": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified vsphere private gateway cluster profile", - "tags": [ - "overlords" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "container": { + "type": "string" + }, + "storageName": { "type": "string" } - ] + } }, - "/v1/overlords/vsphere/{uid}/pools": { - "get": { - "operationId": "v1OverlordsUidPoolsList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1SystemBackupConfigSpec": { + "description": "system backup config spec", + "type": "object", + "properties": { + "ftp": { + "description": "system ftp config spec", + "type": "object", + "properties": { + "dir": { + "type": "string", + "x-omitempty": false + }, + "password": { + "type": "string", + "x-omitempty": false + }, + "server": { + "type": "string", + "x-omitempty": false + }, + "username": { + "type": "string", + "x-omitempty": false + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1IpPools" + }, + "hourOfTheDay": { + "type": "integer", + "x-omitempty": false + }, + "interval": { + "type": "integer", + "x-omitempty": false + }, + "retentionPeriod": { + "type": "integer", + "x-omitempty": false + } + } + }, + "v1SystemBackupFtpConfigSpec": { + "description": "system backup config spec", + "type": "object", + "properties": { + "backupSpec": { + "description": "system backup config spec", + "type": "object", + "properties": { + "hourOfTheDay": { + "type": "integer", + "x-omitempty": false + }, + "interval": { + "type": "integer", + "x-omitempty": false + }, + "retentionPeriod": { + "type": "integer", + "x-omitempty": false } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "ftp": { + "description": "system ftp config spec", + "type": "object", + "properties": { + "dir": { + "type": "string", + "x-omitempty": false + }, + "password": { + "type": "string", + "x-omitempty": false + }, + "server": { + "type": "string", + "x-omitempty": false + }, + "username": { + "type": "string", + "x-omitempty": false + } } - ], - "summary": "Retrieves a list of IP Pools for the specified private gateway", - "tags": [ - "overlords" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ], - "post": { - "operationId": "v1OverlordsUidPoolCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1IpPoolInputEntity" + } + }, + "v1SystemBackupS3ConfigSpec": { + "description": "system backup config spec", + "type": "object", + "properties": { + "backupSpec": { + "description": "system backup config spec", + "type": "object", + "properties": { + "hourOfTheDay": { + "type": "integer", + "x-omitempty": false + }, + "interval": { + "type": "integer", + "x-omitempty": false + }, + "retentionPeriod": { + "type": "integer", + "x-omitempty": false } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + }, + "s3": { + "description": "system backup s3 storage config spec", + "type": "object", + "properties": { + "accessKey": { + "type": "string", + "x-omitempty": false }, - "schema": { - "$ref": "#/definitions/v1Uid" + "bucket": { + "type": "string", + "x-omitempty": false + }, + "folder": { + "type": "string", + "x-omitempty": false + }, + "region": { + "type": "string", + "x-omitempty": false + }, + "secretKey": { + "type": "string", + "x-omitempty": false } } + } + } + }, + "v1SystemBackupSpec": { + "description": "system backup config spec", + "type": "object", + "properties": { + "hourOfTheDay": { + "type": "integer", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an IP pool defintion for the sepcified private gateway", - "tags": [ - "overlords" - ] + "interval": { + "type": "integer", + "x-omitempty": false + }, + "retentionPeriod": { + "type": "integer", + "x-omitempty": false + } } }, - "/v1/overlords/vsphere/{uid}/pools/{poolUid}": { - "delete": { - "operationId": "v1OverlordsUidPoolDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1SystemCertificateSpec": { + "description": "system smtp config spec", + "type": "object", + "properties": { + "caCert": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the private gateways's specified IP Pool data", - "tags": [ - "overlords" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "crt": { "type": "string" }, - { - "in": "path", - "name": "poolUid", - "required": true, + "insecureSkipVerify": { + "type": "boolean" + }, + "key": { "type": "string" } - ], - "put": { - "operationId": "v1OverlordsUidPoolUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1IpPoolInputEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1SystemConfigAuth": { + "description": "System config auth", + "properties": { + "enforceServiceAuthToken": { + "type": "boolean", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the private gateways's specified IP Pool data", - "tags": [ - "overlords" - ] + "enforceTlsVerify": { + "type": "boolean", + "x-omitempty": false + } } }, - "/v1/overlords/vsphere/{uid}/properties/computecluster/resources": { - "get": { - "operationId": "v1OverlordsUidVsphereComputeclusterRes", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VsphereComputeClusterResources" - } - } + "v1SystemConfigCluster": { + "description": "System config cluster", + "properties": { + "stableEndpointAccess": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1SystemConfigDomainSpec": { + "description": "system domain config spec", + "type": "object", + "properties": { + "apiServer": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves the vSphere computecluster resources for the specified private gateway's account", - "tags": [ - "overlords" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "derivedApiServer": { "type": "string" }, - { - "in": "query", - "name": "datacenter", - "required": true, + "derivedRootDomain": { "type": "string" }, - { - "in": "query", - "name": "computecluster", - "required": true, + "rootDomain": { "type": "string" - } - ] - }, - "/v1/overlords/vsphere/{uid}/properties/datacenters": { - "get": { - "operationId": "v1OverlordsUidVsphereDatacenters", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VsphereDatacenters" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves the vSphere datacenters & datacluster for the specified private gateway's account", - "tags": [ - "overlords" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "urlProtocol": { "type": "string" } - ] + } }, - "/v1/overlords/{uid}": { - "delete": { - "operationId": "v1OverlordsUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1DeletedMsg" - } - } + "v1SystemConfigStoreEntity": { + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "delete the private gateway", - "tags": [ - "overlords" - ] - }, - "get": { - "operationId": "v1OverlordsUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1Overlord" - } - } + "value": { + "type": "string", + "x-omitempty": false + } + } + }, + "v1SystemCryptoData": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "input": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified private gateway's for the given uid", - "tags": [ - "overlords" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "result": { "type": "string" } - ] + } }, - "/v1/overlords/{uid}/metadata": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1SystemCryptoInput": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "input": { "type": "string" } - ], - "put": { - "operationId": "v1OverlordsUidMetadataUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ObjectMetaInputEntitySchema" + } + }, + "v1SystemEdgeImage": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system edge account specifications", + "properties": { + "caCert": { + "type": "string" + }, + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "update the private gateway's metadata", - "tags": [ - "overlords" - ] + } } }, - "/v1/overlords/{uid}/reset": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1SystemEdgeImageSpec": { + "description": "system edge account specifications", + "properties": { + "caCert": { + "type": "string" + }, + "imagesHostEndpoint": { "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" } - ], - "put": { - "operationId": "v1OverlordsUidReset", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1UpdatedMsg" + } + }, + "v1SystemEdgeNativeImage": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system edge-native account specifications", + "properties": { + "caCert": { + "type": "string" + }, + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "stylusImagesEndpoint": { + "type": "string" } } + } + } + }, + "v1SystemEdgeNativeImageSpec": { + "description": "system edge-native account specifications", + "properties": { + "caCert": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "reset the private gateway by disaaociating the private gateway's resources", - "tags": [ - "overlords" - ] + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "stylusImagesEndpoint": { + "type": "string" + } } }, - "/v1/packs": { - "delete": { - "operationId": "v1PacksSummaryDelete", - "parameters": [ - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1DeleteMeta" - } - } + "v1SystemFtpSpec": { + "description": "system ftp config spec", + "type": "object", + "properties": { + "dir": { + "type": "string", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the packs", - "tags": [ - "packs" - ] - }, - "get": { - "operationId": "v1PacksSummaryList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of pack summary items", - "schema": { - "$ref": "#/definitions/v1PackSummaries" - } - } + "password": { + "type": "string", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of packs", - "tags": [ - "packs" - ] + "server": { + "type": "string", + "x-omitempty": false + }, + "username": { + "type": "string", + "x-omitempty": false + } } }, - "/v1/packs/search": { - "post": { - "operationId": "v1PacksSearch", - "parameters": [ - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1PacksFilterSpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of pack summary items", - "schema": { - "$ref": "#/definitions/v1PackMetadataList" + "v1SystemGcpAccount": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system gcp account specifications", + "properties": { + "json": { + "type": "string" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of packs based on filter", - "tags": [ - "packs" - ] + } } }, - "/v1/packs/{packName}/registries/{registryUid}": { - "get": { - "operationId": "v1PacksNameRegistryUidList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1PackTagEntity" + "v1SystemGcpImage": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system gcp account specifications", + "properties": { + "imageProject": { + "type": "string" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of packs", - "tags": [ - "packs" - ] - }, - "parameters": [ - { - "description": "Pack registry uid", - "in": "path", - "name": "registryUid", - "required": true, + } + } + }, + "v1SystemGcpImageSpec": { + "description": "system gcp account specifications", + "properties": { + "imageProject": { "type": "string" - }, - { - "description": "Pack name", - "in": "path", - "name": "packName", - "required": true, + } + } + }, + "v1SystemGcpSpec": { + "description": "system gcp account specifications", + "properties": { + "json": { "type": "string" - }, - { - "default": "all", - "description": "Pack cloud type", - "in": "query", - "name": "cloudType", + } + } + }, + "v1SystemGitAuthSpec": { + "description": "system git auth account specifications", + "properties": { + "_type": { "type": "string" }, - { - "description": "Pack layer", - "in": "query", - "name": "layer", + "password": { "type": "string" }, - { - "description": "Comma seperated pack states. Example values are \"deprecated\" \"deprecated,disabled\". If states is not specified or empty then by default API will return all packs except \"disabled\" packs", - "in": "query", - "name": "states", + "token": { "type": "string" - } - ] - }, - "/v1/packs/{packUid}/logo": { - "get": { - "operationId": "v1PacksPackUidLogo", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "image/png", - "image/gif", - "image/jpeg" - ], - "responses": { - "200": { - "description": "OK", - "headers": { - "Cache-Control": { - "description": "Cache control directive for the response", - "type": "string" - }, - "Expires": { - "type": "string" - } + }, + "username": { + "description": "system git auth account specifications", + "properties": { + "_type": { + "type": "string" }, - "schema": { - "format": "binary", + "password": { "type": "string" + }, + "token": { + "type": "string" + }, + "username": { + "$ref": "#/definitions/v1SystemGitAuthSpec" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the logo for a specified pack", - "tags": [ - "packs" - ] - }, - "parameters": [ - { - "description": "Pack uid", - "in": "path", - "name": "packUid", - "required": true, - "type": "string" } - ] + } }, - "/v1/packs/{uid}": { - "get": { - "operationId": "v1PacksUid", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "A pack for the specified uid", - "schema": { - "$ref": "#/definitions/v1PackTagEntity" - } - } + "v1SystemGithubSsoSpec": { + "description": "system sso github config spec", + "type": "object", + "properties": { + "clientId": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified pack", - "tags": [ - "packs" - ] - }, - "parameters": [ - { - "description": "Pack uid", - "in": "path", - "name": "uid", - "required": true, + "clientSecretKey": { "type": "string" + }, + "isEnabled": { + "type": "boolean" + }, + "logoUrl": { + "type": "string", + "x-omitempty": false } - ] + } }, - "/v1/packs/{uid}/readme": { - "get": { - "operationId": "v1PacksUidReadme", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Readme describes the documentation of the specified pack", - "schema": { - "$ref": "#/definitions/v1PackReadme" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the readme of a specified pack", - "tags": [ - "packs" - ] - }, - "parameters": [ - { - "description": "Pack uid", - "in": "path", - "name": "uid", - "required": true, + "v1SystemKubectlSpec": { + "description": "system web kubectl config spec", + "type": "object", + "properties": { + "endpoint": { "type": "string" + }, + "isEnabled": { + "type": "boolean" } - ] + } }, - "/v1/pcg/selfHosted": { - "post": { - "operationId": "v1PcgSelfHosted", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1PcgSelfHostedParams" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1PcgServiceKubectlCommands" + "v1SystemLibvirtImage": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system libvirt account specifications", + "properties": { + "caCert": { + "type": "string" + }, + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" } } + } + } + }, + "v1SystemLibvirtImageSpec": { + "description": "system libvirt account specifications", + "properties": { + "caCert": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the private gateway manifest link", - "tags": [ - "pcg" - ] + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + } } }, - "/v1/pcg/{uid}/register": { - "post": { - "operationId": "v1PcgUidRegister", - "parameters": [ - { - "in": "body", - "name": "pairingCode", - "schema": { - "$ref": "#/definitions/v1PairingCode" - } - }, - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - } - } + "v1SystemLoggerSpec": { + "description": "system logger config spec", + "type": "object", + "properties": { + "format": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Registers the pcg", - "tags": [ - "pcg" - ] + "level": { + "type": "string" + } } }, - "/v1/pcg/{uid}/services/ally/manifest": { - "get": { - "operationId": "v1PcgUidAllyManifestGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download file", - "headers": { - "Content-Disposition": { - "type": "string" - } + "v1SystemMaasImage": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system maas account specifications", + "properties": { + "caCert": { + "type": "string" }, - "schema": { - "format": "binary", + "imagesHostEndpoint": { "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" } } + } + } + }, + "v1SystemMaasImageSpec": { + "description": "system maas account specifications", + "properties": { + "caCert": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the pcg ally manifest", - "tags": [ - "pcg" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "imagesHostEndpoint": { "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" } - ] + } }, - "/v1/pcg/{uid}/services/jet/manifest": { - "get": { - "operationId": "v1PcgUidJetManifestGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download file", - "headers": { - "Content-Disposition": { - "type": "string" - } - }, - "schema": { - "format": "binary", - "type": "string" - } - } + "v1SystemOciImageRegistry": { + "description": "system web kubectl config spec", + "type": "object", + "properties": { + "baseContentPath": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the pcg jet manifest", - "tags": [ - "pcg" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "caCert": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "mirrorRegistries": { + "type": "string" + }, + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "username": { "type": "string" } - ] + } }, - "/v1/permissions": { - "get": { - "operationId": "v1PermissionsList", - "parameters": [ - { - "enum": [ - "system", - "tenant", - "project", - "resource" - ], - "in": "query", - "name": "scope", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of permissions", - "schema": { - "$ref": "#/definitions/v1Permissions" + "v1SystemOidcClaims": { + "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 + } + } + }, + "v1SystemOidcClientSpec": { + "description": "system sso oidc config spec", + "type": "object", + "properties": { + "callbackUrl": { + "type": "string", + "x-omitempty": false + }, + "clientId": { + "type": "string", + "x-omitempty": false + }, + "clientSecret": { + "type": "string", + "x-omitempty": false + }, + "isEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "issuerUrl": { + "description": "the issuer is the URL identifier for the service", + "type": "string", + "x-omitempty": false + }, + "logoUrl": { + "type": "string", + "x-omitempty": false + }, + "requiredClaims": { + "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 } } }, - "security": [ - { - "ApiKey": [] + "scopes": { + "type": "array", + "items": { + "type": "string" }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of permissions", - "tags": [ - "permissions" - ] + "x-omitempty": false + } } }, - "/v1/projects": { - "get": { - "description": "Deprecated: Use POST /v1/dashboard/projects", - "operationId": "v1ProjectsList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of projects", - "schema": { - "$ref": "#/definitions/v1Projects" + "v1SystemOpenstackImage": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system openstack account specifications", + "properties": { + "imagesHostEndpoint": { + "type": "string" } } + } + } + }, + "v1SystemOpenstackImageSpec": { + "description": "system openstack account specifications", + "properties": { + "imagesHostEndpoint": { + "type": "string" + } + } + }, + "v1SystemPasswordPolicySpec": { + "description": "system password policy", + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of projects", - "tags": [ - "projects" - ] - }, - "post": { - "operationId": "v1ProjectsCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ProjectEntity" + "expiryDurationInDays": { + "type": "integer" + }, + "firstReminderInDays": { + "type": "integer" + }, + "isRegex": { + "type": "boolean" + }, + "minLength": { + "type": "integer" + }, + "minNumOfBlockLetters": { + "type": "integer" + }, + "minNumOfDigits": { + "type": "integer" + }, + "minNumOfSmallLetters": { + "type": "integer" + }, + "minNumOfSpecialCharacters": { + "type": "integer" + }, + "regex": { + "type": "string" + }, + "reminderFrequency": { + "type": "integer" + }, + "updateTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "v1SystemPlan": { + "description": "system plan", + "properties": { + "freeCredits": { + "type": "array", + "items": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "planLimit": { + "description": "System Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "slaCredits": { + "type": "array", + "items": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } + } } - ], - "summary": "Creates a project", - "tags": [ - "projects" - ] + }, + "systemStartDate": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } } }, - "/v1/projects/alerts": { - "get": { - "operationId": "v1ProjectsAlerts", - "responses": { - "200": { - "description": "An array of alert components", - "schema": { - "$ref": "#/definitions/v1ProjectAlertComponents" - } - } + "v1SystemPlanCredit": { + "description": "Plan Credit", + "required": [ + "type" + ], + "properties": { + "cpuCoreHours": { + "type": "number", + "format": "int64", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of supported alerts for a project", - "tags": [ - "projects" - ] + "creditUid": { + "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" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct 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": [ + "Pure", + "Alloy" + ] + } } }, - "/v1/projects/{uid}": { - "delete": { - "operationId": "v1ProjectsUidDelete", - "parameters": [ - { - "in": "query", - "name": "cleanupProjectResources", - "type": "boolean" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ProjectCleanup" + "v1SystemPlanLimit": { + "description": "System Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false } } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified project", - "tags": [ - "projects" - ] - }, - "get": { - "operationId": "v1ProjectsUidGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Project" + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false } } + } + } + }, + "v1SystemPlanLimitSpec": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified project", - "tags": [ - "projects" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false } - ], - "put": { - "operationId": "v1ProjectsUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ProjectEntity" + } + }, + "v1SystemPlanLimitUpdate": { + "description": "System Plan limit change update entity", + "properties": { + "planLimit": { + "description": "System Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + } + }, + "v1SystemProductUsage": { + "description": "Yearly usage", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified project", - "tags": [ - "projects" - ] + "breachedCredits": { + "description": "Credits exceeded the allocated and free credits", + "type": "number", + "format": "float64" + }, + "freeSlaCredits": { + "description": "Free allocated SLA credits", + "type": "number", + "format": "int64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } } }, - "/v1/projects/{uid}/alerts/{component}": { - "delete": { - "operationId": "v1ProjectsUidAlertDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1SystemProxySpec": { + "description": "system proxy config spec", + "type": "object", + "properties": { + "httpProxy": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified alert to the specified project", - "tags": [ - "projects" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "httpsProxy": { "type": "string" }, - { - "in": "path", - "name": "component", - "required": true, + "noProxy": { "type": "string" } - ], - "post": { - "operationId": "v1ProjectsUidAlertCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Channel" - } - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1SystemRateLimit": { + "description": "system rate-limit", + "properties": { + "isActive": { + "type": "boolean" + } + } + }, + "v1SystemRegistry": { + "description": "Registry configuration", + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create the specified alert to the specified project", - "tags": [ - "projects" - ] - }, - "put": { - "operationId": "v1ProjectsUidAlertUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AlertEntity" + "spec": { + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Upsert the specified alert to the specified project", - "tags": [ - "projects" - ] + } } }, - "/v1/projects/{uid}/alerts/{component}/{alertUid}": { - "delete": { - "operationId": "v1ProjectsUidAlertsUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1SystemResourceLimit": { + "properties": { + "kind": { + "type": "string", + "enum": [ + "user", + "project", + "apiKey", + "team", + "role", + "cloudaccount", + "clusterprofile", + "workspace", + "registry", + "privategateway", + "location", + "certificate", + "macro", + "sshkey", + "alert", + "spectrocluster", + "edgehost", + "appprofile", + "appdeployment", + "edgetoken", + "clustergroup", + "filter", + "systemadmin" + ] }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified alert of the specified project", - "tags": [ - "projects" - ] - }, - "get": { - "operationId": "v1ProjectsUidAlertsUidGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Channel" + "limit": { + "type": "number", + "format": "int64", + "x-omitempty": false + } + } + }, + "v1SystemResourceLimits": { + "description": "System resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.", + "properties": { + "resources": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "kind": { + "type": "string", + "enum": [ + "user", + "project", + "apiKey", + "team", + "role", + "cloudaccount", + "clusterprofile", + "workspace", + "registry", + "privategateway", + "location", + "certificate", + "macro", + "sshkey", + "alert", + "spectrocluster", + "edgehost", + "appprofile", + "appdeployment", + "edgetoken", + "clustergroup", + "filter", + "systemadmin" + ] + }, + "limit": { + "type": "number", + "format": "int64", + "x-omitempty": false + } } } + } + } + }, + "v1SystemRetentionPolicy": { + "description": "system retention policy", + "type": "object", + "properties": { + "retentionPeriod": { + "type": "integer", + "x-omitempty": false + } + } + }, + "v1SystemReverseProxy": { + "description": "system config reverse proxy", + "properties": { + "caCert": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the specified alert of the specified project", - "tags": [ - "projects" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "clientCert": { "type": "string" }, - { - "in": "path", - "name": "component", - "required": true, + "clientKey": { "type": "string" }, - { - "in": "path", - "name": "alertUid", - "required": true, + "port": { + "type": "integer" + }, + "protocol": { + "type": "string", + "enum": [ + "http", + "https" + ] + }, + "server": { "type": "string" + }, + "vHostPort": { + "type": "integer" } - ], - "put": { - "operationId": "v1ProjectsUidAlertsUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Channel" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1SystemS3Spec": { + "description": "system backup s3 storage config spec", + "type": "object", + "properties": { + "accessKey": { + "type": "string", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the specified alert of the specified project", - "tags": [ - "projects" - ] + "bucket": { + "type": "string", + "x-omitempty": false + }, + "folder": { + "type": "string", + "x-omitempty": false + }, + "region": { + "type": "string", + "x-omitempty": false + }, + "secretKey": { + "type": "string", + "x-omitempty": false + } } }, - "/v1/projects/{uid}/macros": { - "delete": { - "operationId": "v1ProjectsUidMacrosDeleteByMacroName", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "v1SystemScarSpec": { + "description": "system scar config spec", + "type": "object", + "properties": { + "baseContentPath": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete the macros for the specified project by macro name", - "tags": [ - "projects" - ] - }, - "get": { - "operationId": "v1ProjectsUidMacrosList", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Macros" - } - } + "caCert": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "List the macros of the specified project", - "tags": [ - "projects" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "endpoint": { "type": "string" - } - ], - "patch": { - "operationId": "v1ProjectsUidMacrosUpdateByMacroName", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the macros for the specified project by macro name", - "tags": [ - "projects" - ] - }, - "post": { - "operationId": "v1ProjectsUidMacrosCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "insecureVerify": { + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create or add new macros for the specified project", - "tags": [ - "projects" - ] - }, - "put": { - "operationId": "v1ProjectsUidMacrosUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "password": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the macros of the specified project", - "tags": [ - "projects" - ] + "username": { + "type": "string" + } } }, - "/v1/projects/{uid}/meta": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1SystemScarValidationResponse": { + "description": "system proxy config spec", + "type": "object", + "properties": { + "spectroVersion": { "type": "string" } - ], - "put": { - "operationId": "v1ProjectsUidMetaUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ObjectMeta" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the metadata of the specified project", - "tags": [ - "projects" - ] } }, - "/v1/projects/{uid}/preferences/clusterSettings": { - "get": { - "operationId": "v1ProjectClusterSettingsGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1ProjectClusterSettings" - } - } + "v1SystemSecurityMode": { + "description": "System service mode", + "properties": { + "securityMode": { + "type": "string" + } + } + }, + "v1SystemServiceLogin": { + "description": "System service login input", + "type": "object", + "properties": { + "authToken": { + "description": "authToken helps in two step verification for the authorization.", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get project cluster settings", - "tags": [ - "projects" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "isSystem": { + "type": "boolean" + }, + "overlordUid": { + "type": "string" + }, + "serviceName": { + "type": "string" + }, + "serviceVersion": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + }, + "tenantUid": { "type": "string" } - ] + } }, - "/v1/projects/{uid}/preferences/clusterSettings/nodesAutoRemediationSetting": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1SystemSmtpSpec": { + "description": "system smtp config spec", + "type": "object", + "properties": { + "fromEmailId": { + "type": "string" + }, + "insecureSkipVerifyTls": { + "type": "boolean" + }, + "password": { + "type": "string" + }, + "smtpPort": { + "type": "integer" + }, + "smtpServer": { + "type": "string" + }, + "userName": { "type": "string" } - ], - "put": { - "operationId": "v1ProjectClustersNodesAutoRemediationSettingUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1NodesAutoRemediationSettings" + } + }, + "v1SystemSsoAuthSpec": { + "description": "system sso config spec", + "type": "object", + "properties": { + "github": { + "description": "system sso github config spec", + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "clientSecretKey": { + "type": "string" + }, + "isEnabled": { + "type": "boolean" + }, + "logoUrl": { + "type": "string", + "x-omitempty": false } } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "oidcAuthSpecs": { + "type": "object", + "additionalProperties": { + "description": "system sso oidc config spec", + "type": "object", + "properties": { + "callbackUrl": { + "type": "string", + "x-omitempty": false + }, + "clientId": { + "type": "string", + "x-omitempty": false + }, + "clientSecret": { + "type": "string", + "x-omitempty": false + }, + "isEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "issuerUrl": { + "description": "the issuer is the URL identifier for the service", + "type": "string", + "x-omitempty": false + }, + "logoUrl": { + "type": "string", + "x-omitempty": false + }, + "requiredClaims": { + "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 } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update project clusters nodes auto remediation setting", - "tags": [ - "projects" - ] + } } }, - "/v1/projects/{uid}/teams": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1SystemSsoSpec": { + "description": "system sso config spec", + "type": "object", + "properties": { + "acsUrlRoot": { "type": "string" - } - ], - "put": { - "operationId": "v1ProjectsUidTeamsUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ProjectTeamsEntity" + }, + "acsUrlScheme": { + "type": "string" + }, + "apiVersion": { + "type": "string" + }, + "audienceUrl": { + "type": "string" + }, + "authSpec": { + "description": "system sso config spec", + "type": "object", + "properties": { + "github": { + "description": "system sso github config spec", + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "clientSecretKey": { + "type": "string" + }, + "isEnabled": { + "type": "boolean" + }, + "logoUrl": { + "type": "string", + "x-omitempty": false + } + } + }, + "oidcAuthSpecs": { + "type": "object", + "additionalProperties": { + "description": "system sso oidc config spec", + "type": "object", + "properties": { + "callbackUrl": { + "type": "string", + "x-omitempty": false + }, + "clientId": { + "type": "string", + "x-omitempty": false + }, + "clientSecret": { + "type": "string", + "x-omitempty": false + }, + "isEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "issuerUrl": { + "description": "the issuer is the URL identifier for the service", + "type": "string", + "x-omitempty": false + }, + "logoUrl": { + "type": "string", + "x-omitempty": false + }, + "requiredClaims": { + "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 + } + } + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the teams association to the specified project", - "tags": [ - "projects" - ] + "entityId": { + "type": "string" + } } }, - "/v1/projects/{uid}/users": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1SystemStartDate": { + "description": "system start date", + "properties": { + "systemStartDate": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" } - ], - "put": { - "operationId": "v1ProjectsUidUsersUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ProjectUsersEntity" + } + }, + "v1SystemStorageS3ConfigSpec": { + "description": "system storage s3 config spec", + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean" + }, + "retentionPolicy": { + "description": "system retention policy", + "type": "object", + "properties": { + "retentionPeriod": { + "type": "integer", + "x-omitempty": false } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "s3": { + "description": "system backup s3 storage config spec", + "type": "object", + "properties": { + "accessKey": { + "type": "string", + "x-omitempty": false + }, + "bucket": { + "type": "string", + "x-omitempty": false + }, + "folder": { + "type": "string", + "x-omitempty": false + }, + "region": { + "type": "string", + "x-omitempty": false + }, + "secretKey": { + "type": "string", + "x-omitempty": false + } } - ], - "summary": "Update the users association to the specified project", - "tags": [ - "projects" - ] + } } }, - "/v1/projects/{uid}/validate": { - "delete": { - "operationId": "v1ProjectsUidValidate", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1ProjectActiveResources" + "v1SystemTencentAccount": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system tencent account specifications", + "properties": { + "secretId": { + "type": "string" + }, + "secretKey": { + "type": "string" } } + } + } + }, + "v1SystemTencentSpec": { + "description": "system tencent account specifications", + "properties": { + "secretId": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validate and returns active resource of project before delete", - "tags": [ - "projects" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "secretKey": { "type": "string" } - ] + } }, - "/v1/registries/helm": { - "get": { - "operationId": "v1RegistriesHelmList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of registry items", - "schema": { - "$ref": "#/definitions/v1HelmRegistries" - } - } + "v1SystemTimeseriesMetrics": { + "description": "system timeseries metrics config", + "type": "object", + "properties": { + "archivalInterval": { + "type": "integer" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Helm registries", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "default": "all", - "enum": [ - "system", - "tenant", - "all" - ], - "in": "query", - "name": "scope", - "type": "string" + "batchInterval": { + "type": "integer" + }, + "enabled": { + "type": "boolean", + "x-omitempty": false + }, + "retentionPeriod": { + "type": "integer" } - ], - "post": { - "operationId": "v1RegistriesHelmCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1HelmRegistryEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + } + }, + "v1SystemTimeseriesSpec": { + "description": "system timeseries config spec", + "type": "object", + "properties": { + "machine": { + "description": "system timeseries metrics config", + "type": "object", + "properties": { + "archivalInterval": { + "type": "integer" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "batchInterval": { + "type": "integer" + }, + "enabled": { + "type": "boolean", + "x-omitempty": false + }, + "retentionPeriod": { + "type": "integer" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "pod": { + "description": "system timeseries metrics config", + "type": "object", + "properties": { + "archivalInterval": { + "type": "integer" + }, + "batchInterval": { + "type": "integer" + }, + "enabled": { + "type": "boolean", + "x-omitempty": false + }, + "retentionPeriod": { + "type": "integer" + } } - ], - "summary": "Creates a helm registry", - "tags": [ - "registries" - ] + } } }, - "/v1/registries/helm/summary": { - "get": { - "operationId": "v1RegistriesHelmSummaryList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of registry items", - "schema": { - "$ref": "#/definitions/v1HelmRegistriesSummary" + "v1SystemUsage": { + "description": "System usage billing object", + "properties": { + "planLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "type": "integer", + "format": "int64", + "x-omitempty": false + }, + "overageLimitPercentage": { + "description": "overage limit in percentage", + "type": "integer", + "format": "int8", + "default": 25, + "x-omitempty": false + }, + "warnLimitPercentage": { + "description": "warning limit in percentage", + "type": "integer", + "format": "int8", + "default": 90, + "x-omitempty": false + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "usageBillingPeriod": { + "description": "Invoice billing period object", + "properties": { + "end": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } } - ], - "summary": "Retrieves a list of helm registries as summary", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "default": "all", - "enum": [ - "system", - "tenant", - "all" - ], - "in": "query", - "name": "scope", - "type": "string" - } - ] - }, - "/v1/registries/helm/validate": { - "post": { - "description": "Returns no contents if helm registry is valid else error.", - "operationId": "V1RegistriesHelmValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1HelmRegistrySpec" + }, + "yearlyUsages": { + "description": "List of every year system usage", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Yearly usage object", + "properties": { + "billingPeriod": { + "description": "Invoice billing period object", + "properties": { + "end": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "monthlyUsages": { + "description": "List of monthly usages", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Monthly usage object", + "properties": { + "month": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "tenantUsages": { + "description": "List of tenants usage", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Tenant usage object", + "properties": { + "orgName": { + "description": "Organization name", + "type": "string" + }, + "tenantUid": { + "description": "Tenant uid", + "type": "string" + }, + "usedAlloyCredits": { + "description": "Credits used by imported clusters", + "type": "number", + "format": "float64" + }, + "usedPureCredits": { + "description": "Credits used by managed clusters", + "type": "number", + "format": "float64" + } + } + } + }, + "usedAlloyCredits": { + "description": "Credits used by imported clusters", + "type": "number", + "format": "float64" + }, + "usedPureCredits": { + "description": "Credits used by managed clusters", + "type": "number", + "format": "float64" + } + } + } + }, + "productUsages": { + "description": "Product usage", + "properties": { + "alloyUsage": { + "description": "Yearly usage", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "breachedCredits": { + "description": "Credits exceeded the allocated and free credits", + "type": "number", + "format": "float64" + }, + "freeSlaCredits": { + "description": "Free allocated SLA credits", + "type": "number", + "format": "int64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + }, + "pureUsage": { + "description": "Yearly usage", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "breachedCredits": { + "description": "Credits exceeded the allocated and free credits", + "type": "number", + "format": "float64" + }, + "freeSlaCredits": { + "description": "Free allocated SLA credits", + "type": "number", + "format": "int64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1SystemUserMe": { + "description": "User information wrt permissions", + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Check if helm registry is valid", - "tags": [ - "registries" - ] - } - }, - "/v1/registries/helm/{uid}": { - "delete": { - "operationId": "v1RegistriesHelmUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "spec": { + "description": "User specifications", + "properties": { + "adminType": { + "description": "Admin type", + "type": "string" + }, + "emailId": { + "description": "System User's email id", + "type": "string" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified helm registry", - "tags": [ - "registries" - ] - }, - "get": { - "operationId": "v1RegistriesHelmUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1HelmRegistry" + "status": { + "description": "User status with permissions", + "properties": { + "isEmailSet": { + "type": "boolean", + "x-omitempty": false + }, + "isEmailVerified": { + "type": "boolean", + "x-omitempty": false + }, + "isMfaEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "isPasswordReset": { + "type": "boolean", + "x-omitempty": false + }, + "lastEmailUpdateTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastEmailVerifiedTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastLoginTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastPasswordUpdateTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" } } + } + } + }, + "v1SystemUserMeStatus": { + "description": "User status with permissions", + "properties": { + "isEmailSet": { + "type": "boolean", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Helm registry", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "isEmailVerified": { + "type": "boolean", + "x-omitempty": false + }, + "isMfaEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "isPasswordReset": { + "type": "boolean", + "x-omitempty": false + }, + "lastEmailUpdateTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastEmailVerifiedTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastLoginTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastPasswordUpdateTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + }, + "v1SystemUserSpec": { + "description": "User specifications", + "properties": { + "adminType": { + "description": "Admin type", + "type": "string" + }, + "emailId": { + "description": "System User's email id", "type": "string" } - ], - "put": { - "operationId": "v1RegistriesHelmUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1HelmRegistry" + } + }, + "v1SystemVersionInfo": { + "description": "system version info", + "type": "object", + "properties": { + "version": { + "type": "string" + } + } + }, + "v1SystemVsphereImage": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "spec": { + "description": "system vsphere account specifications", + "properties": { + "caCert": { + "type": "string" + }, + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "overlordOvaLocation": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "Updates the specified helm registry", - "tags": [ - "registries" - ] + } } }, - "/v1/registries/helm/{uid}/sync": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1SystemVsphereImageSpec": { + "description": "system vsphere account specifications", + "properties": { + "caCert": { "type": "string" }, - { - "default": false, - "in": "query", - "name": "forceSync", + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { "type": "boolean" + }, + "overlordOvaLocation": { + "type": "string" } - ], - "post": { - "description": "Sync all the helm charts from the registry", - "operationId": "v1RegistriesHelmUidSync", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "202": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1TagFilter": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } + } + } } - ], - "summary": "Sync Helm registry", - "tags": [ - "registries" - ] + } } }, - "/v1/registries/helm/{uid}/sync/status": { - "get": { - "description": "Get the sync status for the specified helm registry", - "operationId": "v1RegistriesHelmUidSyncStatus", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Helm registry sync status", - "schema": { - "$ref": "#/definitions/v1RegistrySyncStatus" + "v1TagFilterGroup": { + "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" + } + } } } + } + } + }, + "v1TagFilterItem": { + "properties": { + "key": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "negation": { + "type": "boolean" + }, + "operator": { + "type": "string", + "enum": [ + "eq" + ] + }, + "values": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Get helm registry sync status", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/registries/metadata": { - "get": { - "operationId": "v1RegistriesMetadata", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1TagFilterSpec": { + "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" + } + } + } + } + } } - ], - "responses": { - "200": { - "description": "An array of registry metadata items", - "schema": { - "$ref": "#/definitions/v1RegistriesMetadata" + } + } + }, + "v1TagFilterSummary": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } + } + } } - ], - "summary": "Retrieves a list of registries metadata", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "default": "all", + } + } + }, + "v1Taint": { + "description": "Taint", + "type": "object", + "properties": { + "effect": { + "type": "string", "enum": [ - "system", - "tenant", - "all" - ], - "in": "query", - "name": "scope", + "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" } - ] + } }, - "/v1/registries/oci/basic": { - "post": { - "operationId": "v1BasicOciRegistriesCreate", - "parameters": [ - { - "default": false, - "in": "query", - "name": "skipPackSync", - "type": "boolean" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1BasicOciRegistry" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1Team": { + "description": "Team 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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a basic oci registry", - "tags": [ - "registries" - ] - } - }, - "/v1/registries/oci/basic/validate": { - "post": { - "description": "Returns no contents if oci registry is valid else error.", - "operationId": "v1BasicOciRegistriesValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1BasicOciRegistrySpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "spec": { + "description": "Team specifications", + "properties": { + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "sources": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Check if oci registry is valid", - "tags": [ - "registries" - ] + "status": { + "description": "Team status", + "type": "object" + } } }, - "/v1/registries/oci/ecr": { - "post": { - "operationId": "v1EcrRegistriesCreate", - "parameters": [ - { - "default": false, - "in": "query", - "name": "skipPackSync", - "type": "boolean" + "v1TeamPatch": { + "type": "array", + "items": { + "type": "object", + "required": [ + "op", + "path" + ], + "properties": { + "from": { + "description": "A path to the pointer from which reference will be taken", + "type": "string" }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EcrRegistry" - } + "op": { + "description": "The operation to be performed", + "type": "string", + "enum": [ + "add", + "remove", + "replace", + "move", + "copy" + ] }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "path": { + "description": "A path to the pointer on which operation will be done", "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - }, - "schema": { - "$ref": "#/definitions/v1Uid" - } - } - }, - "security": [ - { - "ApiKey": [] }, - { - "Authorization": [] + "value": { + "description": "The value to be used within the operations.", + "type": "object" } - ], - "summary": "Creates a ecr registry", - "tags": [ - "registries" - ] + } } }, - "/v1/registries/oci/ecr/validate": { - "post": { - "description": "Returns no contents if ecr registry is valid else error.", - "operationId": "v1EcrRegistriesValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1EcrRegistrySpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1TeamRoleMap": { + "properties": { + "roles": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Check if ecr registry is valid", - "tags": [ - "registries" - ] + "teamId": { + "type": "string" + } } }, - "/v1/registries/oci/image": { - "get": { - "operationId": "v1OciImageRegistryGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1TeamSpec": { + "description": "Team specifications", + "properties": { + "roles": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1OciImageRegistry" - } + }, + "sources": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Creates a image registry", - "tags": [ - "registries" - ] + } } }, - "/v1/registries/oci/summary": { - "get": { - "operationId": "v1OciRegistriesSummary", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1TeamSpecSummary": { + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } } - ], - "responses": { - "200": { - "description": "An array of oci registry items", - "schema": { - "$ref": "#/definitions/v1OciRegistries" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "users": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } } - ], - "summary": "Retrieves a oci registries summary", - "tags": [ - "registries" - ] + } } }, - "/v1/registries/oci/{uid}": { - "get": { - "operationId": "v1OciRegistriesGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1OciRegistryEntity" + "v1TeamStatus": { + "description": "Team status", + "type": "object" + }, + "v1TeamSummary": { + "description": "Team 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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "roles": { + "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" + } + } + } + } } - ], - "summary": "Returns the information of specified oci registry", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" }, - { - "in": "query", - "name": "clusterUid", - "type": "string" + "status": { + "description": "Team status", + "type": "object" } - ] + } }, - "/v1/registries/oci/{uid}/basic": { - "delete": { - "operationId": "v1BasicOciRegistriesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1TeamSummarySortFields": { + "type": "string", + "enum": [ + "name", + "creationTimestamp" + ], + "x-nullable": true + }, + "v1TeamSummarySortSpec": { + "properties": { + "field": { + "type": "string", + "enum": [ + "name", + "creationTimestamp" + ], + "x-nullable": true }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "v1TeamTenantRolesEntity": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } } - ], - "summary": "Deletes the specified basic oci registry", - "tags": [ - "registries" - ] - }, - "get": { - "operationId": "v1BasicOciRegistriesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + } + }, + "v1TeamTenantRolesUpdate": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1BasicOciRegistry" + } + } + }, + "v1Teams": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Team 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": "Team specifications", + "properties": { + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "sources": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "status": { + "description": "Team status", + "type": "object" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Returns the basic oci registry", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ], - "put": { - "operationId": "v1BasicOciRegistriesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1BasicOciRegistry" + } + }, + "v1TeamsBatch": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Team 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" + } } }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] + "spec": { + "description": "Team specifications", + "properties": { + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "sources": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } }, - { - "Authorization": [] + "status": { + "description": "Team status", + "type": "object" } - ], - "summary": "Updates the specified basic oci registry", - "tags": [ - "registries" - ] + } } }, - "/v1/registries/oci/{uid}/basic/sync": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "default": false, - "in": "query", - "name": "forceSync", - "type": "boolean" + "v1TeamsFilterSpec": { + "description": "Teams 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 + } + } } + } + }, + "v1TeamsMetadata": { + "type": "object", + "required": [ + "items" ], - "post": { - "description": "Sync all the content from the oci registry", - "operationId": "v1BasicOciRegistriesUidSync", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "202": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Object identity meta", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { "type": "string" } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Sync oci registry", - "tags": [ - "registries" - ] + } } }, - "/v1/registries/oci/{uid}/basic/sync/status": { - "get": { - "description": "Get sync status for the oci specified registry", - "operationId": "v1BasicOciRegistriesUidSyncStatus", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Oci registry sync status", - "schema": { - "$ref": "#/definitions/v1RegistrySyncStatus" + "v1TeamsSummary": { + "description": "Deprecated, Use v1UsersSummaryList - Returns User summary", + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Team 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": { + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "roles": { + "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": "Team status", + "type": "object" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Get oci registry sync status", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/registries/oci/{uid}/ecr": { - "delete": { - "operationId": "v1EcrRegistriesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified ecr registry", - "tags": [ - "registries" - ] - }, - "get": { - "operationId": "v1EcrRegistriesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1EcrRegistry" + "v1TeamsSummaryList": { + "description": "Returns Team summary", + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Team 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": { + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "roles": { + "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": "Team status", + "type": "object" + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified ecr registry", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ], - "put": { - "operationId": "v1EcrRegistriesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1EcrRegistry" + } + }, + "v1TeamsSummarySpec": { + "description": "Teams filter summary spec", + "properties": { + "filter": { + "description": "Teams 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 + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "sort": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "field": { + "type": "string", + "enum": [ + "name", + "creationTimestamp" + ], + "x-nullable": true + }, + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } + } } - ], - "summary": "Updates the specified ecr registry", - "tags": [ - "registries" - ] + } } }, - "/v1/registries/oci/{uid}/ecr/sync": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "default": false, - "in": "query", - "name": "forceSync", - "type": "boolean" - } - ], - "post": { - "description": "Sync all the content from the ecr registry", - "operationId": "v1EcrRegistriesUidSync", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "202": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1Tenant": { + "description": "Tenant", + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Sync ecr registry", - "tags": [ - "registries" - ] - } - }, - "/v1/registries/oci/{uid}/ecr/sync/status": { - "get": { - "description": "Get sync status for the ecr specified registry", - "operationId": "v1EcrRegistriesUidSyncStatus", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Ecr registry sync status", - "schema": { - "$ref": "#/definitions/v1RegistrySyncStatus" + "spec": { + "description": "Tenant Spec", + "type": "object", + "properties": { + "address": { + "description": "Tenant Address", + "type": "object", + "properties": { + "addressLine1": { + "type": "string" + }, + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "authType": { + "type": "string" + }, + "defaultLoginMode": { + "type": "string" + }, + "orgEmailId": { + "type": "string" + }, + "orgName": { + "type": "string" + }, + "planUid": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "description": "Tenant Status", + "type": "object", + "properties": { + "cleanUpStatus": { + "description": "Tenant CleanUp Status", + "type": "object", + "properties": { + "cleanUpError": { + "type": "string" + }, + "cleanUpStages": { + "type": "string" + }, + "cleanUpTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "cleanedResources": { + "type": "array", + "items": { + "type": "string" + } + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "isInProgress": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "isActive": { + "type": "boolean", + "x-omitempty": false + }, + "toBeDeleted": { + "type": "boolean", + "x-omitempty": false + } } - ], - "summary": "Get ecr registry sync status", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/registries/pack": { - "get": { - "operationId": "v1RegistriesPackList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of registry items", - "schema": { - "$ref": "#/definitions/v1PackRegistries" + "v1TenantActivate": { + "description": "Activate/Deactivate tenant", + "type": "object", + "properties": { + "isActive": { + "type": "boolean", + "default": true + } + } + }, + "v1TenantActivity": { + "description": "Active tenant and clusters data", + "type": "object", + "properties": { + "clustersInfo": { + "description": "Active clusters information", + "type": "object", + "properties": { + "clustersMeta": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Active cluster meta", + "type": "object", + "properties": { + "cloudType": { + "type": "string" + }, + "clusterType": { + "type": "string" + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "duration": { + "type": "string" + }, + "name": { + "type": "string" + }, + "projectName": { + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "Pending", + "Provisioning", + "Running", + "Deleting", + "Deleted", + "Error", + "Importing" + ] + }, + "uid": { + "type": "string" + } + } + } + }, + "totalActiveClusters": { + "type": "number", + "format": "int64" + }, + "totalActiveGreenFieldClusters": { + "type": "number", + "format": "int64" + }, + "totalActiveImportedClusters": { + "type": "number", + "format": "int64" + }, + "totalClustersDeleted": { + "type": "number", + "format": "int64" + }, + "totalClustersDeployed": { + "type": "number", + "format": "int64" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of Pack registries", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "default": "all", - "enum": [ - "system", - "tenant", - "all" - ], - "in": "query", - "name": "scope", + "org": { + "type": "string" + }, + "planType": { + "type": "string" + }, + "totalProjects": { + "type": "number", + "format": "int64" + }, + "totalUsers": { + "type": "number", + "format": "int64" + }, + "uid": { "type": "string" + }, + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Active user data", + "type": "object", + "properties": { + "lastLogin": { + "type": "string" + }, + "lastLoginTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "uid": { + "type": "string" + } + } + } } - ], - "post": { - "operationId": "v1RegistriesPackCreate", - "parameters": [ - { - "default": false, - "in": "query", - "name": "skipPackSync", - "type": "boolean" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1PackRegistry" + } + }, + "v1TenantAddressPatch": { + "description": "Tenant Address", + "type": "object", + "properties": { + "address": { + "description": "Tenant Address", + "type": "object", + "properties": { + "addressLine1": { + "type": "string" + }, + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1TenantAssetCert": { + "description": "tenant cert", + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "type": "object", + "properties": { + "certificate": { + "type": "string", + "x-omitempty": false + }, + "isCA": { + "type": "boolean", + "x-omitempty": false + }, + "key": { + "type": "string", + "x-omitempty": false + } } - ], - "summary": "Creates a pack registry", - "tags": [ - "registries" - ] + } } }, - "/v1/registries/pack/summary": { - "get": { - "operationId": "v1RegistriesPackSummaryList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of registry items", - "schema": { - "$ref": "#/definitions/v1PackRegistriesSummary" + "v1TenantAssetCerts": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tenant cert", + "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": { + "certificate": { + "type": "string", + "x-omitempty": false + }, + "isCA": { + "type": "boolean", + "x-omitempty": false + }, + "key": { + "type": "string", + "x-omitempty": false + } + } + } } } + } + } + }, + "v1TenantBasicEntity": { + "description": "Tenant Basic param", + "type": "object", + "properties": { + "emailId": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of pack registries as summary", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "default": "all", - "enum": [ - "system", - "tenant", - "all" - ], - "in": "query", - "name": "scope", + "orgName": { "type": "string" } - ] + } }, - "/v1/registries/pack/validate": { - "post": { - "description": "Returns no contents if pack registry is valid else error.", - "operationId": "V1RegistriesPackValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1PackRegistrySpec" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1TenantCleanUpStatus": { + "description": "Tenant CleanUp Status", + "type": "object", + "properties": { + "cleanUpError": { + "type": "string" + }, + "cleanUpStages": { + "type": "string" + }, + "cleanUpTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "cleanedResources": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "isInProgress": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1TenantClusterSettings": { + "properties": { + "nodesAutoRemediationSetting": { + "properties": { + "disableNodesAutoRemediation": { + "type": "boolean", + "x-omitempty": false + }, + "isEnabled": { + "type": "boolean", + "x-omitempty": false } } + } + } + }, + "v1TenantContractSpec": { + "description": "Tenant contract settings", + "type": "object", + "required": [ + "isRequired", + "isAccepted" + ], + "properties": { + "acceptedTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Check if pack registry is valid", - "tags": [ - "registries" - ] + "isAccepted": { + "description": "If the contract is accepted offline, then set this field to true", + "type": "boolean" + }, + "isRequired": { + "description": "Is the contract required, for on-prem installation it will be false", + "type": "boolean" + } } }, - "/v1/registries/pack/{uid}": { - "delete": { - "operationId": "v1RegistriesPackUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1TenantDomains": { + "description": "Tenant domains", + "type": "object", + "properties": { + "domains": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + } + } + }, + "v1TenantEmailPatch": { + "description": "Tenant EmailId", + "type": "object", + "properties": { + "emailId": { + "type": "string" + } + } + }, + "v1TenantEnableClusterGroup": { + "description": "Enable or Disable cluster group for a tenant", + "properties": { + "hideSystemClusterGroups": { + "type": "boolean", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified pack registry", - "tags": [ - "registries" - ] - }, - "get": { - "operationId": "v1RegistriesPackUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "isClusterGroupEnabled": { + "description": "Deprecated. Use hideSystemClusterGroups field", + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1TenantEntity": { + "description": "Tenant 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" + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1PackRegistry" + }, + "spec": { + "description": "Tenant Entity input", + "type": "object", + "properties": { + "address": { + "description": "Tenant Address", + "type": "object", + "properties": { + "addressLine1": { + "type": "string" + }, + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "authType": { + "type": "string" + }, + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "loginMode": { + "type": "string", + "default": "devops", + "enum": [ + "dev", + "devops" + ] + }, + "orgEmailId": { + "type": "string" + }, + "orgName": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "ssoApp": { + "type": "string" } } + } + } + }, + "v1TenantFreemium": { + "description": "Tenant freemium configuration", + "properties": { + "activeClustersLimit": { + "type": "integer", + "x-omitempty": false + }, + "isFreemium": { + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "type": "boolean", + "x-omitempty": false + }, + "overageUsageLimit": { + "type": "number", + "format": "float64", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Pack registry", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "totalUsageLimit": { + "type": "number", + "format": "float64", + "x-omitempty": false } - ], - "put": { - "operationId": "v1RegistriesPackUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1PackRegistry" + } + }, + "v1TenantFreemiumUsage": { + "type": "object", + "properties": { + "isFreemium": { + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "type": "boolean", + "x-omitempty": false + }, + "limit": { + "type": "object", + "properties": { + "activeClusters": { + "type": "integer", + "x-omitempty": false + }, + "overageUsage": { + "type": "number", + "x-omitempty": false + }, + "usage": { + "type": "number", + "format": "float64", + "x-omitempty": false } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "usage": { + "type": "object", + "properties": { + "usage": { + "type": "number", + "format": "float64", + "x-omitempty": false + } } - ], - "summary": "Updates the specified pack registry", - "tags": [ - "registries" - ] + } } }, - "/v1/registries/pack/{uid}/sync": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1TenantOidcClaims": { + "type": "object", + "properties": { + "Email": { + "type": "string", + "x-omitempty": false }, - { - "default": false, - "in": "query", - "name": "forceSync", - "type": "boolean" + "FirstName": { + "type": "string", + "x-omitempty": false + }, + "LastName": { + "type": "string", + "x-omitempty": false + }, + "SpectroTeam": { + "type": "string", + "x-omitempty": false } - ], - "post": { - "description": "Sync all the packs from the registry", - "operationId": "v1RegistriesPackUidSync", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "v1TenantOidcClientSpec": { + "description": "Tenant", + "type": "object", + "properties": { + "callbackUrl": { + "type": "string", + "x-omitempty": false + }, + "clientId": { + "type": "string", + "x-omitempty": false + }, + "clientSecret": { + "type": "string", + "x-omitempty": false + }, + "defaultTeams": { + "type": "array", + "items": { "type": "string" - } - ], - "responses": { - "202": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + }, + "x-omitempty": false + }, + "isSsoEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "issuerUrl": { + "description": "the issuer is the URL identifier for the service", + "type": "string", + "x-omitempty": false + }, + "logoutUrl": { + "type": "string", + "x-omitempty": false + }, + "requiredClaims": { + "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 } } }, - "security": [ - { - "ApiKey": [] + "scopes": { + "type": "array", + "items": { + "type": "string" }, - { - "Authorization": [] - } - ], - "summary": "Sync Pack registry", - "tags": [ - "registries" - ] + "x-omitempty": false + }, + "scopesDelimiter": { + "type": "string", + "x-omitempty": false + }, + "syncSsoTeams": { + "type": "boolean", + "x-omitempty": false + } } }, - "/v1/registries/pack/{uid}/sync/status": { - "get": { - "description": "Get sync status for the pack specified registry", - "operationId": "v1RegistriesPackUidSyncStatus", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Pack registry sync status", - "schema": { - "$ref": "#/definitions/v1RegistrySyncStatus" - } - } + "v1TenantPasswordPolicyEntity": { + "description": "Tenant Password Policy Entity", + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get pack registry sync status", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "expiryDurationInDays": { + "type": "integer" + }, + "firstReminderInDays": { + "type": "integer" + }, + "isRegex": { + "type": "boolean" + }, + "minLength": { + "type": "integer" + }, + "minNumOfBlockLetters": { + "type": "integer" + }, + "minNumOfDigits": { + "type": "integer" + }, + "minNumOfSmallLetters": { + "type": "integer" + }, + "minNumOfSpecialCharacters": { + "type": "integer" + }, + "regex": { "type": "string" + }, + "updateTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" } - ] + } }, - "/v1/registries/{registryName}/config": { - "get": { - "operationId": "v1RegistriesNameConfigGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1RegistryConfigEntity" - } - } + "v1TenantResourceLimit": { + "properties": { + "kind": { + "type": "string", + "enum": [ + "user", + "project", + "apiKey", + "team", + "role", + "cloudaccount", + "clusterprofile", + "workspace", + "registry", + "privategateway", + "location", + "certificate", + "macro", + "sshkey", + "alert", + "spectrocluster", + "edgehost", + "appprofile", + "appdeployment", + "edgetoken", + "clustergroup", + "filter", + "systemadmin" + ] }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified system scope registry configuration", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "in": "path", - "name": "registryName", - "required": true, + "label": { "type": "string" + }, + "limit": { + "type": "number", + "format": "int64", + "x-omitempty": false } - ] + } }, - "/v1/registries/{uid}": { - "delete": { - "operationId": "v1RegistriesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1TenantResourceLimitEntity": { + "properties": { + "kind": { + "type": "string", + "enum": [ + "user", + "project", + "apiKey", + "team", + "role", + "cloudaccount", + "clusterprofile", + "workspace", + "registry", + "privategateway", + "location", + "certificate", + "macro", + "sshkey", + "alert", + "spectrocluster", + "edgehost", + "appprofile", + "appdeployment", + "edgetoken", + "clustergroup", + "filter", + "systemadmin" + ] }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "limit": { + "type": "number", + "format": "int64", + "x-omitempty": false + } + } + }, + "v1TenantResourceLimits": { + "description": "Tenant resource limits", + "properties": { + "resources": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "kind": { + "type": "string", + "enum": [ + "user", + "project", + "apiKey", + "team", + "role", + "cloudaccount", + "clusterprofile", + "workspace", + "registry", + "privategateway", + "location", + "certificate", + "macro", + "sshkey", + "alert", + "spectrocluster", + "edgehost", + "appprofile", + "appdeployment", + "edgetoken", + "clustergroup", + "filter", + "systemadmin" + ] + }, + "label": { + "type": "string" + }, + "limit": { + "type": "number", + "format": "int64", + "x-omitempty": false + } + } } - ], - "summary": "Deletes the specified registry", - "tags": [ - "registries" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/roles": { - "get": { - "operationId": "v1RolesList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1TenantResourceLimitsEntity": { + "description": "Tenant resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.", + "properties": { + "resources": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "kind": { + "type": "string", + "enum": [ + "user", + "project", + "apiKey", + "team", + "role", + "cloudaccount", + "clusterprofile", + "workspace", + "registry", + "privategateway", + "location", + "certificate", + "macro", + "sshkey", + "alert", + "spectrocluster", + "edgehost", + "appprofile", + "appdeployment", + "edgetoken", + "clustergroup", + "filter", + "systemadmin" + ] + }, + "limit": { + "type": "number", + "format": "int64", + "x-omitempty": false + } + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Roles" + } + } + }, + "v1TenantSamlRequestSpec": { + "description": "Tenant", + "type": "object", + "properties": { + "attributes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "attributeValue": { + "type": "string" + }, + "mappedAttribute": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nameFormat": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of roles", - "tags": [ - "roles" - ] - }, - "post": { - "operationId": "v1RolesCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Role" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "defaultTeams": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "federationMetadata": { + "type": "string" + }, + "identityProvider": { + "type": "string" + }, + "isSingleLogoutEnabled": { + "type": "boolean" + }, + "isSsoEnabled": { + "type": "boolean" + }, + "nameIdFormat": { + "type": "string" + }, + "syncSsoTeams": { + "type": "boolean" + } + } + }, + "v1TenantSamlSpec": { + "description": "Tenant", + "type": "object", + "properties": { + "acsUrl": { + "type": "string" + }, + "attributes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "attributeValue": { + "type": "string" + }, + "mappedAttribute": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nameFormat": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "audienceUrl": { + "description": "same as entity id", + "type": "string" + }, + "certificate": { + "description": "certificate for slo", + "type": "string" + }, + "defaultTeams": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Creates a role with specified permissions", - "tags": [ - "roles" - ] + }, + "entityId": { + "type": "string" + }, + "federationMetadata": { + "type": "string" + }, + "identityProvider": { + "type": "string" + }, + "isSingleLogoutEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "isSsoEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "issuer": { + "description": "same as entity id", + "type": "string" + }, + "nameIdFormat": { + "type": "string" + }, + "serviceProviderMetadata": { + "type": "string" + }, + "singleLogoutUrl": { + "description": "slo url", + "type": "string", + "x-omitempty": false + }, + "syncSsoTeams": { + "type": "boolean", + "x-omitempty": false + } } }, - "/v1/roles/{uid}": { - "delete": { - "operationId": "v1RolesUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1TenantSamlSpecAttribute": { + "type": "object", + "properties": { + "attributeValue": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified role", - "tags": [ - "roles" - ] - }, - "get": { - "operationId": "v1RolesUidGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Role" - } - } + "mappedAttribute": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified role", - "tags": [ - "roles" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "name": { "type": "string" - } - ], - "put": { - "operationId": "v1RolesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Role" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified role", - "tags": [ - "roles" - ] + "nameFormat": { + "type": "string" + } } }, - "/v1/roles/{uid}/clone": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1TenantSelfSignUpSpec": { + "description": "Tenant sign up data", + "type": "object", + "required": [ + "firstName", + "lastName", + "emailId", + "orgName" + ], + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "loginMode": { + "type": "string", + "default": "devops", + "enum": [ + "dev", + "devops" + ] + }, + "notifyTenantAdmin": { + "type": "boolean" + }, + "orgName": { "type": "string" } - ], - "post": { - "operationId": "v1RolesClone", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1RoleClone" + } + }, + "v1TenantSpec": { + "description": "Tenant Spec", + "type": "object", + "properties": { + "address": { + "description": "Tenant Address", + "type": "object", + "properties": { + "addressLine1": { + "type": "string" + }, + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" } } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + }, + "authType": { + "type": "string" + }, + "defaultLoginMode": { + "type": "string" + }, + "orgEmailId": { + "type": "string" + }, + "orgName": { + "type": "string" + }, + "planUid": { + "type": "string" + } + } + }, + "v1TenantSpecEntity": { + "description": "Tenant Entity input", + "type": "object", + "properties": { + "address": { + "description": "Tenant Address", + "type": "object", + "properties": { + "addressLine1": { + "type": "string" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "authType": { + "type": "string" + }, + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "loginMode": { + "type": "string", + "default": "devops", + "enum": [ + "dev", + "devops" + ] + }, + "orgEmailId": { + "type": "string" + }, + "orgName": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Clone the role", - "tags": [ - "roles" - ] + }, + "ssoApp": { + "type": "string" + } } }, - "/v1/services/{serviceName}/version": { - "get": { - "operationId": "v1ServiceVersionGet", - "parameters": [ - { - "description": "service name", - "enum": [ - "ally", - "jet", - "palette", - "ambit", - "ally-lite", - "palette-lite", - "crony", - "tick", - "edge", - "lodge", - "level", - "edgeconfig", - "firth", - "stylus" - ], - "in": "path", - "name": "serviceName", - "required": true, - "type": "string" - }, - { - "description": "spectro cluster uid", - "in": "query", - "name": "clusterUid", - "type": "string" - }, - { - "description": "edge host uid", - "in": "query", - "name": "edgeHostUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1TenantSsoAuthProvidersEntity": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "ssoLogins": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ServiceVersion" + } + } + }, + "v1TenantStatus": { + "description": "Tenant Status", + "type": "object", + "properties": { + "cleanUpStatus": { + "description": "Tenant CleanUp Status", + "type": "object", + "properties": { + "cleanUpError": { + "type": "string" + }, + "cleanUpStages": { + "type": "string" + }, + "cleanUpTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "cleanedResources": { + "type": "array", + "items": { + "type": "string" + } + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "isInProgress": { + "type": "boolean", + "x-omitempty": false } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns a latest version for a given service name", - "tags": [ - "services" - ] + "isActive": { + "type": "boolean", + "x-omitempty": false + }, + "toBeDeleted": { + "type": "boolean", + "x-omitempty": false + } } }, - "/v1/services/{serviceName}/versions/{version}/manifest": { - "get": { - "operationId": "v1ServiceManifestGet", - "parameters": [ - { - "description": "service name", - "enum": [ - "ally", - "jet", - "palette", - "ambit", - "ally-lite", - "palette-lite", - "crony", - "tick", - "edge", - "lodge", - "level", - "edgeconfig", - "firth", - "stylus" - ], - "in": "path", - "name": "serviceName", - "required": true, - "type": "string" - }, - { - "description": "service version", - "in": "path", - "name": "version", - "required": true, - "type": "string" - }, - { - "description": "action type", - "enum": [ - "apply", - "delete", - "resources" - ], - "in": "query", - "name": "action", - "required": true, - "type": "string" - }, - { - "description": "resource file name", - "in": "query", - "name": "resourceFilename", - "type": "string" - }, - { - "description": "spectro cluster uid", - "in": "query", - "name": "clusterUid", - "type": "string" - }, - { - "description": "edge host uid", - "in": "query", - "name": "edgeHostUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ServiceManifest" + "v1TenantUpgradeSettingsEntity": { + "properties": { + "enableLock": { + "type": "boolean", + "x-omitempty": false + }, + "supportedVersionsRange": { + "type": "integer", + "x-omitempty": false + } + } + }, + "v1TenantUsage": { + "description": "Tenant usage object", + "properties": { + "orgName": { + "description": "Organization name", + "type": "string" + }, + "tenantUid": { + "description": "Tenant uid", + "type": "string" + }, + "usedAlloyCredits": { + "description": "Credits used by imported clusters", + "type": "number", + "format": "float64" + }, + "usedPureCredits": { + "description": "Credits used by managed clusters", + "type": "number", + "format": "float64" + } + } + }, + "v1Tenants": { + "description": "Tenants list", + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Tenant", + "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": "Tenant Spec", + "type": "object", + "properties": { + "address": { + "description": "Tenant Address", + "type": "object", + "properties": { + "addressLine1": { + "type": "string" + }, + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "authType": { + "type": "string" + }, + "defaultLoginMode": { + "type": "string" + }, + "orgEmailId": { + "type": "string" + }, + "orgName": { + "type": "string" + }, + "planUid": { + "type": "string" + } + } + }, + "status": { + "description": "Tenant Status", + "type": "object", + "properties": { + "cleanUpStatus": { + "description": "Tenant CleanUp Status", + "type": "object", + "properties": { + "cleanUpError": { + "type": "string" + }, + "cleanUpStages": { + "type": "string" + }, + "cleanUpTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "cleanedResources": { + "type": "array", + "items": { + "type": "string" + } + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "isInProgress": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "isActive": { + "type": "boolean", + "x-omitempty": false + }, + "toBeDeleted": { + "type": "boolean", + "x-omitempty": false + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Returns a service manifest for a given service name and version", - "tags": [ - "services" - ] + } } }, - "/v1/spectroclusters": { - "get": { - "description": "Deprecated: Use POST /v1/dashboard/spectroclusters", - "operationId": "v1SpectroClustersList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1TenantsAccountsNas": { + "type": "object", + "properties": { + "failures": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "An array of cluster items", - "schema": { - "$ref": "#/definitions/v1SpectroClusters" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "success": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Retrieves a list of clusters", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/agents/{messageKey}/notify": { - "post": { - "operationId": "V1SpectroClustersAgentsNotify", - "parameters": [ - { - "in": "path", - "name": "messageKey", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClustersAgentsNotifyEntity" + "v1TenantsActivities": { + "description": "Active tenants and clusters data", + "type": "object", + "properties": { + "tenants": { + "type": "object", + "additionalProperties": { + "description": "Active tenant and clusters data", + "type": "object", + "properties": { + "clustersInfo": { + "description": "Active clusters information", + "type": "object", + "properties": { + "clustersMeta": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Active cluster meta", + "type": "object", + "properties": { + "cloudType": { + "type": "string" + }, + "clusterType": { + "type": "string" + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "duration": { + "type": "string" + }, + "name": { + "type": "string" + }, + "projectName": { + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "Pending", + "Provisioning", + "Running", + "Deleting", + "Deleted", + "Error", + "Importing" + ] + }, + "uid": { + "type": "string" + } + } + } + }, + "totalActiveClusters": { + "type": "number", + "format": "int64" + }, + "totalActiveGreenFieldClusters": { + "type": "number", + "format": "int64" + }, + "totalActiveImportedClusters": { + "type": "number", + "format": "int64" + }, + "totalClustersDeleted": { + "type": "number", + "format": "int64" + }, + "totalClustersDeployed": { + "type": "number", + "format": "int64" + } + } + }, + "org": { + "type": "string" + }, + "planType": { + "type": "string" + }, + "totalProjects": { + "type": "number", + "format": "int64" + }, + "totalUsers": { + "type": "number", + "format": "int64" + }, + "uid": { + "type": "string" + }, + "users": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Active user data", + "type": "object", + "properties": { + "lastLogin": { + "type": "string" + }, + "lastLoginTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "uid": { + "type": "string" + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1TencentAccount": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "type": "object", + "required": [ + "secretId", + "secretKey" + ], + "properties": { + "secretId": { + "description": "Tencent api secretID", + "type": "string" + }, + "secretKey": { + "description": "Tencent api secret key", + "type": "string" + } } - ], - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/aks": { - "post": { - "operationId": "v1SpectroClustersAksCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroAzureClusterEntity" + }, + "status": { + "description": "Status of the account", + "type": "object", + "properties": { + "state": { + "description": "Cloud account status", + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1TencentAccounts": { + "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" + } + } } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Creates an AKS cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/aks/rate": { - "post": { - "operationId": "v1SpectroClustersAksRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroAzureClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Aks Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" + "v1TencentAvailabilityZone": { + "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" + } + } + }, + "v1TencentAvailabilityZones": { + "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" + } } } + } + } + }, + "v1TencentCloudAccount": { + "type": "object", + "required": [ + "secretId", + "secretKey" + ], + "properties": { + "secretId": { + "description": "Tencent api secretID", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "secretKey": { + "description": "Tencent api secret key", + "type": "string" + } + } + }, + "v1TencentCloudClusterConfigEntity": { + "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" + } } - ], - "summary": "Get AKS cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/aks/validate": { - "post": { - "operationId": "v1SpectroClustersAksValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroAzureClusterEntity" + "v1TencentCloudConfig": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "Aks Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + }, + "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" + } + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates AKS cluster create operation", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/aws": { - "post": { - "operationId": "v1SpectroClustersAwsCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroAwsClusterEntity" + "v1TencentCloudConfigSpec": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Creates an AWS cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/aws/import": { - "post": { - "operationId": "v1SpectroClustersAwsImport", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroAwsClusterImportEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1TencentClusterConfig": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "securityGroup": { + "description": "Tencent security group", + "type": "string" + }, + "subnetId": { + "description": "Tencent Subnet", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Imports an AWS cluster", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/aws/rate": { - "post": { - "operationId": "v1SpectroClustersAwsRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroAwsClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "region": { + "type": "string" + }, + "sshKeyIDs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "Aws Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get AWS cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + "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" + } } }, - "/v1/spectroclusters/aws/validate": { - "post": { - "operationId": "v1SpectroClustersAwsValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroAwsClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Aws Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + "v1TencentInstanceTypes": { + "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" + } } } + } + } + }, + "v1TencentKeypair": { + "description": "Tencent Keypair entity", + "type": "object", + "properties": { + "id": { + "description": "Tencent keypair id", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates AWS cluster create operation", - "tags": [ - "spectroclusters" - ] + "name": { + "description": "Tencent keypair name", + "type": "string" + }, + "publickey": { + "description": "Tencent public key", + "type": "string" + } } }, - "/v1/spectroclusters/azure": { - "post": { - "operationId": "v1SpectroClustersAzureCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroAzureClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1TencentKeypairs": { + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an Azure cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/azure/import": { - "post": { - "operationId": "v1SpectroClustersAzureImport", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroAzureClusterImportEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1TencentMachine": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Imports an Azure cluster", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/azure/rate": { - "post": { - "operationId": "v1SpectroClustersAzureRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroAzureClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Azure Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Get Azure cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/azure/validate": { - "post": { - "operationId": "v1SpectroClustersAzureValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroAzureClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1TencentMachinePoolCloudConfigEntity": { + "type": "object", + "properties": { + "azs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "Azure Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Validates Azure cluster create operation", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/cloudTypes/{cloudType}": { - "parameters": [ - { - "description": "Cluster's cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1SpectroClustersCustomCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroCustomClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1TencentMachinePoolConfig": { + "type": "object", + "properties": { + "additionalLabels": { + "description": "AdditionalLabels", + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "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" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a Custom cluster", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/cloudTypes/{cloudType}/validate": { - "parameters": [ - { - "description": "Cluster's cloud type", - "in": "path", - "name": "cloudType", - "required": true, + "instanceType": { + "description": "instance type", "type": "string" - } - ], - "post": { - "operationId": "v1SpectroClustersCustomValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroCustomClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "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" } - ], - "responses": { - "200": { - "description": "Custom Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + }, + "machinePoolProperties": { + "description": "Machine pool specific properties", + "type": "object", + "properties": { + "archType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates Custom cluster create operation", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/config/edgeInstaller": { - "get": { - "operationId": "v1SpectroClustersConfigEdgeInstaller", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "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" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1ClusterEdgeInstallerConfig" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } } - ], - "summary": "Cluster configuration for the edge installer", - "tags": [ - "spectroclusters" - ] + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } } }, - "/v1/spectroclusters/coxedge": { - "post": { - "operationId": "v1SpectroClustersCoxEdgeCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroCoxEdgeClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1TencentMachinePoolConfigEntity": { + "type": "object", + "required": [ + "cloudConfig" + ], + "properties": { + "cloudConfig": { + "type": "object", + "properties": { + "azs": { + "type": "array", + "items": { "type": "string" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Creates a CoxEdge cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/coxedge/rate": { - "post": { - "operationId": "v1SpectroClustersCoxEdgeRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroCoxEdgeClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Azure Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" + "v1TencentMachineSpec": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "securityGroups": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Get Cox Edge cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + }, + "subnetId": { + "type": "string" + }, + "type": { + "type": "string" + }, + "vpcId": { + "type": "string" + }, + "zoneId": { + "type": "string" + } } }, - "/v1/spectroclusters/coxedge/validate": { - "post": { - "operationId": "v1SpectroClustersCoxEdgeValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroCoxEdgeClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Azure Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + "v1TencentMachines": { + "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" + } + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates Cox Edge cluster create operation", - "tags": [ - "spectroclusters" - ] + "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/spectroclusters/edge": { - "post": { - "operationId": "v1SpectroClustersEdgeCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroEdgeClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1TencentNic": { + "description": "Tencent network interface", + "type": "object", + "properties": { + "index": { + "type": "integer", + "format": "int8" + }, + "privateIPs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "publicIp": { + "type": "string" + } + } + }, + "v1TencentRegion": { + "description": "Tencent region entity", + "type": "object", + "properties": { + "name": { + "description": "Name of tencent region", + "type": "string" + }, + "state": { + "description": "State of tencent region", + "type": "string" + } + } + }, + "v1TencentRegions": { + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } + } + } + }, + "v1TencentSecurityGroup": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a Edge cluster", - "tags": [ - "spectroclusters" - ] + "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/spectroclusters/edge-native": { - "post": { - "operationId": "v1SpectroClustersEdgeNativeCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroEdgeNativeClusterEntity" + "v1TencentSecurityGroups": { + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1TencentStorageTypes": { + "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" + } + } + } + } + } } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } + } + } + }, + "v1TencentSubnet": { + "description": "Tencent Subnet entity", + "type": "object", + "properties": { + "az": { + "description": "Availability zone associated with tencent subnet", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an EdgeNative cluster", - "tags": [ - "spectroclusters" - ] + "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" + } } }, - "/v1/spectroclusters/edge-native/import": { - "post": { - "operationId": "v1SpectroClustersEdgeNativeImport", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroEdgeNativeClusterImportEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1TencentVpc": { + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Imports an EdgeNative cluster", - "tags": [ - "spectroclusters" - ] + "vpcId": { + "description": "Tencent VPC id", + "type": "string" + } } }, - "/v1/spectroclusters/edge-native/rate": { - "post": { - "operationId": "v1SpectroClustersEdgeNativeRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" + "v1TencentVpcs": { + "description": "List of Tencent VPCs", + "type": "object", + "required": [ + "vpcs" + ], + "properties": { + "vpcs": { + "type": "array", + "items": { + "description": "Tencent VPC entity", + "type": "object", + "required": [ + "vpcId" ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroEdgeNativeClusterRateEntity" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "EdgeNative Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "v1TierPrice": { + "description": "tier price", + "properties": { + "alloyPricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "purePricing": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "tier price range", + "properties": { + "discount": { + "type": "number", + "format": "int64" + }, + "startFrom": { + "type": "number", + "format": "float64" + }, + "unitAmount": { + "type": "number", + "format": "float64" + }, + "upTo": { + "type": "number", + "format": "float64" + }, + "upToInfinity": { + "type": "boolean" + } + } } - ], - "summary": "Get edge-native cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/edge-native/validate": { - "post": { - "operationId": "v1SpectroClustersEdgeNativeValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroEdgeNativeClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "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" + }, + "v1TkeEndpointAccess": { + "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" } - ], - "responses": { - "200": { - "description": "EdgeNative Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates edge-native cluster create operation", - "tags": [ - "spectroclusters" - ] + "securityGroup": { + "description": "Tencent security group", + "type": "string" + }, + "subnetId": { + "description": "Tencent Subnet", + "type": "string" + } } }, - "/v1/spectroclusters/edge/import": { - "post": { - "operationId": "v1SpectroClustersEdgeImport", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroEdgeClusterImportEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - }, - "schema": { - "$ref": "#/definitions/v1Uid" - } - } + "v1TlsConfiguration": { + "description": "TLS configuration", + "type": "object", + "properties": { + "ca": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Imports an Edge cluster", - "tags": [ - "spectroclusters" - ] + "certificate": { + "type": "string" + }, + "enabled": { + "type": "boolean", + "x-omitempty": false + }, + "insecureSkipVerify": { + "type": "boolean", + "x-omitempty": false + }, + "key": { + "type": "string" + } } }, - "/v1/spectroclusters/edge/rate": { - "post": { - "operationId": "v1SpectroClustersEdgeRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroEdgeClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Edge Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" + "v1TotalClusterRate": { + "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 + } + } + }, + "v1TotalResourceUsage": { + "description": "Total Resource Usage", + "properties": { + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "project resource usage", + "properties": { + "alloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "project": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "pureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get edge cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + "totalAlloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "totalPureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } } }, - "/v1/spectroclusters/edge/validate": { - "post": { - "operationId": "v1SpectroClustersEdgeValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroEdgeClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1TransferJob": { + "description": "transfer job details", + "type": "object", + "properties": { + "finishTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "folder": { + "type": "string" + }, + "isCompleted": { + "type": "boolean" + }, + "message": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "edge Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + }, + "status": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Validates edge cluster create operation", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/eks": { - "post": { - "operationId": "v1SpectroClustersEksCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroEksClusterEntity" + "v1Uid": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "uid": { + "type": "string" + } + } + }, + "v1UidRoleSummary": { + "type": "object", + "properties": { + "inheritedRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an EKS cluster", - "tags": [ - "spectroclusters" - ] + "uid": { + "type": "string" + } } }, - "/v1/spectroclusters/eks/rate": { - "post": { - "operationId": "v1SpectroClustersEksRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroEksClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Eks Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" - } - } + "v1UidSummary": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get EKS cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + "uid": { + "type": "string" + } } }, - "/v1/spectroclusters/eks/validate": { - "post": { - "operationId": "v1SpectroClustersEksValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroEksClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } + "v1Uids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "uid" ], - "responses": { - "200": { - "description": "Eks Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "properties": { + "uid": { + "type": "string" } - ], - "summary": "Validates EKS cluster create operation", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/features/backup/locations/{uid}": { - "get": { - "operationId": "V1ClusterFeatureBackupLocationUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterRefs" - } - } + "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" + ] + } + } + }, + "v1UpdateTenantStatus": { + "description": "Update tenant status", + "type": "object", + "properties": { + "errorMessage": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the cluster object references based on locationUid", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "kind": { + "type": "string" + }, + "stage": { "type": "string" } - ], - "put": { - "operationId": "V1ClusterFeatureBackupLocationUidChange", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterBackupLocationType" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "v1Updated": { + "description": "The resource was updated successfully" + }, + "v1UpdatedMsg": { + "description": "Update response with message", + "properties": { + "msg": { + "type": "string" + } + } + }, + "v1Upgrades": { + "description": "Upgrades represent the reason of the last upgrade that took place", + "type": "object", + "properties": { + "reason": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Change cluster backup location", - "tags": [ - "spectroclusters" - ] + "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" + } } }, - "/v1/spectroclusters/features/logFetcher/{uid}/download": { - "get": { - "operationId": "v1ClusterFeatureLogFetcherLogDownload", - "parameters": [ - { - "in": "query", - "name": "fileName", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "OK", - "headers": { - "Content-Disposition": { + "v1User": { + "description": "User", + "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" - }, - "Content-Type": { + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { "type": "string" } }, - "schema": { - "type": "file" + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "description": "User specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } } - ], - "summary": "Download log fetcher logs for cluster by log fetcher uid", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid for which log is requested", - "in": "path", - "name": "uid", - "required": true, + }, + "status": { + "description": "User status", + "properties": { + "activationLink": { + "description": "provides the link to activate or reset the user password", + "type": "string", + "x-omitempty": false + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean", + "x-omitempty": false + }, + "isPasswordResetting": { + "description": "Specifies if user in multi org requested password reset", + "type": "boolean", + "x-omitempty": false + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } + } + }, + "v1UserActivateInfo": { + "type": "object", + "properties": { + "passwordToken": { "type": "string" } - ] + } }, - "/v1/spectroclusters/features/logFetcher/{uid}/log": { - "parameters": [ - { - "description": "Cluster uid for which log is requested", - "in": "path", - "name": "uid", - "required": true, + "v1UserActivateLink": { + "type": "object", + "properties": { + "activationLink": { "type": "string" } - ], - "post": { - "consumes": [ - "multipart/form-data" - ], - "operationId": "v1ClusterFeatureLogFetcherLogUpdate", - "parameters": [ - { - "description": "Log file by agent", - "in": "formData", - "name": "fileName", - "type": "file" - }, - { - "description": "Unique request Id", - "in": "query", - "name": "requestId", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1UserActivityInfo": { + "description": "Active user data", + "type": "object", + "properties": { + "lastLogin": { + "type": "string" + }, + "lastLoginTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling 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" + }, + "uid": { + "type": "string" + } + } + }, + "v1UserAssetSsh": { + "description": "SSH 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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "description": "SSH key specification", + "type": "object", + "properties": { + "publicKey": { + "type": "string" + } } - ], - "summary": "Update log fetcher logs by log fetcher uid", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/gcp": { - "post": { - "operationId": "v1SpectroClustersGcpCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroGcpClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1UserAssetSshEntity": { + "description": "SSH Key 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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "labels": { + "description": "Labels are key value data to 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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "description": "SSH key specification", + "type": "object", + "properties": { + "publicKey": { + "type": "string" + } } - ], - "summary": "Creates a GCP cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/gcp/import": { - "post": { - "operationId": "v1SpectroClustersGcpImport", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroGcpClusterImportEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1UserAssetSshSpec": { + "description": "SSH key specification", + "type": "object", + "properties": { + "publicKey": { + "type": "string" + } + } + }, + "v1UserAssetsLocation": { + "description": "Location 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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "description": "Location specification", + "type": "object", + "properties": { + "isDefault": { + "type": "boolean" + }, + "storage": { + "description": "Location type", + "type": "string", + "default": "s3", + "enum": [ + "s3", + "gcp", + "minio" + ] + }, + "type": { + "type": "string" + } } - ], - "summary": "Imports a GCP cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/gcp/rate": { - "post": { - "operationId": "v1SpectroClustersGcpRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroGcpClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Gcp Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" + "v1UserAssetsLocationAzure": { + "description": "Azure location object", + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "description": "Azure location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "Azure storage config object", + "type": "object", + "required": [ + "resourceGroup", + "containerName", + "storageName", + "credentials" + ], + "properties": { + "containerName": { + "description": "Azure container name", + "type": "string" + }, + "credentials": { + "type": "object", + "properties": { + "clientCloud": { + "description": "Contains configuration for Azure cloud", + "type": "string", + "default": "public", + "enum": [ + "azure-china", + "azure-government", + "public" + ] + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "subscriptionId": { + "type": "string" + }, + "tenantId": { + "type": "string" + } + } + }, + "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" + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "Azure location type [azure]", + "type": "string" + } } - ], - "summary": "Get GCP cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/gcp/validate": { - "post": { - "operationId": "v1SpectroClustersGcpValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroGcpClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Gcp Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + "v1UserAssetsLocationAzureSpec": { + "description": "Azure location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "Azure storage config object", + "type": "object", + "required": [ + "resourceGroup", + "containerName", + "storageName", + "credentials" + ], + "properties": { + "containerName": { + "description": "Azure container name", + "type": "string" + }, + "credentials": { + "type": "object", + "properties": { + "clientCloud": { + "description": "Contains configuration for Azure cloud", + "type": "string", + "default": "public", + "enum": [ + "azure-china", + "azure-government", + "public" + ] + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "subscriptionId": { + "type": "string" + }, + "tenantId": { + "type": "string" + } + } + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates GCP cluster create operation", - "tags": [ - "spectroclusters" - ] + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "Azure location type [azure]", + "type": "string" + } } }, - "/v1/spectroclusters/generic/import": { - "post": { - "description": "The machines information will be captured, whereas the cloud specific configuration info will not be retrieved", - "operationId": "v1SpectroClustersGenericImport", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroGenericClusterImportEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1UserAssetsLocationGcp": { + "description": "GCP location object", + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "labels": { + "description": "Labels are key value data to 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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "description": "GCP location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "GCP storage config object", + "type": "object", + "required": [ + "bucketName", + "credentials" + ], + "properties": { + "bucketName": { + "description": "GCP storage bucket name", + "type": "string" + }, + "credentials": { + "type": "object", + "properties": { + "jsonCredentials": { + "type": "string" + }, + "jsonCredentialsFileUid": { + "type": "string" + } + } + } + } + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "GCP location type [gcp]", + "type": "string" + } } - ], - "summary": "Imports a cluster of any cloud type in generic way", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/generic/rate": { - "post": { - "operationId": "v1SpectroClustersGenericRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroGenericClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Genric Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" + "v1UserAssetsLocationGcpSpec": { + "description": "GCP location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "GCP storage config object", + "type": "object", + "required": [ + "bucketName", + "credentials" + ], + "properties": { + "bucketName": { + "description": "GCP storage bucket name", + "type": "string" + }, + "credentials": { + "type": "object", + "properties": { + "jsonCredentials": { + "type": "string" + }, + "jsonCredentialsFileUid": { + "type": "string" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get generic cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "GCP location type [gcp]", + "type": "string" + } } }, - "/v1/spectroclusters/gke": { - "post": { - "operationId": "v1SpectroClustersGkeCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroGcpClusterEntity" + "v1UserAssetsLocationS3": { + "description": "S3 location object", + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "spec": { + "description": "S3 location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "S3 storage config object", + "type": "object", + "required": [ + "bucketName", + "region", + "credentials" + ], + "properties": { + "bucketName": { + "description": "S3 storage bucket name", + "type": "string" + }, + "caCert": { + "description": "CA Certificate", + "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" + } + } + } + } + }, + "region": { + "description": "AWS region name", + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean", + "default": true + }, + "s3Url": { + "description": "Custom hosted S3 URL", + "type": "string" + }, + "useRestic": { + "description": "Set to 'true', to use Restic plugin for the backup", + "type": "boolean", + "default": true + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "S3 location type [s3/minio]", + "type": "string" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates an GKE cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/gke/rate": { - "post": { - "operationId": "v1SpectroClustersGkeRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroGcpClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Gke Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" + "v1UserAssetsLocationS3Spec": { + "description": "S3 location specification", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "description": "S3 storage config object", + "type": "object", + "required": [ + "bucketName", + "region", + "credentials" + ], + "properties": { + "bucketName": { + "description": "S3 storage bucket name", + "type": "string" + }, + "caCert": { + "description": "CA Certificate", + "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" + } + } + } + } + }, + "region": { + "description": "AWS region name", + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean", + "default": true + }, + "s3Url": { + "description": "Custom hosted S3 URL", + "type": "string" + }, + "useRestic": { + "description": "Set to 'true', to use Restic plugin for the backup", + "type": "boolean", + "default": true } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get GKE cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "S3 location type [s3/minio]", + "type": "string" + } } }, - "/v1/spectroclusters/gke/validate": { - "post": { - "operationId": "v1SpectroClustersGkeValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroGcpClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Gke Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" - } - } + "v1UserAssetsLocationSpec": { + "description": "Location specification", + "type": "object", + "properties": { + "isDefault": { + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates GKE cluster create operation", - "tags": [ - "spectroclusters" - ] + "storage": { + "description": "Location type", + "type": "string", + "default": "s3", + "enum": [ + "s3", + "gcp", + "minio" + ] + }, + "type": { + "type": "string" + } } }, - "/v1/spectroclusters/libvirt": { - "post": { - "operationId": "v1SpectroClustersLibvirtCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroLibvirtClusterEntity" + "v1UserAssetsLocations": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "description": "List of locations", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Location 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": "Location specification", + "type": "object", + "properties": { + "isDefault": { + "type": "boolean" + }, + "storage": { + "description": "Location type", + "type": "string", + "default": "s3", + "enum": [ + "s3", + "gcp", + "minio" + ] + }, + "type": { + "type": "string" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + } + } + }, + "v1UserAssetsSsh": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "description": "List of SSH keys", + "type": "array", + "uniqueItems": true, + "items": { + "description": "SSH 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": "SSH key specification", + "type": "object", + "properties": { + "publicKey": { + "type": "string" + } + } } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a Libvirt cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/libvirt/import": { - "post": { - "operationId": "v1SpectroClustersLibvirtImport", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroLibvirtClusterImportEntity" + "v1UserAuthenticatedUrl": { + "description": "Returns the Authenticated redirect Url for the palette oidc", + "type": "object", + "properties": { + "redirectUrl": { + "description": "authenticated redirect Url for the palette oidc", + "type": "string" + } + } + }, + "v1UserEntity": { + "description": "User", + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "spec": { + "description": "User Entity input", + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "loginMode": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "teams": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } } } + } + } + }, + "v1UserInfoResponse": { + "type": "object", + "properties": { + "address": { + "description": "End-User's preferred postal address", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Imports a libvirt cluster", - "tags": [ - "spectroclusters" - ] + "birthdate": { + "description": "End-User's birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format", + "type": "string" + }, + "email": { + "description": "End-User's preferred e-mail address", + "type": "string" + }, + "email_verified": { + "description": "User at the time the verification was performed", + "type": "boolean" + }, + "family_name": { + "description": "Surname(s) or last name(s) of the End-User", + "type": "string" + }, + "gender": { + "description": "End-User's gender", + "type": "string" + }, + "given_name": { + "description": "Given name(s) or first name(s) of the End-User", + "type": "string" + }, + "locale": { + "description": "End-User's locale, represented as a BCP47 [RFC5646] language tag", + "type": "string" + }, + "middle_name": { + "description": "Middle name(s) of the End-User", + "type": "string" + }, + "name": { + "description": "End-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences", + "type": "string" + }, + "nickname": { + "description": "Casual name of the End-User that may or may not be the same as the given_name", + "type": "string" + }, + "phone_number": { + "description": "End-User's preferred telephone number", + "type": "string" + }, + "phone_number_verified": { + "description": "User at the time the verification was performed", + "type": "boolean" + }, + "picture": { + "description": "URL of the End-User's profile picture", + "type": "string" + }, + "preferred_username": { + "description": "Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe", + "type": "string" + }, + "profile": { + "description": "URL of the End-User's profile page", + "type": "string" + }, + "sub": { + "description": "Subject - Identifier for the End-User at the Issuer", + "type": "string" + }, + "updated_at": { + "description": "Time the End-User's information was last updated", + "type": "integer" + }, + "website": { + "description": "URL of the End-User's Web page or blog", + "type": "string" + }, + "zoneinfo": { + "description": "String from zoneinfo [zoneinfo] time zone database representing the End-User's time zone", + "type": "string" + } } }, - "/v1/spectroclusters/libvirt/rate": { - "post": { - "operationId": "v1SpectroClustersLibvirtRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroLibvirtClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Libvirt Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" - } - } + "v1UserKubectlSession": { + "type": "object", + "properties": { + "clusterUid": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get libvirt cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + "creationTime": { + "type": "string" + }, + "isActive": { + "type": "boolean" + }, + "podIp": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "port": { + "type": "string" + }, + "projectUid": { + "type": "string" + }, + "sessionUid": { + "type": "string" + }, + "shellyCluster": { + "type": "string" + }, + "tenantClusterEndpoint": { + "type": "string" + }, + "userName": { + "type": "string" + }, + "userUid": { + "type": "string" + } } }, - "/v1/spectroclusters/libvirt/validate": { - "post": { - "operationId": "v1SpectroClustersLibvirtValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroLibvirtClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Libvirt Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + "v1UserMe": { + "description": "User information wrt permissions", + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates libvirt cluster create operation", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/maas": { - "post": { - "operationId": "v1SpectroClustersMaasCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroMaasClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "spec": { + "description": "User specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "description": "User status with permissions", + "properties": { + "activationLink": { + "description": "Contains activation link for the user", + "type": "string" + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean" + }, + "isContractAccepted": { + "description": "Specifies if user account has accepted the contract", + "type": "boolean", + "x-omitempty": false + }, + "loginMode": { + "description": "User's login Mode", + "type": "string" + }, + "projectPermissions": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "tenant": { + "type": "object", + "properties": { + "orgName": { + "type": "string" + }, + "tenantUid": { + "type": "string" + } + } + }, + "tenantPermissions": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + } } - ], - "summary": "Creates a MAAS cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/maas/import": { - "post": { - "operationId": "v1SpectroClustersMaasImport", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroMaasClusterImportEntity" + "v1UserMeStatus": { + "description": "User status with permissions", + "properties": { + "activationLink": { + "description": "Contains activation link for the user", + "type": "string" + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean" + }, + "isContractAccepted": { + "description": "Specifies if user account has accepted the contract", + "type": "boolean", + "x-omitempty": false + }, + "loginMode": { + "description": "User's login Mode", + "type": "string" + }, + "projectPermissions": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + }, + "tenant": { + "type": "object", + "properties": { + "orgName": { + "type": "string" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "tenantUid": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "tenantPermissions": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } } - ], - "summary": "Imports a Maas cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/maas/rate": { - "post": { - "operationId": "v1SpectroClustersMaasRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroMaasClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Maas Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" - } - } + "v1UserMeTenant": { + "type": "object", + "properties": { + "orgName": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get maas cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + "tenantUid": { + "type": "string" + } } }, - "/v1/spectroclusters/maas/validate": { - "post": { - "operationId": "v1SpectroClustersMaasValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroMaasClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Maas Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" - } - } + "v1UserMeta": { + "type": "object", + "properties": { + "emailId": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates MAAS cluster create operation", - "tags": [ - "spectroclusters" - ] + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "org": { + "type": "string" + }, + "uid": { + "type": "string" + } } }, - "/v1/spectroclusters/openstack": { - "post": { - "operationId": "v1SpectroClustersOpenStackCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroOpenStackClusterEntity" - } + "v1UserMetaEntity": { + "description": "User meta entity", + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "v1UserPatch": { + "type": "array", + "items": { + "type": "object", + "required": [ + "op", + "path" + ], + "properties": { + "from": { + "description": "A path to the pointer from which reference will be taken", + "type": "string" }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "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" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1UserProfile": { + "description": "User Profile", + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Creates a OpenStack cluster", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/openstack/import": { - "post": { - "operationId": "v1SpectroClustersOpenStackImport", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroOpenStackClusterImportEntity" + "spec": { + "description": "User Profile specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + }, + "status": { + "description": "User Profile status", + "properties": { + "lastPasswordPolicyMail": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "lastPasswordUpdate": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" } } + } + } + }, + "v1UserProfileSpec": { + "description": "User Profile specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Imports an OpenStack cluster", - "tags": [ - "spectroclusters" - ] + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + } } }, - "/v1/spectroclusters/openstack/rate": { - "post": { - "operationId": "v1SpectroClustersOpenStackRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroOpenStackClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Openstack Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" - } - } + "v1UserProfileStatus": { + "description": "User Profile status", + "properties": { + "lastPasswordPolicyMail": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get openstack cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + "lastPasswordUpdate": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } } }, - "/v1/spectroclusters/openstack/validate": { - "post": { - "operationId": "v1SpectroClustersOpenStackValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroOpenStackClusterEntity" + "v1UserProfiles": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "User Profile", + "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": "User Profile specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + } + } + }, + "status": { + "description": "User Profile status", + "properties": { + "lastPasswordPolicyMail": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "lastPasswordUpdate": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "vSphere Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + }, + "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 } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + } + } + }, + "v1UserRoleMap": { + "properties": { + "roles": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Validates OpenStack cluster create operation", - "tags": [ - "spectroclusters" - ] + }, + "userId": { + "type": "string" + } } }, - "/v1/spectroclusters/tke": { - "post": { - "operationId": "v1SpectroClustersTkeCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroTencentClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1UserRoleUIDs": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1UserRolesEntity": { + "type": "object", + "properties": { + "inheritedRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { "type": "string" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } } - ], - "summary": "Creates a Tke cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/tke/rate": { - "post": { - "operationId": "v1SpectroClustersTkeRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroTencentClusterRateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1UserRsaToken": { + "description": "Rsa Auth token response", + "type": "object", + "properties": { + "token": { + "type": "string" + } + } + }, + "v1UserSpec": { + "description": "User specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "Tke Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" - } + } + } + }, + "v1UserSpecEntity": { + "description": "User Entity input", + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "loginMode": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "teams": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Get TKE cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/tke/validate": { - "post": { - "operationId": "v1SpectroClustersTkeValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroTencentClusterEntity" + "v1UserSpecSummary": { + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "projects": { + "description": "Deprecated.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "Tke Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + }, + "projectsCount": { + "type": "integer", + "format": "int32", + "x-omitempty": false + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "teams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } } - ], - "summary": "Validates TKE cluster create operation", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/upgrade/settings": { - "get": { - "operationId": "v1SpectroClustersUpgradeSettingsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1ClusterUpgradeSettingsEntity" - } - } + "v1UserStatus": { + "description": "User status", + "properties": { + "activationLink": { + "description": "provides the link to activate or reset the user password", + "type": "string", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get cluster settings by context", - "tags": [ - "spectroclusters" - ] + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean", + "x-omitempty": false + }, + "isPasswordResetting": { + "description": "Specifies if user in multi org requested password reset", + "type": "boolean", + "x-omitempty": false + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } } }, - "/v1/spectroclusters/validate/name": { - "get": { - "operationId": "v1SpectroClustersValidateName", - "parameters": [ - { - "description": "Cluster name", - "in": "query", - "name": "name", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1UserStatusLoginMode": { + "type": "object", + "properties": { + "loginMode": { + "type": "string", + "enum": [ + "dev", + "devops" + ] + } + } + }, + "v1UserSummary": { + "description": "User 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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates the cluster name", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/validate/packs": { - "post": { - "operationId": "v1SpectroClustersValidatePacks", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterPacksEntity" + "spec": { + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "projects": { + "description": "Deprecated.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "projectsCount": { + "type": "integer", + "format": "int32", + "x-omitempty": false + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "teams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "Cluster packs validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + }, + "status": { + "description": "User status", + "properties": { + "activationLink": { + "description": "provides the link to activate or reset the user password", + "type": "string", + "x-omitempty": false + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean", + "x-omitempty": false + }, + "isPasswordResetting": { + "description": "Specifies if user in multi org requested password reset", + "type": "boolean", + "x-omitempty": false + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" } } + } + } + }, + "v1UserSummarySortFields": { + "type": "string", + "enum": [ + "name", + "creationTimestamp" + ], + "x-nullable": true + }, + "v1UserSummarySortSpec": { + "properties": { + "field": { + "type": "string", + "enum": [ + "name", + "creationTimestamp" + ], + "x-nullable": true }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates spectro cluster packs", - "tags": [ - "spectroclusters" - ] + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } } }, - "/v1/spectroclusters/virtual": { - "post": { - "operationId": "v1SpectroClustersVirtualCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroVirtualClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "v1UserToken": { + "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 + } + } + }, + "v1UserUpdateEntity": { + "description": "User", + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "description": "User Entity input", + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "description": "Deprecated. Use 'v1/users/{uid}/roles' API to assign roles.", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } } - ], - "summary": "Creates a virtual cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/virtual/packs/values": { - "get": { - "operationId": "v1VirtualClustersPacksValues", - "parameters": [ - { - "default": "k3s", - "description": "Kubernetes distribution type", - "enum": [ - "k3s", - "cncf_k8s" - ], - "in": "query", - "name": "kubernetesDistroType", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Successful response", - "schema": { - "$ref": "#/definitions/v1ClusterVirtualPacksValues" - } - } + "v1UserUpdateSpecEntity": { + "description": "User Entity input", + "type": "object", + "properties": { + "emailId": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "description": "Deprecated. Use 'v1/users/{uid}/roles' API to assign roles.", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Get the cluster pack values yaml", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/virtual/validate": { - "post": { - "operationId": "v1SpectroClustersVirtualValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroVirtualClusterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Virtual Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + "v1Users": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "User", + "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": "User specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "status": { + "description": "User status", + "properties": { + "activationLink": { + "description": "provides the link to activate or reset the user password", + "type": "string", + "x-omitempty": false + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean", + "x-omitempty": false + }, + "isPasswordResetting": { + "description": "Specifies if user in multi org requested password reset", + "type": "boolean", + "x-omitempty": false + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Validates virtual cluster create operation", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/virtual/values": { - "get": { - "operationId": "v1SpectroClustersVirtualValues", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "string" + "v1UsersFilterSpec": { + "description": "Users filter spec", + "properties": { + "emailId": { + "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 } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Deprecated. Get the default values yaml", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/vsphere": { - "post": { - "operationId": "v1SpectroClustersVsphereCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroVsphereClusterEntity" + "v1UsersMetadata": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "User meta entity", + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + } + } + }, + "v1UsersSummary": { + "description": "Deprecated, Use v1UsersSummaryList - Returns User summary", + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "User 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": { + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "projects": { + "description": "Deprecated.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "projectsCount": { + "type": "integer", + "format": "int32", + "x-omitempty": false + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "teams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + } + } + }, + "status": { + "description": "User status", + "properties": { + "activationLink": { + "description": "provides the link to activate or reset the user password", + "type": "string", + "x-omitempty": false + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean", + "x-omitempty": false + }, + "isPasswordResetting": { + "description": "Specifies if user in multi org requested password reset", + "type": "boolean", + "x-omitempty": false + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Creates a vSphere cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/vsphere/import": { - "post": { - "operationId": "v1SpectroClustersVsphereImport", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroVsphereClusterImportEntity" + "v1UsersSummaryList": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "User 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": { + "type": "object", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "projects": { + "description": "Deprecated.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "projectsCount": { + "type": "integer", + "format": "int32", + "x-omitempty": false + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "teams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + } + } + }, + "status": { + "description": "User status", + "properties": { + "activationLink": { + "description": "provides the link to activate or reset the user password", + "type": "string", + "x-omitempty": false + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean", + "x-omitempty": false + }, + "isPasswordResetting": { + "description": "Specifies if user in multi org requested password reset", + "type": "boolean", + "x-omitempty": false + }, + "lastSignIn": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + } + } + }, + "v1UsersSummarySpec": { + "description": "Users filter summary spec", + "properties": { + "filter": { + "description": "Users filter spec", + "properties": { + "emailId": { + "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 + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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 + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "sort": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "field": { + "type": "string", + "enum": [ + "name", + "creationTimestamp" + ], + "x-nullable": true + }, + "order": { + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ] + } + } } - ], - "summary": "Imports a vSphere cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/vsphere/rate": { - "post": { - "operationId": "v1SpectroClustersVsphereRate", - "parameters": [ - { - "default": "hourly", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroVsphereClusterRateEntity" + "v1V1SystemAdminEmail": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "insecureVerify": { + "type": "boolean" + }, + "password": { + "type": "string" + } + } + }, + "v1V1SystemAdminPasswordResetEntity": { + "description": "SystemAdmin", + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "newPassword": { + "type": "string" + }, + "oldPassword": { + "type": "string" + } + } + }, + "v1VMAddVolumeEntity": { + "type": "object", + "required": [ + "addVolumeOptions" + ], + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "Vsphere Cluster estimated rate response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" + }, + "dataVolumeTemplate": { + "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" + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get vSphere cluster estimated rate information", - "tags": [ - "spectroclusters" - ] + "persist": { + "description": "If 'true' add the disk to the Virtual Machine & Virtual Machine Instance, else add the disk to the Virtual Machine Instance only", + "type": "boolean" + } } }, - "/v1/spectroclusters/vsphere/validate": { - "post": { - "operationId": "v1SpectroClustersVsphereValidate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroVsphereClusterEntity" + "v1VMCluster": { + "description": "VM Dashboard enabled Spectro cluster", + "type": "object", + "properties": { + "metadata": { + "properties": { + "name": { + "type": "string" + }, + "projectUid": { + "type": "string" + }, + "uid": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "vSphere Cluster validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + }, + "spec": { + "description": "Spectro cluster spec", + "type": "object", + "properties": { + "cloudType": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "description": "Spectro cluster status", + "properties": { + "clusterState": { + "type": "string" + } } - ], - "summary": "Validates vSphere cluster create operation", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}": { - "delete": { - "operationId": "v1SpectroClustersDelete", - "parameters": [ - { - "description": "If set to true the cluster will be force deleted and user has to manually clean up the provisioned cloud resources", - "in": "query", - "name": "forceDelete", - "type": "boolean" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1VMClusters": { + "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" + } + } + } + } } + } + } + }, + "v1VMRemoveVolumeEntity": { + "type": "object", + "required": [ + "removeVolumeOptions" + ], + "properties": { + "persist": { + "description": "If 'true' remove the disk from the Virtual Machine & Virtual Machine Instance, else remove the disk from the Virtual Machine Instance only", + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "get": { - "operationId": "v1SpectroClustersGet", - "parameters": [ - { - "description": "Comma separated tags like system,profile", - "in": "query", - "name": "includeTags", - "type": "string" - }, - { - "default": false, - "description": "Resolve pack values if set to true", - "in": "query", - "name": "resolvePackValues", - "type": "boolean" - }, - { - "description": "Includes pack meta such as schema, presets", - "in": "query", - "name": "includePackMeta", - "type": "string" - }, - { - "description": "Filter cluster profile templates by profileType", - "in": "query", - "name": "profileType", - "type": "string" - }, - { - "default": false, - "description": "Include non spectro labels in the cluster labels if set to true", - "in": "query", - "name": "includeNonSpectroLabels", - "type": "boolean" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SpectroCluster" + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" } } + } + } + }, + "v1Variable": { + "description": "Unique variable field with schema definition", + "type": "object", + "required": [ + "name" + ], + "properties": { + "defaultValue": { + "description": "The default value of the variable", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "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 } + } + }, + "v1VariableFormat": { + "description": "Format type of the variable value", + "type": "string", + "default": "string", + "enum": [ + "string", + "number", + "boolean", + "ipv4", + "ipv4cidr", + "ipv6", + "version" ] }, - "/v1/spectroclusters/{uid}/assets": { - "get": { - "operationId": "v1SpectroClustersUidAssetsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1VariableNames": { + "required": [ + "variables" + ], + "properties": { + "variables": { + "description": "Array of variable names", + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SpectroClusterAssetEntity" + } + } + }, + "v1Variables": { + "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 + } + } + } + } + } + }, + "v1Virtual": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "clusterGroup": { + "description": "Object resource reference", + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "projectUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + }, + "uid": { + "type": "string" + } } - ], - "summary": "Get the cluster asset doc", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1SpectroClustersUidAssets", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterAssetEntity" + }, + "hostCluster": { + "description": "Object resource reference", + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "projectUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + }, + "uid": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } + }, + "lifecycleStatus": { + "properties": { + "msg": { + "description": "error or success msg of lifecycle", + "type": "string" + }, + "status": { + "description": "lifecycle status", + "type": "string", + "enum": [ + "Pausing", + "Paused", + "Resuming", + "Running", + "Error" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Associate the assets for the cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/assets/adminKubeconfig": { - "get": { - "operationId": "v1SpectroClustersUidAdminKubeConfig", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1VirtualCloudClusterConfigEntity": { + "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": "" + } } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download file", - "headers": { - "Content-Disposition": { + } + } + }, + "v1VirtualCloudConfig": { + "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" } }, - "schema": { - "format": "binary", + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cluster's kube config file", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ] - }, - "/v1/spectroclusters/{uid}/assets/frpKubeconfig": { - "delete": { - "operationId": "v1SpectroClustersUidFrpKubeConfigDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the cluster's frp kube config client data", - "tags": [ - "spectroclusters" - ] - }, - "get": { - "operationId": "v1SpectroClustersUidFrpKubeConfigGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download file", - "headers": { - "Content-Disposition": { - "type": "string" + "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": "" + } } }, - "schema": { - "format": "binary", + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the specified cluster's frp kube config file", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } + } + }, + "v1VirtualCloudConfigSpec": { + "description": "VirtualCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec for cluster-api.", + "type": "object", + "required": [ + "clusterConfig", + "hostClusterUid", + "machinePoolConfig" ], - "put": { - "operationId": "v1SpectroClustersUidFrpKubeConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterAssetFrpKubeConfig" + "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": "" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Updates the cluster's frp kube config data", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/assets/kubeconfig": { - "get": { - "operationId": "v1SpectroClustersUidKubeConfig", - "parameters": [ - { - "default": true, - "description": "FRP (reverse-proxy) based kube config will be returned if available", - "in": "query", - "name": "frp", - "type": "boolean" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download file", - "headers": { - "Content-Disposition": { - "type": "string" - } - }, - "schema": { - "format": "binary", + "v1VirtualClusterConfig": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cluster's kube config file", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1SpectroClustersUidKubeConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterAssetKubeConfig" + "helmRelease": { + "type": "object", + "properties": { + "chart": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "" + }, + "repo": { + "type": "string", + "default": "" + }, + "version": { + "type": "string", + "default": "" + } + } + }, + "values": { + "type": "string", + "default": "" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster's manifest data", - "tags": [ - "spectroclusters" - ] + "kubernetesVersion": { + "type": "string", + "default": "" + } } }, - "/v1/spectroclusters/{uid}/assets/kubeconfigclient": { - "delete": { - "operationId": "v1SpectroClustersUidKubeConfigClientDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1VirtualClusterHelmChart": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the cluster's kube config client data", - "tags": [ - "spectroclusters" - ] - }, - "get": { - "operationId": "v1SpectroClustersUidKubeConfigClientGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download file", - "headers": { - "Content-Disposition": { - "type": "string" - } + "repo": { + "type": "string", + "default": "" + }, + "version": { + "type": "string", + "default": "" + } + } + }, + "v1VirtualClusterHelmRelease": { + "type": "object", + "properties": { + "chart": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "" }, - "schema": { - "format": "binary", - "type": "string" + "repo": { + "type": "string", + "default": "" + }, + "version": { + "type": "string", + "default": "" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cluster's kube config client file", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "values": { + "type": "string", + "default": "" } + } + }, + "v1VirtualClusterResize": { + "type": "object", + "required": [ + "instanceType" ], - "put": { - "operationId": "v1SpectroClustersUidKubeConfigClientUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterAssetKubeConfigClient" + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } + } + } + }, + "v1VirtualInstanceType": { + "type": "object", + "properties": { + "maxCPU": { + "description": "Maximum CPU cores", + "type": "integer", + "format": "int32" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster's kube config client data", - "tags": [ - "spectroclusters" - ] + "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" + } } }, - "/v1/spectroclusters/{uid}/assets/manifest": { - "get": { - "operationId": "v1SpectroClustersUidManifestGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1VirtualMachine": { + "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" + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { + }, + "spec": { + "description": "Virtual cloud machine definition spec", + "type": "object", + "properties": { + "hostname": { "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Returns the specified cluster's manifest data", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } + } + }, + "v1VirtualMachinePoolCloudConfigEntity": { + "type": "object", + "required": [ + "instanceType" ], - "put": { - "operationId": "v1SpectroClustersUidManifestUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterAssetManifest" + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] } - ], - "summary": "Updates the specified cluster's manifest data", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/clusterConfig/clusterMetaAttribute": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } + "v1VirtualMachinePoolConfig": { + "type": "object", + "required": [ + "instanceType" ], - "patch": { - "operationId": "v1SpectroClustersUidClusterMetaAttributeUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterMetaAttributeEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "properties": { + "additionalLabels": { + "description": "additionalLabels", + "type": "object", + "additionalProperties": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "azs": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Updates the specified cluster meta attribute", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/clusterConfig/clusterRbac": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1SpectroClustersUidClusterRbacUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterRbacEntity" + }, + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "machinePoolProperties": { + "description": "Machine pool specific properties", + "type": "object", + "properties": { + "archType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] + } } - ], - "summary": "Deprecated. Updates the specified cluster's Cluster Role bindings", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/clusterConfig/controlPlaneHealthCheckTimeout": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + }, + "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" - } - ], - "patch": { - "operationId": "V1ControlPlaneHealthCheckTimeoutUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ControlPlaneHealthCheckTimeoutEntity" + }, + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } } - ], - "summary": "Updates the specified cluster controlPlane health check timeout", - "tags": [ - "spectroclusters" - ] + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } } }, - "/v1/spectroclusters/{uid}/clusterConfig/hostCluster": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1VirtualMachinePoolConfigEntity": { + "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" + } + } + } + } } + } + }, + "v1VirtualMachineSnapshot": { + "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", + "type": "object", + "required": [ + "spec" ], - "patch": { - "operationId": "V1HostClusterConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1HostClusterConfigEntity" + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "spec": { + "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", + "type": "object", + "required": [ + "source" + ], + "properties": { + "deletionPolicy": { + "type": "string" + }, + "failureDeadline": { + "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", + "type": "string" + }, + "source": { + "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" + } + } + } } }, - "security": [ - { - "ApiKey": [] + "status": { + "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "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" + }, + "error": { + "description": "Error is the last error encountered during the snapshot/restore", + "type": "object", + "properties": { + "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" + } + } + }, + "indications": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "phase": { + "type": "string" + }, + "readyToUse": { + "type": "boolean" + }, + "snapshotVolumes": { + "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "type": "object", + "properties": { + "excludedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "includedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + } + } + }, + "sourceUID": { + "type": "string" + }, + "virtualMachineSnapshotContentName": { + "type": "string" + } }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified cluster host config", - "tags": [ - "spectroclusters" - ] + "x-nullable": true + } } }, - "/v1/spectroclusters/{uid}/clusterConfig/lifecycleConfig": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } + "v1VirtualMachineSnapshotList": { + "description": "VirtualMachineSnapshotList is a list of VirtualMachineSnapshot resources", + "type": "object", + "required": [ + "metadata", + "items" ], - "patch": { - "operationId": "v1SpectroClustersUidLifecycleConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1LifecycleConfigEntity" + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "items": { + "type": "array", + "items": { + "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", + "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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "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": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", + "type": "object", + "required": [ + "source" + ], + "properties": { + "deletionPolicy": { + "type": "string" + }, + "failureDeadline": { + "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", + "type": "string" + }, + "source": { + "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" + } + } + } + } + }, + "status": { + "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "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" + }, + "error": { + "description": "Error is the last error encountered during the snapshot/restore", + "type": "object", + "properties": { + "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" + } + } + }, + "indications": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "phase": { + "type": "string" + }, + "readyToUse": { + "type": "boolean" + }, + "snapshotVolumes": { + "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "type": "object", + "properties": { + "excludedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "includedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + } + } + }, + "sourceUID": { + "type": "string" + }, + "virtualMachineSnapshotContentName": { + "type": "string" + } + }, + "x-nullable": true + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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": { + "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", + "type": "object", + "properties": { + "continue": { + "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", + "type": "string" + }, + "remainingItemCount": { + "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", + "type": "integer", + "format": "int64" + }, + "resourceVersion": { + "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", + "type": "string" + }, + "selfLink": { + "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "type": "string" + } } - ], - "summary": "Updates the specified cluster Life cycle configuration", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/clusterConfig/osPatch": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } + "v1VirtualMachineSnapshotSpec": { + "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", + "type": "object", + "required": [ + "source" ], - "patch": { - "operationId": "v1SpectroClustersUidOsPatchUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1OsPatchEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "properties": { + "deletionPolicy": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "failureDeadline": { + "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", + "type": "string" + }, + "source": { + "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" + } } - ], - "summary": "Updates the specified cluster OS patch configuration", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/clusterrbac": { - "get": { - "operationId": "v1SpectroClustersClusterRbac", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1VirtualMachineSnapshotStatus": { + "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1ClusterRbacs" + }, + "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" + }, + "error": { + "description": "Error is the last error encountered during the snapshot/restore", + "type": "object", + "properties": { + "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" } } }, - "security": [ - { - "ApiKey": [] + "indications": { + "type": "array", + "items": { + "type": "string" }, - { - "Authorization": [] - } - ], - "summary": "Deprecated. Get the cluster RBAC information associated with a cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "x-kubernetes-list-type": "set" + }, + "phase": { "type": "string" - } - ] - }, - "/v1/spectroclusters/{uid}/config/namespaces": { - "get": { - "operationId": "v1SpectroClustersUidConfigNamespacesGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterNamespaceResources" + }, + "readyToUse": { + "type": "boolean" + }, + "snapshotVolumes": { + "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "type": "object", + "properties": { + "excludedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + }, + "includedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves namespaces for the specified cluster", - "tags": [ - "spectroclusters" - ] + "sourceUID": { + "type": "string" + }, + "virtualMachineSnapshotContentName": { + "type": "string" + } }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "x-nullable": true + }, + "v1VirtualMachineSpec": { + "description": "Virtual cloud machine definition spec", + "type": "object", + "properties": { + "hostname": { "type": "string" } + } + }, + "v1VirtualMachines": { + "description": "List of virtual machines", + "type": "object", + "required": [ + "items" ], - "put": { - "operationId": "v1SpectroClustersUidConfigNamespacesUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterNamespaceResourcesUpdateEntity" + "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" + } + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Updates namespaces for the specified cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/config/namespaces/{namespaceUid}": { - "get": { - "operationId": "v1SpectroClustersUidConfigNamespacesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1VirtualNetwork": { + "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" } - ], - "responses": { - "200": { - "description": "Cluster's namespace response", - "schema": { - "$ref": "#/definitions/v1ClusterNamespaceResource" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves the specified namespace of the cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "id": { + "description": "The ID of the resource group", "type": "string" }, - { - "description": "Cluster namespace uid", - "in": "path", - "name": "namespaceUid", - "required": true, + "location": { + "description": "Location of the virtual network", "type": "string" - } - ], - "put": { - "operationId": "v1SpectroClustersUidConfigNamespacesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterNamespaceResourceInputEntity" + }, + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "type": { + "description": "Type of the virtual network", + "type": "string" + } + } + }, + "v1VmAccessCredential": { + "description": "AccessCredential represents a credential source that can be used to authorize remote access to the vm guest Only one of its members may be specified.", + "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" + } + } + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } } - ], - "summary": "Updates the specified namespace of the cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/config/rbacs": { - "get": { - "operationId": "v1SpectroClustersUidConfigRbacsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterRbacs" + "v1VmAccessCredentialSecretSource": { + "type": "object", + "required": [ + "secretName" + ], + "properties": { + "secretName": { + "description": "SecretName represents the name of the secret in the VMI's namespace", + "type": "string" + } + } + }, + "v1VmAddVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" } } }, - "security": [ - { - "ApiKey": [] + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" }, - { - "Authorization": [] - } - ], - "summary": "Retrieves RBAC information for the specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", "type": "string" - } - ], - "put": { - "operationId": "v1SpectroClustersUidConfigRbacsUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterRbacResourcesUpdateEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } } - ], - "summary": "Updates RBAC information for the specified cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/config/rbacs/{rbacUid}": { - "get": { - "operationId": "v1SpectroClustersUidConfigRbacsUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Cluster's RBAC response", - "schema": { - "$ref": "#/definitions/v1ClusterRbac" + "v1VmAffinity": { + "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" + } + } + } + } + } + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves the specified RBAC of the cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "RBAC resource uid", - "in": "path", - "name": "rbacUid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1SpectroClustersUidConfigRbacsUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterRbacInputEntity" + "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" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Updates the specified RBAC of the cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/download": { - "get": { - "operationId": "v1SpectroClustersUidDownload", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download cluster archive file", - "headers": { - "Content-Disposition": { - "type": "string" - } + "v1VmBIOS": { + "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" + } + } + }, + "v1VmBlockSize": { + "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", + "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" }, - "schema": { - "format": "binary", - "type": "string" + "physical": { + "type": "integer", + "format": "int32" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Download the specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/spectroclusters/{uid}/edge-native/edgeHosts": { - "get": { - "operationId": "v1EdgeNativeClustersHostsList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "List of edge host device", - "schema": { - "$ref": "#/definitions/v1EdgeHostDevices" + "v1VmBootloader": { + "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Retrieves a list of edge host of edge-native cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/spectroclusters/{uid}/edge/edgeHosts": { - "get": { - "operationId": "v1EdgeClustersHostsList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "List of edge host device", - "schema": { - "$ref": "#/definitions/v1EdgeHostDevices" - } - } + "v1VmCDRomTarget": { + "type": "object", + "properties": { + "bus": { + "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of edge host of libvirt cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "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" } - ] + } }, - "/v1/spectroclusters/{uid}/features/backup": { - "delete": { - "operationId": "v1ClusterFeatureBackupScheduleReset", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1VmChassis": { + "description": "Chassis specifies the chassis info passed to the domain.", + "type": "object", + "properties": { + "asset": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Reset cluster backup schedule settings", - "tags": [ - "spectroclusters" - ] - }, - "get": { - "operationId": "v1ClusterFeatureBackupGet", - "parameters": [ - { - "in": "query", - "name": "backupRequestUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterBackup" - } - } + "manufacturer": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the cluster backup result", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "serial": { + "type": "string" + }, + "sku": { + "type": "string" + }, + "version": { "type": "string" } - ], - "post": { - "operationId": "v1ClusterFeatureBackupCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterBackupConfig" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + } + }, + "v1VmClientPassthroughDevices": { + "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", + "type": "object" + }, + "v1VmClock": { + "description": "Represents the clock and timers of a vmi.", + "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" + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create cluster backup settings", - "tags": [ - "spectroclusters" - ] - }, - "put": { - "operationId": "v1ClusterFeatureBackupUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterBackupConfig" + "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" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Update cluster backup settings", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/features/backup/onDemand": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1VmClockOffsetUTC": { + "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" } - ], - "post": { - "operationId": "v1ClusterFeatureBackupOnDemandCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterBackupConfig" + } + }, + "v1VmCloudInitConfigDriveSource": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - }, - "schema": { - "$ref": "#/definitions/v1Uid" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create on demand cluster backup", - "tags": [ - "spectroclusters" - ] + "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" + } } }, - "/v1/spectroclusters/{uid}/features/backup/{backupName}/request/{requestUid}": { - "delete": { - "operationId": "v1ClusterFeatureBackupDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1VmCloudInitNoCloudSource": { + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Delete cluster backup", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + }, + "userData": { + "description": "UserData contains NoCloud inline cloud-init userdata.", "type": "string" }, - { - "in": "path", - "name": "backupName", - "required": true, + "userDataBase64": { + "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", + "type": "string" + } + } + }, + "v1VmCondition": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { "type": "string" }, - { - "in": "path", - "name": "requestUid", - "required": true, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { "type": "string" } - ] + } }, - "/v1/spectroclusters/{uid}/features/complianceScan": { - "get": { - "operationId": "v1ClusterFeatureComplianceScanGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterComplianceScan" - } - } + "v1VmConfigDriveSshPublicKeyAccessCredentialPropagation": { + "type": "object" + }, + "v1VmConfigMapVolumeSource": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the compliance scan of cluster, if driverType is provided then specific status of driverType will be returned", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "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" + } + } + }, + "v1VmContainerDiskSource": { + "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" } + } + }, + "v1VmCoreDataVolumeSource": { + "type": "object", + "required": [ + "name" ], - "post": { - "operationId": "v1ClusterFeatureComplianceScanCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterComplianceScheduleConfig" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "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" + } + } + }, + "v1VmCoreResourceRequirements": { + "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" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" + } + } + } + }, + "v1VmCpu": { + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create cluster compliance scan", - "tags": [ - "spectroclusters" - ] - }, - "put": { - "operationId": "v1ClusterFeatureComplianceScanUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterComplianceScheduleConfig" + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update cluster compliance scan settings", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers": { - "get": { - "operationId": "v1ClusterFeatureComplianceScanLogsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterComplianceScanLogs" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the compliance scan log by cluster uid and driver type", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "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" } - ] + } }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/kubeBench": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1VmCpuFeature": { + "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" } + } + }, + "v1VmCustomBlockSize": { + "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", + "type": "object", + "required": [ + "logical", + "physical" ], - "put": { - "operationId": "v1ClusterFeatureScanKubeBenchLogUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1KubeBenchEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "properties": { + "logical": { + "type": "integer", + "format": "int32" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the KubeBench compliance scan log by uid", - "tags": [ - "spectroclusters" - ] + "physical": { + "type": "integer", + "format": "int32" + } } }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/kubeHunter": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1VmDHCPOptions": { + "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" - } - ], - "put": { - "operationId": "v1ClusterFeatureScanKubeHunterLogUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1KubeHunterEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "ntpServers": { + "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Update the KubeHunter compliance scan log by uid", - "tags": [ - "spectroclusters" - ] + }, + "tftpServerName": { + "description": "If specified will pass option 66 to interface's DHCP server", + "type": "string" + } } }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/sonobuoy": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1VmDHCPPrivateOptions": { + "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" } + } + }, + "v1VmDataVolumeBlankImage": { + "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", + "type": "object" + }, + "v1VmDataVolumeCheckpoint": { + "description": "DataVolumeCheckpoint defines a stage in a warm migration.", + "type": "object", + "required": [ + "previous", + "current" ], - "put": { - "operationId": "v1ClusterFeatureScanSonobuoyLogUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SonobuoyEntity" + "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" + } + } + }, + "v1VmDataVolumeSource": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Update the Sonobuoy compliance scan log by uid", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/syft": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1ClusterFeatureScanSyftLogUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SyftEntity" + }, + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Update the Syft compliance scan log by uid", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}": { - "delete": { - "operationId": "v1ClusterFeatureComplianceScanLogDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1VmDataVolumeSourceHttp": { + "description": "DataVolumeSourceHTTP can be either an http or https endpoint, with an optional basic auth user name and password, and an optional configmap containing additional CAs", + "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" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Delete the compliance scan log by uid", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + }, + "secretRef": { + "description": "SecretRef A Secret reference, the secret should contain accessKeyId (user name) base64 encoded, and secretKey (password) also base64 encoded", "type": "string" }, - { - "in": "path", - "name": "logUid", - "required": true, + "url": { + "description": "URL is the URL of the http(s) endpoint", "type": "string" } - ] + } }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/kubeBench": { - "get": { - "operationId": "v1ClusterFeatureKubeBenchLogGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterScanLogKubeBench" - } - } + "v1VmDataVolumeSourceImageIO": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the KubeBench compliance scan log by uid", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "diskId": { + "description": "DiskID provides id of a disk to be imported", "type": "string" }, - { - "in": "path", - "name": "logUid", - "required": true, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the ovirt-engine", "type": "string" }, - { - "in": "query", - "name": "reportId", + "url": { + "description": "URL is the URL of the ovirt-engine", "type": "string" } - ] + } }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/kubeHunter": { - "get": { - "operationId": "v1ClusterFeatureKubeHunterLogGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterScanLogKubeHunter" - } - } + "v1VmDataVolumeSourcePVC": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the KubeHunter compliance scan log by uid", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "namespace": { + "description": "The namespace of the source PVC", + "type": "string" + } + } + }, + "v1VmDataVolumeSourceRef": { + "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" }, - { - "in": "path", - "name": "logUid", - "required": true, + "name": { + "description": "The name of the source reference", "type": "string" }, - { - "in": "query", - "name": "reportId", + "namespace": { + "description": "The namespace of the source reference, defaults to the DataVolume namespace", "type": "string" } - ] + } }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/sonobuoy": { - "get": { - "operationId": "v1ClusterFeatureSonobuoyLogGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterScanLogSonobuoy" - } - } + "v1VmDataVolumeSourceRegistry": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the Sonobuoy compliance scan log by uid", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "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" + } + } + }, + "v1VmDataVolumeSourceS3": { + "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" }, - { - "in": "path", - "name": "logUid", - "required": true, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the S3 source", "type": "string" }, - { - "in": "query", - "name": "reportId", + "url": { + "description": "URL is the url of the S3 source", "type": "string" } - ] + } }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/syft": { - "get": { - "operationId": "v1ClusterFeatureSyftLogGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterScanLogSyft" - } - } + "v1VmDataVolumeSourceUpload": { + "description": "DataVolumeSourceUpload provides the parameters to create a Data Volume by uploading the source", + "type": "object" + }, + "v1VmDataVolumeSourceVDDK": { + "description": "DataVolumeSourceVDDK provides the parameters to create a Data Volume from a Vmware source", + "type": "object", + "properties": { + "backingFile": { + "description": "BackingFile is the path to the virtual hard disk to migrate from vCenter/ESXi", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the Syft compliance scan log by uid", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "initImageURL": { + "description": "InitImageURL is an optional URL to an image containing an extracted VDDK library, overrides v2v-vmware config map", "type": "string" }, - { - "in": "path", - "name": "logUid", - "required": true, + "secretRef": { + "description": "SecretRef provides a reference to a secret containing the username and password needed to access the vCenter or ESXi host", "type": "string" - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/syft/sbom": { - "get": { - "operationId": "v1SyftScanLogImageSBOMGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download file", - "headers": { - "Content-Disposition": { - "type": "string" - } - }, - "schema": { - "format": "binary", - "type": "string" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the image sbom of syft scan log of cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "thumbprint": { + "description": "Thumbprint is the certificate thumbprint of the vCenter or ESXi host", "type": "string" }, - { - "in": "path", - "name": "logUid", - "required": true, + "url": { + "description": "URL is the URL of the vCenter or ESXi host with the VM to migrate", "type": "string" }, - { - "in": "query", - "name": "image", + "uuid": { + "description": "UUID is the UUID of the virtual machine that the backing file is attached to in vCenter/ESXi", "type": "string" } - ] + } }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/{driver}/download": { - "get": { - "operationId": "v1ClusterFeatureDriverLogDownload", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "OK", - "headers": { - "Content-Disposition": { + "v1VmDataVolumeSpec": { + "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" }, - "Content-Type": { + "previous": { + "description": "Previous is the identifier of the snapshot from the previous checkpoint.", "type": "string" } - }, - "schema": { - "type": "file" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Downloads the driver cluster logs", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "contentType": { + "description": "DataVolumeContentType options: \"kubevirt\", \"archive\"", "type": "string" }, - { - "in": "path", - "name": "logUid", - "required": true, + "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" }, - { - "enum": [ - "kubeBench", - "kubeHunter", - "sonobuoy", - "syft" + "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" ], - "in": "path", - "name": "driver", - "required": true, - "type": "string" + "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" + } + } }, - { - "default": "pdf", - "in": "query", - "name": "fileFormat", - "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" + } + } } - ] + } }, - "/v1/spectroclusters/{uid}/features/complianceScan/onDemand": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } + "v1VmDataVolumeTemplateSpec": { + "type": "object", + "required": [ + "spec" ], - "post": { - "operationId": "v1ClusterFeatureComplianceScanOnDemandCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterComplianceOnDemandConfig" + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "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" + } + } + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create on demand cluster compliance scan", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/features/helmCharts": { - "get": { - "operationId": "v1ClusterFeatureHelmChartsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterHelmCharts" - } - } + "v1VmDevices": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the installed helm charts of a specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ] - }, - "/v1/spectroclusters/{uid}/features/logFetcher": { - "get": { - "operationId": "v1ClusterFeatureLogFetcherGet", - "parameters": [ - { - "in": "query", - "name": "requestId", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterLogFetcher" - } - } + "autoattachInputDevice": { + "description": "Whether to attach an Input Device. Defaults to false.", + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the log fetcher for cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid for which log is requested", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1ClusterFeatureLogFetcherCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterLogFetcherRequest" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create the log fetcher for cluster", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/features/manifests": { - "get": { - "operationId": "v1ClusterFeatureManifestsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterManifests" + "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" + } } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the installed manifests of a specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ] - }, - "/v1/spectroclusters/{uid}/features/restore": { - "get": { - "operationId": "v1ClusterFeatureRestoreGet", - "parameters": [ - { - "in": "query", - "name": "restoreRequestUid", - "type": "string" }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterRestore" - } - } + "x-kubernetes-list-type": "atomic" }, - "security": [ - { - "ApiKey": [] + "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" + } + } + } + } + } + } + } + } }, - { - "Authorization": [] - } - ], - "summary": "Returns the cluster restore of cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ] - }, - "/v1/spectroclusters/{uid}/features/restore/onDemand": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1ClusterFeatureRestoreOnDemandCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterRestoreConfig" + "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" + } } }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create on demand cluster restore", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/import/manifest": { - "get": { - "operationId": "v1SpectroClustersUidImportManifest", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "download file", - "headers": { - "Content-Disposition": { + "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" } - }, - "schema": { - "format": "binary", - "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cluster's import manifest file", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ] - }, - "/v1/spectroclusters/{uid}/import/upgrade": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1SpectroClustersUidImportUpgradePatch", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Upgrade the specified imported read only cluster with full permissions", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/k8certificates": { - "get": { - "operationId": "v1SpectroClustersK8Certificate", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1MachineCertificates" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Get K8Certificate for spectro cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/spectroclusters/{uid}/k8certificates/renew": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } + "v1VmDisk": { + "type": "object", + "required": [ + "name" ], - "patch": { - "operationId": "v1SpectroClustersCertificatesRenew", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + "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" + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Sets the cluster master nodes Kubernetes certificates for renewal", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/kubectl/redirect": { - "get": { - "operationId": "V1SpectroClustersUidKubeCtlRedirect", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1SpectroClusterKubeCtlRedirect" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the specified cluster's kube config file", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + }, + "io": { + "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" - } - ] - }, - "/v1/spectroclusters/{uid}/libvirt/edgeHosts": { - "get": { - "operationId": "v1LibvirtClustersHostsList", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "List of edge host devices", - "schema": { - "$ref": "#/definitions/v1EdgeHostDevices" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of edge hosts of the libvirt cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "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" } - ] + } }, - "/v1/spectroclusters/{uid}/location": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "v1VmDiskTarget": { + "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" } + } + }, + "v1VmDomainSpec": { + "type": "object", + "required": [ + "devices" ], - "put": { - "operationId": "v1SpectroClustersUidLocationPut", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterLocationInputEntity" + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "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" + } } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Associate the assets for the cluster", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/metadata": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1SpectroClustersUidMetadataUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ObjectMetaInputEntitySchema" + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Update the specified spectro cluster metadata", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/namespaces": { - "get": { - "operationId": "v1ClusterNamespacesGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + }, + "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" + } + } + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterNamespaces" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns available namespaces for the cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "ioThreadsPolicy": { + "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", "type": "string" }, - { - "default": false, - "in": "query", - "name": "skipEmptyNamespaces", - "type": "boolean" - } - ] - }, - "/v1/spectroclusters/{uid}/oidc": { - "get": { - "operationId": "V1SpectroClustersUidOIDC", - "parameters": [ - { - "description": "spc uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "launchSecurity": { + "type": "object", + "properties": { + "sev": { + "type": "object" + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SpectroClusterOidcSpec" + }, + "machine": { + "type": "object", + "properties": { + "type": { + "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Returns k8s spectrocluster oidc", - "tags": [ - "spectroclusters" - ] + }, + "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" + } + } + } } }, - "/v1/spectroclusters/{uid}/oidc/dashboard/url": { - "get": { - "operationId": "V1SpectroClustersUidOIDCDashboardUrl", - "parameters": [ - { - "description": "spc uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SectroClusterK8sDashboardUrl" + "v1VmDownwardApiVolumeFile": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns k8s dashboard url", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/pack/manifests/{manifestUid}": { - "get": { - "operationId": "v1SpectroClustersUidPackManifestsUidGet", - "parameters": [ - { - "description": "cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "manifest uid which is part of the pack ref", - "in": "path", - "name": "manifestUid", - "required": true, - "type": "string" - }, - { - "default": false, - "description": "resolve pack manifest values if set to true", - "in": "query", - "name": "resolveManifestValues", - "type": "boolean" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Pack manifest content", - "schema": { - "$ref": "#/definitions/v1Manifest" + "v1VmDownwardApiVolumeSource": { + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified cluster's manifest", - "tags": [ - "spectroclusters" - ] + "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" + } } }, - "/v1/spectroclusters/{uid}/pack/properties": { - "get": { - "operationId": "v1SpectroClustersUidPackProperties", - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Pack layer", - "in": "query", - "name": "layer", - "required": true, - "type": "string" - }, - { - "description": "Pack values yaml field path", - "in": "query", - "name": "fieldPath", - "required": true, - "type": "string" - }, - { - "description": "Pack name", - "in": "query", - "name": "name", - "type": "string" - }, - { - "default": true, - "description": "Is the macros need to be resolved", - "in": "query", - "name": "resolveMacros", - "type": "boolean" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Cluster's pack properties response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterPackProperties" + "v1VmDownwardMetricsVolumeSource": { + "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", + "type": "object" + }, + "v1VmDuration": { + "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", + "type": "string" + }, + "v1VmEFI": { + "description": "If set, EFI will be used instead of BIOS.", + "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" + } + } + }, + "v1VmEmptyDiskSource": { + "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" + } + } + }, + "v1VmEphemeralVolumeSource": { + "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" } } + } + } + }, + "v1VmError": { + "description": "Error is the last error encountered during the snapshot/restore", + "type": "object", + "properties": { + "message": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + }, + "v1VmExecAction": { + "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" } - ], - "summary": "Get specified cluster pack properties", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/packRefs": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1VmFeatureApiC": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" }, - { - "in": "query", - "name": "notify", - "type": "string" + "endOfInterrupt": { + "description": "EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.", + "type": "boolean" } - ], - "patch": { - "operationId": "v1SpectroClustersPacksRefUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterNotificationUpdateEntity" + } + }, + "v1VmFeatureHyperv": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates the cluster's pack references", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/packs/resolvedValues": { - "get": { - "operationId": "v1SpectroClustersUidPacksResolvedValuesGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + }, + "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" + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfilesResolvedValues" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the specified cluster's packs resolved values", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfilesParamReferenceEntity" + "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" + } } - } - ] - }, - "/v1/spectroclusters/{uid}/packs/status": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1SpectroClustersUidPacksStatusPatch", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterPacksStatusEntity" + }, + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Patch update specified cluster's packs status", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/packs/{packName}/config": { - "get": { - "description": "Deprecated", - "operationId": "v1SpectroClustersUidPacksConfigGet", - "parameters": [ - { - "description": "cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "pack name", - "in": "path", - "name": "packName", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + }, + "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" + } } - ], - "responses": { - "200": { - "description": "An array of cluster pack values", - "schema": { - "$ref": "#/definitions/v1SpectroClusterPackConfigList" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the specified cluster's pack configuration", - "tags": [ - "spectroclusters" - ] + }, + "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" + } + } + } } }, - "/v1/spectroclusters/{uid}/profile": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1VmFeatureKVm": { + "type": "object", + "properties": { + "hidden": { + "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", + "type": "boolean" } - ], - "patch": { - "operationId": "v1SpectroClustersPatchProfile", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1VmFeatureSpinlocks": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Replaces the specified cluster profile for the cluster", - "tags": [ - "spectroclusters" - ] + "spinlocks": { + "description": "Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.", + "type": "integer", + "format": "int64" + } } }, - "/v1/spectroclusters/{uid}/profileUpdates": { - "get": { - "operationId": "v1SpectroClustersGetProfileUpdates", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfileUpdates" - } - } + "v1VmFeatureState": { + "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" + } + } + }, + "v1VmFeatureVendorId": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the profile updates of a specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "vendorid": { + "description": "VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.", "type": "string" } - ] + } }, - "/v1/spectroclusters/{uid}/profiles": { - "delete": { - "operationId": "v1SpectroClustersDeleteProfiles", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfilesDeleteEntity" + "v1VmFeatures": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Remove cluster profiles from the specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "get": { - "operationId": "v1SpectroClustersGetProfiles", - "parameters": [ - { - "description": "includes pack meta such as schema, presets", - "in": "query", - "name": "includePackMeta", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfileList" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the associated profiles of a specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1SpectroClustersPatchProfiles", - "parameters": [ - { - "default": false, - "description": "Resolve pending cluster notification if set to true", - "in": "query", - "name": "resolveNotification", - "type": "boolean" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfiles" + "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" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "kvm": { + "type": "object", + "properties": { + "hidden": { + "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", + "type": "boolean" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Patch cluster profiles to the specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "put": { - "operationId": "v1SpectroClustersUpdateProfiles", - "parameters": [ - { - "default": false, - "description": "Resolve pending cluster notification if set to true", - "in": "query", - "name": "resolveNotification", - "type": "boolean" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfiles" + }, + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + } + } + }, + "v1VmFieldsV1": { + "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:\\', where \\ is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", + "type": "object", + "properties": { + "Raw": { + "type": "array", + "items": { + "type": "string", + "format": "byte" } + } + } + }, + "v1VmFilesystem": { + "type": "object", + "required": [ + "name", + "virtiofs" + ], + "properties": { + "name": { + "description": "Name is the device name", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Associate cluster profiles to the specified cluster", - "tags": [ - "spectroclusters" - ] + "virtiofs": { + "type": "object" + } } }, - "/v1/spectroclusters/{uid}/profiles/packs/manifests": { - "get": { - "operationId": "v1SpectroClustersGetProfilesPacksManifests", - "parameters": [ - { - "description": "Includes pack meta such as schema, presets", - "in": "query", - "name": "includePackMeta", - "type": "string" - }, - { - "default": false, - "description": "Resolve pack macro variables if set to true", - "in": "query", - "name": "resolveMacros", - "type": "boolean" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1VmFilesystemVirtiofs": { + "type": "object" + }, + "v1VmFirmware": { + "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" + } + } + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SpectroClusterProfilesPacksManifests" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the associated profile's pack manifests of a specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "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" } - ] + } }, - "/v1/spectroclusters/{uid}/profiles/{profileUid}/packs/{packName}/config": { - "get": { - "operationId": "v1SpectroClustersUidProfilesUidPacksConfigGet", - "parameters": [ - { - "description": "cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "profile uid", - "in": "path", - "name": "profileUid", - "required": true, - "type": "string" - }, - { - "description": "pack name", - "in": "path", - "name": "packName", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of cluster pack values", - "schema": { - "$ref": "#/definitions/v1SpectroClusterPackConfigList" - } - } + "v1VmGPU": { + "type": "object", + "required": [ + "name", + "deviceName" + ], + "properties": { + "deviceName": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } + } } - ], - "summary": "Returns the specified cluster's profile pack configuration", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/profiles/{profileUid}/packs/{packName}/manifests": { - "get": { - "operationId": "v1SpectroClustersProfilesUidPackManifestsGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1PackManifests" - } - } + "v1VmGuestAgentPing": { + "description": "GuestAgentPing configures the guest-agent based ping probe", + "type": "object" + }, + "v1VmHPETTimer": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the associated profiles pack manifests of the specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "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" + } + } + }, + "v1VmHostDevice": { + "type": "object", + "required": [ + "name", + "deviceName" + ], + "properties": { + "deviceName": { + "description": "DeviceName is the resource name of the host device exposed by a device plugin", "type": "string" }, - { - "description": "Cluster profile uid", - "in": "path", - "name": "profileUid", - "required": true, + "name": { "type": "string" }, - { - "description": "Name of the pack", - "in": "path", - "name": "packName", - "required": true, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", "type": "string" } + } + }, + "v1VmHostDisk": { + "description": "Represents a disk created on the cluster level", + "type": "object", + "required": [ + "path", + "type" ], - "put": { - "operationId": "v1SpectroClustersProfilesUidPackManifestsUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ManifestRefInputEntities" + "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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "v1VmHotplugVolumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates cluster profiles pack manifests to the specified cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/rate": { - "get": { - "operationId": "v1SpectroClustersUidRate", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRate" + "v1VmHttpGetAction": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the estimated rate of the specified cluster", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "path": { + "description": "Path to access on the HTTP server.", "type": "string" }, - { - "default": "hourly", - "description": "Period type [hourly, monthly, yearly]", - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "in": "query", - "name": "periodType", + "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" } - ] + } }, - "/v1/spectroclusters/{uid}/repave/approve": { - "patch": { - "operationId": "v1SpectroClustersUidRepaveApproveUpdate", - "parameters": [ - { - "description": "cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "v1VmHttpHeader": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the spectrocluster repave approve update", - "tags": [ - "spectroclusters" - ] + "value": { + "description": "The header field value", + "type": "string" + } } }, - "/v1/spectroclusters/{uid}/repave/status": { - "get": { - "operationId": "v1SpectroClustersUidRepaveGet", - "parameters": [ - { - "description": "cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Returns cluster repave status", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRepave" - } - } + "v1VmHugepages": { + "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" + } + } + }, + "v1VmHypervTimer": { + "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" + } + } + }, + "v1VmI6300ESBWatchdog": { + "description": "i6300esb watchdog device.", + "type": "object", + "properties": { + "action": { + "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", + "type": "string" + } + } + }, + "v1VmInput": { + "type": "object", + "required": [ + "type", + "name" + ], + "properties": { + "bus": { + "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the spectrocluster repave", - "tags": [ - "spectroclusters" - ] + "name": { + "description": "Name is the device name", + "type": "string" + }, + "type": { + "description": "Type indicated the type of input device. Supported values: tablet.", + "type": "string" + } } }, - "/v1/spectroclusters/{uid}/reset": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "v1VmInstancetypeMatcher": { + "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" } + } + }, + "v1VmInterface": { + "type": "object", + "required": [ + "name" ], - "put": { - "operationId": "V1SpectroClustersUidReset", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "reset the cluster s by deleting machine pools and condtions", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/status/condition": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "macAddress": { + "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", "type": "string" - } - ], - "put": { - "operationId": "v1SpectroClustersUpdateStatusCondition", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterCondition" + }, + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified cluster status condition", - "tags": [ - "spectroclusters" - ] + "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" + } } }, - "/v1/spectroclusters/{uid}/status/conditions": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1VmInterfaceBridge": { + "description": "InterfaceBridge connects to a given network via a linux bridge.", + "type": "object" + }, + "v1VmInterfaceMacvtap": { + "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "type": "object" + }, + "v1VmInterfaceMasquerade": { + "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", + "type": "object" + }, + "v1VmInterfacePasst": { + "description": "InterfacePasst connects to a given network.", + "type": "object" + }, + "v1VmInterfaceSRIOV": { + "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", + "type": "object" + }, + "v1VmInterfaceSlirp": { + "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", + "type": "object" + }, + "v1VmKVmTimer": { + "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" } - ], - "patch": { - "operationId": "v1SpectroClustersUpdateStatusConditions", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "items": { - "$ref": "#/definitions/v1ClusterCondition" - }, - "type": "array" + } + }, + "v1VmKernelBoot": { + "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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified cluster status conditions", - "tags": [ - "spectroclusters" - ] + "kernelArgs": { + "description": "Arguments to be passed to the kernel at boot time", + "type": "string" + } } }, - "/v1/spectroclusters/{uid}/status/endpoints": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1VmKernelBootContainer": { + "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" } - ], - "put": { - "operationId": "v1SpectroClustersUpdateStatusEndpoints", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "items": { - "$ref": "#/definitions/v1ApiEndpoint" + } + }, + "v1VmLabelSelector": { + "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", + "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" }, - "type": "array" + "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" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Updates the specified cluster's service endpoints information", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/status/imported": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } + "v1VmLabelSelectorRequirement": { + "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" ], - "patch": { - "operationId": "v1SpectroClustersUpdateStatusImported", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Updates the specified cluster status as imported", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/status/services": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1VmLaunchSecurity": { + "type": "object", + "properties": { + "sev": { + "type": "object" } - ], - "put": { - "operationId": "v1SpectroClustersUpdateStatusServices", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "items": { - "$ref": "#/definitions/v1LoadBalancerService" - }, - "type": "array" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified cluster's services information", - "tags": [ - "spectroclusters" - ] } }, - "/v1/spectroclusters/{uid}/status/spcApply": { - "get": { - "operationId": "v1SpectroClustersUidStatusSpcApplyGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1SpcApply" - } - } + "v1VmListMeta": { + "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", + "type": "object", + "properties": { + "continue": { + "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the SPC apply information for the agent", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "remainingItemCount": { + "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", + "type": "integer", + "format": "int64" + }, + "resourceVersion": { + "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", "type": "string" - } - ], - "post": { - "operationId": "v1SpectroClustersUidStatusSpcApply", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "202": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Set the CanBeApplied to true on the spcApply status. CanBeApplied indicates the agent to orchestrate the spc changes", - "tags": [ - "spectroclusters" - ] + "selfLink": { + "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "type": "string" + } } }, - "/v1/spectroclusters/{uid}/status/spcApply/patchTime": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1VmLocalObjectReference": { + "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" } - ], - "patch": { - "operationId": "v1SpectroClustersUidStatusSpcPatchTime", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpcPatchTimeEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the agent patch time for the SPC changes", - "tags": [ - "spectroclusters" - ] } }, - "/v1/spectroclusters/{uid}/status/upgrades": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1VmLunTarget": { + "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" + } + } + }, + "v1VmMachine": { + "type": "object", + "properties": { + "type": { + "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", "type": "string" } - ], - "put": { - "operationId": "v1SpectroClustersUidUpgradesPut", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterUidUpgrades" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the cluster's upgrade status", - "tags": [ - "spectroclusters" - ] } }, - "/v1/spectroclusters/{uid}/validate/packs": { - "post": { - "operationId": "v1SpectroClustersUidValidatePacks", - "parameters": [ - { - "description": "cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterPacksEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Cluster packs validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + "v1VmManagedFieldsEntry": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates cluster packs", - "tags": [ - "spectroclusters" - ] + "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" + } } }, - "/v1/spectroclusters/{uid}/validate/repave": { - "post": { - "operationId": "v1SpectroClustersUidValidateRepave", - "parameters": [ - { - "description": "cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterPacksEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Cluster repave validation response", - "schema": { - "$ref": "#/definitions/v1SpectroClusterRepaveValidationResponse" + "v1VmMemory": { + "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" } } + } + } + }, + "v1VmMemoryDumpVolumeSource": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validates if cluster gets repaved for the specified packs", - "tags": [ - "spectroclusters" - ] + "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" + } } }, - "/v1/spectroclusters/{uid}/vms": { - "get": { - "operationId": "v1SpectroClustersVMList", - "parameters": [ - { - "collectionFormat": "csv", - "description": "Namespace names, comma separated value (ex: dev,test). If namespace is empty it returns the specific resource under all namespace", - "in": "query", - "items": { - "type": "string" - }, - "name": "namespace", - "type": "array" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ClusterVirtualMachineList" - } - } + "v1VmMultusNetwork": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the list of virtual machines", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "networkName": { + "description": "References to a NetworkAttachmentDefinition CRD object. Format: , /. If namespace is not specified, VMI namespace is assumed.", "type": "string" } + } + }, + "v1VmNUMA": { + "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" + } + } + }, + "v1VmNUMAGuestMappingPassthrough": { + "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", + "type": "object" + }, + "v1VmNetwork": { + "description": "Network represents a network type and a resource that should be connected to the vm.", + "type": "object", + "required": [ + "name" ], - "post": { - "operationId": "v1SpectroClustersVMCreate", - "parameters": [ - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterVirtualMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1ClusterVirtualMachine" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create virtual machine", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/vms/snapshot": { - "get": { - "operationId": "v1ClusterVMSnapshotsList", - "parameters": [ - { - "collectionFormat": "csv", - "description": "vmName is comma separated value (ex: name1,name2).", - "in": "query", - "items": { + "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" }, - "name": "vmName", - "type": "array" - }, - { - "collectionFormat": "csv", - "description": "Namespace names, comma separated value (ex: dev,test). If namespace is empty it returns the specific resource under all namespace", - "in": "query", - "items": { + "vmNetworkCIDR": { + "description": "CIDR for vm network. Default 10.0.2.0/24 if not specified.", "type": "string" - }, - "name": "namespace", - "type": "array" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1VirtualMachineSnapshotList" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the list of snapshots of given namespaces", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ] + } }, - "/v1/spectroclusters/{uid}/vms/{vmName}": { - "delete": { - "operationId": "v1SpectroClustersVMDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the virtual machine", - "tags": [ - "spectroclusters" - ] - }, - "get": { - "operationId": "v1SpectroClustersVMGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1ClusterVirtualMachine" + "v1VmNodeAffinity": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get virtual machine", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, - "type": "string" - }, - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1SpectroClustersVMUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterVirtualMachine" + "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" + } + } + } + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1ClusterVirtualMachine" + } + } + }, + "v1VmNodeSelector": { + "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", + "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" + } + } + } + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified virtual machine of the cluster", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/vms/{vmName}/addVolume": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "v1VmNodeSelectorRequirement": { + "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" }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, + "operator": { + "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", "type": "string" }, - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1SpectroClustersVMAddVolume", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VMAddVolumeEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "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" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1VmNodeSelectorTerm": { + "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", + "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" + } } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Add volume to the virtual machine instance", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/vms/{vmName}/clone": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, + "v1VmObjectFieldSelector": { + "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" }, - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, + "fieldPath": { + "description": "Path of the field to select in the specified API version.", "type": "string" } - ], - "post": { - "operationId": "v1SpectroClustersVMClone", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1SpectroClusterVMCloneEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "v1VmObjectMeta": { + "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" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1ClusterVirtualMachine" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Clone virtual machine", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/migrate": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "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" }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, + "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" }, - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, + "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" - } - ], - "put": { - "operationId": "v1SpectroClustersVMMigrate", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "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" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Migrate the virtual machine", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/pause": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "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" }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, + "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" }, - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1SpectroClustersVMPause", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "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" } } - } - }, - "security": [ - { - "ApiKey": [] }, - { - "Authorization": [] - } - ], - "summary": "Pause the virtual machine instance", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/removeVolume": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "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" }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, + "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" }, - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, + "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" } - ], - "put": { - "operationId": "v1SpectroClustersVMRemoveVolume", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VMRemoveVolumeEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Remove volume from the virtual machine instance", - "tags": [ - "spectroclusters" - ] } }, - "/v1/spectroclusters/{uid}/vms/{vmName}/restart": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "v1VmOwnerReference": { + "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", + "type": "object", + "required": [ + "apiVersion", + "kind", + "name", + "uid" + ], + "properties": { + "apiVersion": { + "description": "API version of the referent.", "type": "string" }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, + "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" }, - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, + "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" } - ], - "put": { - "operationId": "v1SpectroClustersVMRestart", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + } + }, + "v1VmPITTimer": { + "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" + } + } + }, + "v1VmPersistentVolumeClaimSpec": { + "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" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Restart the virtual machine", - "tags": [ - "spectroclusters" - ] - } - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/resume": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + }, + "storageClassName": { + "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", "type": "string" }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, + "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" }, - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, + "volumeName": { + "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", "type": "string" } + } + }, + "v1VmPersistentVolumeClaimVolumeSource": { + "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "type": "object", + "required": [ + "claimName" ], - "put": { - "operationId": "v1SpectroClustersVMResume", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + "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" + } + } + }, + "v1VmPodAffinity": { + "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" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "Resume the virtual machine instance", - "tags": [ - "spectroclusters" - ] + } } }, - "/v1/spectroclusters/{uid}/vms/{vmName}/snapshot": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, - "type": "string" - }, - { - "description": "Namespace name of virtual machine", - "in": "query", - "name": "namespace", - "required": true, - "type": "string" - } + "v1VmPodAffinityTerm": { + "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", + "type": "object", + "required": [ + "topologyKey" ], - "post": { - "operationId": "v1VMSnapshotCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VirtualMachineSnapshot" + "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" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VirtualMachineSnapshot" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Create snapshot of virtual machine", - "tags": [ - "spectroclusters" - ] + }, + "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" + } } }, - "/v1/spectroclusters/{uid}/vms/{vmName}/snapshot/{snapshotName}": { - "delete": { - "operationId": "v1VMSnapshotDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1VmPodDnsConfig": { + "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" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete the snapshot of virtual machine", - "tags": [ - "spectroclusters" - ] - }, - "get": { - "operationId": "v1VMSnapshotGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VirtualMachineSnapshot" + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Get virtual machine snapshot", - "tags": [ - "spectroclusters" - ] - }, - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + } + } + }, + "v1VmPodDnsConfigOption": { + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "type": "object", + "properties": { + "name": { + "description": "Required.", "type": "string" }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, + "value": { "type": "string" - }, - { - "description": "Snapshot name", - "in": "path", - "name": "snapshotName", - "required": true, + } + } + }, + "v1VmPodNetwork": { + "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" }, - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, + "vmNetworkCIDR": { + "description": "CIDR for vm network. Default 10.0.2.0/24 if not specified.", "type": "string" } + } + }, + "v1VmPort": { + "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", + "type": "object", + "required": [ + "port" ], - "put": { - "operationId": "v1VMSnapshotUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VirtualMachineSnapshot" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VirtualMachineSnapshot" - } - } + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified snapshot of a virtual machine", - "tags": [ - "spectroclusters" - ] + "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" + } } }, - "/v1/spectroclusters/{uid}/vms/{vmName}/start": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "v1VmPreferenceMatcher": { + "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" }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, + "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" }, - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, + "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" } + } + }, + "v1VmPreferredSchedulingTerm": { + "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", + "type": "object", + "required": [ + "weight", + "preference" ], - "put": { - "operationId": "v1SpectroClustersVMStart", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "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" + } + } + } + } + } } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "weight": { + "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", + "type": "integer", + "format": "int32" + } + } + }, + "v1VmProbe": { + "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" } } } }, - "security": [ - { - "ApiKey": [] + "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" + } + } + }, + "v1VmQemuGuestAgentSshPublicKeyAccessCredentialPropagation": { + "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" }, - { - "Authorization": [] - } - ], - "summary": "Start the virtual machine", - "tags": [ - "spectroclusters" - ] + "x-kubernetes-list-type": "set" + } } }, - "/v1/spectroclusters/{uid}/vms/{vmName}/stop": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1VmQemuGuestAgentUserPasswordAccessCredentialPropagation": { + "type": "object" + }, + "v1VmQuantity": { + "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the \"\" case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= \"e\" | \"E\" \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", + "type": "string" + }, + "v1VmRTCTimer": { + "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" }, - { - "description": "Virtual Machine name", - "in": "path", - "name": "vmName", - "required": true, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".", "type": "string" }, - { - "description": "Namespace name", - "in": "query", - "name": "namespace", - "required": true, + "track": { + "description": "Track the guest or the wall clock.", "type": "string" } - ], - "put": { - "operationId": "v1SpectroClustersVMStop", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Stop the virtual machine", - "tags": [ - "spectroclusters" - ] } }, - "/v1/spectroclusters/{uid}/workloads/sync": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1VmRealtime": { + "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" } + } + }, + "v1VmRemoveVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" ], - "post": { - "description": "Sync specified cluster workload", - "operationId": "v1SpectroClustersUidWorkloadsSync", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { "type": "string" - } - ], - "responses": { - "202": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - } - } - }, - "security": [ - { - "ApiKey": [] }, - { - "Authorization": [] - } - ], - "summary": "Sync specified cluster workload", - "tags": [ - "spectroclusters" - ] + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } } }, - "/v1/spectroclusters/{uid}/workloads/{workloadKind}/sync": { - "parameters": [ - { - "description": "Cluster uid", - "in": "path", - "name": "uid", - "required": true, + "v1VmResourceFieldSelector": { + "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" }, - { - "description": "Workload kind", - "enum": [ - "namespace", - "pod", - "deployment", - "statefulset", - "daemonset", - "job", - "cronjob", - "rolebinding", - "clusterrolebinding" - ], - "in": "path", - "name": "workloadKind", - "required": true, + "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" - } - ], - "post": { - "operationId": "v1SpectroClustersUidWorkloadsKindSync", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "202": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Sync specified cluster workload", - "tags": [ - "spectroclusters" - ] + "resource": { + "description": "Required: resource to select", + "type": "string" + } } }, - "/v1/system/users/email/verify/resend": { - "patch": { - "description": "Re-send the email to the user to be able to verify the email", - "operationId": "V1SystemUsersEmailVerifyReSend", - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "v1VmResourceRequirements": { + "type": "object", + "properties": { + "limits": { + "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", + "type": "object" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Re-send the email to the user to be able to verify the email", - "tags": [ - "system" - ] + "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" + } } }, - "/v1/system/users/email/{emailToken}/verify": { - "get": { - "description": "Verifies the system user email with the help of email token", - "operationId": "V1SystemUsersEmailVerify", - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "v1VmRng": { + "description": "Rng represents the random device passed from host", + "type": "object" + }, + "v1VmSEV": { + "type": "object" + }, + "v1VmSecretVolumeSource": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Verifies the system user email using the email token", - "tags": [ - "system" - ] - }, - "parameters": [ - { - "description": "Describes the expirable email token for the system user to be used for verification of email", - "in": "path", - "name": "emailToken", - "required": true, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", "type": "string" } - ] + } }, - "/v1/system/users/me": { - "get": { - "description": "Verifies the system user email with the help of email token", - "operationId": "V1SystemUsersMe", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1SystemUserMe" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Verifies the system user email using the email token", - "tags": [ - "system" - ] + "v1VmServiceAccountVolumeSource": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } } }, - "/v1/system/users/password/reset": { - "post": { - "description": "Creates request to reset system password via email. Password reset email will be sent to the user. Sends 204 No Content.", - "operationId": "v1SystemUsersPasswordResetRequest", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "properties": { - "emailId": { - "description": "Describes email if for which password reset email has to be sent", - "type": "string" - } - }, - "required": [ - "emailId" - ], - "type": "object" - } - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - } - } + "v1VmSnapshotVolumesLists": { + "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "type": "object", + "properties": { + "excludedVolumes": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" }, - "security": [ - { - "ApiKey": [] + "includedVolumes": { + "type": "array", + "items": { + "type": "string" }, - { - "Authorization": [] - } - ], - "summary": "Creates request to reset system password via email", - "tags": [ - "system" - ] + "x-kubernetes-list-type": "set" + } } }, - "/v1/system/users/password/{passwordToken}/reset": { - "parameters": [ - { - "description": "Describes the expirable password token for the system user to be used for authentication of user", - "in": "path", - "name": "passwordToken", - "required": true, + "v1VmSoundDevice": { + "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" } + } + }, + "v1VmSshPublicKeyAccessCredential": { + "description": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", + "type": "object", + "required": [ + "source", + "propagationMethod" ], - "patch": { - "description": "Updates the new system user password with the help of password token", - "operationId": "v1SystemUsersPasswordReset", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "properties": { - "password": { - "description": "Describes the new password for the system user", - "format": "password", - "type": "string" - } - }, + "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": [ - "password" + "users" ], - "type": "object" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Resets the system user password using the password token", - "tags": [ - "system" - ] - } - }, - "/v1/teams": { - "get": { - "operationId": "v1TeamsList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "An array of teams", - "schema": { - "$ref": "#/definitions/v1Teams" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of teams", - "tags": [ - "teams" - ] - }, - "post": { - "operationId": "v1TeamsCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Team" + "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" + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "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" + } } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } + } + } + }, + "v1VmSshPublicKeyAccessCredentialPropagationMethod": { + "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", + "type": "object", + "properties": { + "configDrive": { + "type": "object" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Creates a team with the specified users and roles", - "tags": [ - "teams" - ] + } } }, - "/v1/teams/summary": { - "get": { - "description": "Deprecated, Use Post api - Returns a list of team summaries", - "operationId": "v1TeamsSummary", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", + "v1VmSshPublicKeyAccessCredentialSource": { + "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" + } + } + } + } + }, + "v1VmStorageSpec": { + "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" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1TeamsSummary" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of team summary", - "tags": [ - "teams" - ] - }, - "post": { - "operationId": "v1TeamsSummaryGet", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TeamsSummarySpec" + "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" + } } } - ], - "responses": { - "200": { - "description": "An array of teams summary items", - "schema": { - "$ref": "#/definitions/v1TeamsSummaryList" + }, + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of teams summary with provided filter spec", - "tags": [ - "teams" - ] + "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" + } } }, - "/v1/teams/{uid}": { - "delete": { - "operationId": "v1TeamsUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified team", - "tags": [ - "teams" - ] - }, - "get": { - "operationId": "v1TeamsUidGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Team" + "v1VmSyNICTimer": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the sepcified team", - "tags": [ - "teams" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "enabled": { + "type": "boolean" } - ], - "patch": { - "operationId": "v1TeamsUidPatch", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1TeamPatch" + } + }, + "v1VmSysprepSource": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Patches the specified team", - "tags": [ - "teams" - ] - }, - "put": { - "operationId": "v1TeamsUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Team" + "secret": { + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + } + }, + "v1VmTPMDevice": { + "type": "object" + }, + "v1VmTcpSocketAction": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the sepcified team", - "tags": [ - "teams" - ] + "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" + ] + } } }, - "/v1/teams/{uid}/projects": { - "get": { - "operationId": "v1TeamsProjectRoles", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ProjectRolesEntity" + "v1VmTimer": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the specified team's project and roles data", - "tags": [ - "teams" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1TeamsProjectRolesPut", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1ProjectRolesPatch" + }, + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates the projects and roles for the specified team", - "tags": [ - "teams" - ] + } } }, - "/v1/teams/{uid}/resourceRoles": { - "get": { - "description": "Returns resource roles for team", - "operationId": "v1TeamsUidResourceRoles", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ResourceRoles" - } - } + "v1VmToleration": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified individual and resource roles for a team", - "tags": [ - "teams" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "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" } + } + }, + "v1VmTopologySpreadConstraint": { + "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", + "type": "object", + "required": [ + "maxSkew", + "topologyKey", + "whenUnsatisfiable" ], - "post": { - "description": "Resource roles added to specific team", - "operationId": "v1TeamsUidResourceRolesCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1ResourceRolesUpdateEntity" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + "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" + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Add resource roles for team", - "tags": [ - "teams" - ] + "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" + } } }, - "/v1/teams/{uid}/resourceRoles/{resourceRoleUid}": { - "delete": { - "operationId": "v1TeamsUidResourceRolesUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1VmTypedLocalObjectReference": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deleted the resource roles from team", - "tags": [ - "teams" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "kind": { + "description": "Kind is the type of resource being referenced", "type": "string" }, - { - "in": "path", - "name": "resourceRoleUid", - "required": true, + "name": { + "description": "Name is the name of resource being referenced", "type": "string" } + } + }, + "v1VmUserPasswordAccessCredential": { + "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", + "type": "object", + "required": [ + "source", + "propagationMethod" ], - "patch": { - "description": "Specific resource roles fo team is updated", - "operationId": "v1TeamsResourceRolesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1ResourceRolesUpdateEntity" + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Updates the resource roles for team", - "tags": [ - "teams" - ] + } } }, - "/v1/teams/{uid}/roles": { - "get": { - "operationId": "V1TeamsUidTenantRolesGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1TeamTenantRolesEntity" + "v1VmUserPasswordAccessCredentialPropagationMethod": { + "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" + } + } + }, + "v1VmUserPasswordAccessCredentialSource": { + "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" } } + } + } + }, + "v1VmVGPUDisplayOptions": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the specified team's tenant roles", - "tags": [ - "teams" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ], - "put": { - "operationId": "V1TeamsUidTenantRolesUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1TeamTenantRolesUpdate" + } + }, + "v1VmVGPUOptions": { + "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" + } + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the tenant roles of the specified team", - "tags": [ - "teams" - ] + } } }, - "/v1/tenants/{tenantUid}/address": { - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "v1VmVirtualMachineCondition": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { "type": "string" } + } + }, + "v1VmVirtualMachineInstanceSpec": { + "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", + "type": "object", + "required": [ + "domain" ], - "patch": { - "operationId": "v1PatchTenantAddress", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantAddressPatch" + "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" + } + } + } + } + } + } + } } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] }, - { - "Authorization": [] - } - ], - "summary": "Update tenant address", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/assets/certs": { - "get": { - "operationId": "V1TenantUIdAssetsCertsList", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1TenantAssetCerts" + "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" + } + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } } - ], - "summary": "lists the certificates for the tenant", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + }, + "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" - } - ], - "post": { - "operationId": "V1TenantUidAssetsCertsCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantAssetCert" + }, + "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" + } + } } } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "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" + ] + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "create the tenant certificate", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/assets/certs/{certificateUid}": { - "delete": { - "operationId": "V1TenantUidAssetsCertsUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "deletes the tenant certificate", - "tags": [ - "tenants" - ] - }, - "get": { - "operationId": "V1TenantUidAssetsCertsUidGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1TenantAssetCert" + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Returns the ca certificate for the tenant", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" }, - { - "in": "path", - "name": "certificateUid", - "required": true, + "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" - } - ], - "put": { - "operationId": "V1TenantUidAssetsCertsUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantAssetCert" + }, + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "updates the tenant certificate", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/assets/dataSinks": { - "delete": { - "operationId": "V1TenantUidAssetsDataSinksDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "deletes the tenant data sink config", - "tags": [ - "tenants" - ] - }, - "get": { - "operationId": "V1TenantUidAssetsDataSinksGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1DataSinkConfig" - } - } + "startStrategy": { + "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns data sink config of tenant", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "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" - } - ], - "post": { - "operationId": "V1TenantUidAssetsDataSinksCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1DataSinkConfig" - } - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "create data sink config", - "tags": [ - "tenants" - ] - }, - "put": { - "operationId": "V1TenantUidAssetsDataSinksUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1DataSinkConfig" + "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" + } } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] }, - { - "Authorization": [] - } - ], - "summary": "updates the tenant data sink config", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/authTokenSettings": { - "get": { - "operationId": "v1TenantUidAuthTokenSettingsGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AuthTokenSettings" - } - } + "x-kubernetes-list-map-keys": [ + "topologyKey", + "whenUnsatisfiable" + ], + "x-kubernetes-list-type": "map", + "x-kubernetes-patch-merge-key": "topologyKey", + "x-kubernetes-patch-strategy": "merge" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get tenant auth token settings", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1TenantUidAuthTokenSettingsUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AuthTokenSettings" + "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } } } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1VmVirtualMachineInstanceTemplateSpec": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update tenant auth token settings", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/contract/accept": { - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1TenantsUidContractAccept", - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + } + }, + "memoryDump": { + "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" + } + } + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "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" + } + } + }, + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + } + }, + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + } + }, + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } + } + } + } + } } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Tenant to accept the contract agreement", - "tags": [ - "tenants" - ] + } } }, - "/v1/tenants/{tenantUid}/creditAccount/aws": { - "delete": { - "operationId": "v1TenantsCreditAccountDelete", - "parameters": [ - { - "default": false, - "in": "query", - "name": "forceDelete", - "type": "boolean" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1VmVirtualMachineMemoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "type": "object", + "required": [ + "claimName", + "phase" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the aws credit account for tenants", - "tags": [ - "tenants" - ] - }, - "get": { - "operationId": "v1TenantsCreditAccountGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1AwsCreditAccountEntity" - } - } + "endTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the credit accounts for the tenants with free tier access", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "fileName": { + "description": "FileName represents the name of the output file", "type": "string" - } - ] - }, - "/v1/tenants/{tenantUid}/domains": { - "get": { - "operationId": "V1TenantUidDomainsGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TenantDomains" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "retrieves the domains for tenant", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "message": { + "description": "Message is a detailed message about failure of the memory dump", "type": "string" - } - ], - "post": { - "operationId": "V1TenantUidDomainsUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantDomains" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "creates or updates domains for tenant", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/emailId": { - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "phase": { + "description": "Phase represents the memory dump phase", "type": "string" - } - ], - "patch": { - "operationId": "v1PatchTenantEmailId", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantEmailPatch" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update tenant emailId", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/freemium": { - "get": { - "operationId": "v1TenantFreemiumGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TenantFreemium" - } - } + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get tenant level freemium configuration", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" + "startTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" } - ], - "put": { - "operationId": "v1TenantFreemiumUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantFreemium" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update tenant freemium configuration", - "tags": [ - "tenants" - ] } }, - "/v1/tenants/{tenantUid}/freemiumUsage": { - "get": { - "operationId": "v1TenantFreemiumUsageGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1TenantFreemiumUsage" - } - } + "v1VmVirtualMachineStartFailure": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer", + "format": "int32" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get tenant freemium usage", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "lastFailedVMIUID": { "type": "string" + }, + "retryAfterTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" } - ] + } }, - "/v1/tenants/{tenantUid}/invoices/{invoiceUid}": { - "get": { - "operationId": "v1InvoicesUidGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1Invoice" - } - } + "v1VmVirtualMachineStateChangeRequest": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "data": { + "description": "Provides additional data in order to perform the Action", + "type": "object", + "additionalProperties": { + "type": "string" } - ], - "summary": "Returns a specified invoice", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "description": "Specify the tenant uid", - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" }, - { - "description": "Specify the invoice uid", - "in": "path", - "name": "invoiceUid", - "required": true, + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", "type": "string" } - ] + } }, - "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/invoice/pdf": { - "get": { - "operationId": "V1InvoiceUidReportInvoicePdf", - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "OK", - "headers": { - "Content-Disposition": { + "v1VmVirtualMachineVolumeRequest": { + "type": "object", + "properties": { + "addVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "type": "object", + "required": [ + "name", + "disk", + "volumeSource" + ], + "properties": { + "disk": { + "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" + } + } + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { "type": "string" }, - "Content-Type": { - "type": "string" - } + "x-kubernetes-list-type": "atomic" }, - "schema": { - "type": "file" + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "type": "object", + "properties": { + "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" + } + } + }, + "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" + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "removeVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "type": "object", + "required": [ + "name" + ], + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } } - ], - "summary": "Downloads the specified invoice report", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "description": "Specify the tenant uid", - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" - }, - { - "description": "Specify the invoice uid", - "in": "path", - "name": "invoiceUid", - "required": true, - "type": "string" } - ] + } }, - "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/pdf": { - "get": { - "operationId": "V1InvoiceUidReportPdf", - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "OK", - "headers": { - "Content-Disposition": { - "type": "string" - }, - "Content-Type": { - "type": "string" + "v1VmVolume": { + "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" + } } }, - "schema": { - "type": "file" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Downloads the specified monthly invoice report", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "description": "Specify the tenant uid", - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" }, - { - "description": "Specify the invoice uid", - "in": "path", - "name": "invoiceUid", - "required": true, - "type": "string" - } - ] - }, - "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/usage/pdf": { - "get": { - "operationId": "V1InvoiceUidReportUsagePdf", - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "OK", - "headers": { - "Content-Disposition": { - "type": "string" - }, - "Content-Type": { - "type": "string" - } + "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" }, - "schema": { - "type": "file" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Downloads the specified tenant usage", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "description": "Specify the tenant uid", - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" }, - { - "description": "Specify the invoice uid", - "in": "path", - "name": "invoiceUid", - "required": true, - "type": "string" - } - ] - }, - "/v1/tenants/{tenantUid}/loginBanner": { - "get": { - "operationId": "v1TenantUidLoginBannerGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1LoginBannerSettings" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get tenant login banner settings", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1TenantUidLoginBannerUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1LoginBannerSettings" + "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" } } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "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" + } } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update tenant login banner settings", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/macros": { - "delete": { - "operationId": "v1TenantsUidMacrosDeleteByMacroName", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" + "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 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" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete the macros for the specified tenant by given macro name", - "tags": [ - "tenants" - ] - }, - "get": { - "operationId": "v1TenantsUidMacrosList", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Macros" + "memoryDump": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "List the macros of the specified tenant", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" - } - ], - "patch": { - "operationId": "v1TenantsUidMacrosUpdateByMacroName", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" + }, + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the macros for the specified tenant by given macro name", - "tags": [ - "tenants" - ] - }, - "post": { - "operationId": "v1TenantsUidMacrosCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" + "secret": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "type": "object", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create or add new macros for the specified tenant", - "tags": [ - "tenants" - ] - }, - "put": { - "operationId": "v1TenantsUidMacrosUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" + "serviceAccount": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "type": "object", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "sysprep": { + "description": "Represents a Sysprep volume source.", + "type": "object", + "properties": { + "configMap": { + "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" + } + } + }, + "secret": { + "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" + } + } + } } - ], - "summary": "Update the macros of the specified tenant", - "tags": [ - "tenants" - ] + } } }, - "/v1/tenants/{tenantUid}/oidc/config": { - "get": { - "operationId": "V1TenantUidOidcConfigGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1TenantOidcClientSpec" - } - } + "v1VmVolumeSnapshotStatus": { + "type": "object", + "required": [ + "name", + "enabled" + ], + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the oidc Spec for tenant", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", "type": "string" } + } + }, + "v1VmWatchdog": { + "description": "Named watchdog device.", + "type": "object", + "required": [ + "name" ], - "post": { - "operationId": "V1TenantUidOidcConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantOidcClientSpec" + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Associates the oidc Spec for the tenant", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/password/policy": { - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "name": { + "description": "Name of the watchdog.", "type": "string" } + } + }, + "v1VmWeightedPodAffinityTerm": { + "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" ], - "post": { - "operationId": "V1TenantUidPasswordPolicyUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantPasswordPolicyEntity" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "creates or updates a password policy for tenant", - "tags": [ - "tenants" - ] + }, + "weight": { + "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", + "type": "integer", + "format": "int32" + } } }, - "/v1/tenants/{tenantUid}/preferences/clusterGroup": { - "get": { - "operationId": "V1TenantPrefClusterGroupGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TenantEnableClusterGroup" - } - } + "v1VsphereAccount": { + "description": "VSphere account information", + "type": "object", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get is cluster group enabled for a specific tenant", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "kind": { + "description": "Deprecated. Cloud type of the account.", "type": "string" - } - ], - "put": { - "operationId": "V1TenantPrefClusterGroupUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantEnableClusterGroup" + }, + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "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" + }, + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "description": "Status of the account", + "type": "object", + "properties": { + "state": { + "description": "Cloud account status", + "type": "string" + } } - ], - "summary": "Enable or Disable cluster group for a specific tenant", - "tags": [ - "tenants" - ] + } } }, - "/v1/tenants/{tenantUid}/preferences/clusterSettings": { - "get": { - "operationId": "v1TenantClusterSettingsGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TenantClusterSettings" + "v1VsphereAccounts": { + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Get tenant cluster settings", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" } - ] + } }, - "/v1/tenants/{tenantUid}/preferences/clusterSettings/nodesAutoRemediationSetting": { - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "v1VsphereCloudAccount": { + "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" } - ], - "put": { - "operationId": "v1TenantClustersNodesAutoRemediationSettingUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1NodesAutoRemediationSettings" - } - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1VsphereCloudClusterConfigEntity": { + "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" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update tenant clusters nodes auto remediation setting", - "tags": [ - "tenants" - ] + } } }, - "/v1/tenants/{tenantUid}/preferences/developerCredit": { - "get": { - "operationId": "V1TenantDeveloperCreditGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1DeveloperCredit" - } - } + "v1VsphereCloudConfig": { + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get developer credit enabled for a specific tenant", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "kind": { + "description": "Cloud type of the cloud config", "type": "string" - } - ], - "put": { - "operationId": "V1TenantDeveloperCreditUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1DeveloperCredit" + }, + "metadata": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "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" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "update developer credit for a specific tenant", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/preferences/fips": { - "get": { - "operationId": "v1TenantFipsSettingsGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1FipsSettings" + "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 + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Get tenant fips settings", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" } + } + }, + "v1VsphereCloudConfigSpec": { + "description": "VsphereCloudConfigSpec defines the desired state of VsphereCloudConfig", + "type": "object", + "required": [ + "clusterConfig", + "machinePoolConfig" ], - "put": { - "operationId": "v1TenantFipsSettingsUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1FipsSettings" + "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" } } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update tenant fips setting", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/rateConfig": { - "get": { - "operationId": "v1RateConfigGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1RateConfig" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get all rate config for public and private cloud", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1RateConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1RateConfig" + "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 + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "updates the rate config for public and private cloud", - "tags": [ - "tenants" - ] + } } }, - "/v1/tenants/{tenantUid}/resourceLimits": { - "get": { - "operationId": "v1TenantResourceLimitsGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1TenantResourceLimits" + "v1VsphereCloudConfigStatus": { + "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" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get tenant level resource limits configuration", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + "isAddonLayer": { + "description": "addon layers present in spc", + "type": "boolean" + }, + "lastOVACreated": { "type": "string" - } - ], - "patch": { - "operationId": "v1TenantResourceLimitsUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantResourceLimitsEntity" + }, + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "roleDigest": { + "description": "this map will be for ansible roles present in eack pack", + "type": "object", + "additionalProperties": { + "type": "string" } - ], - "summary": "Update tenant resource limits configuration", - "tags": [ - "tenants" - ] + }, + "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" + } } }, - "/v1/tenants/{tenantUid}/saml/config": { - "get": { - "operationId": "V1TenantUidSamlConfigSpecGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1TenantSamlSpec" + "v1VsphereCloudDatacenter": { + "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" + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "folders": { + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Returns the specified service provider metadata and Saml Spec for tenant", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, + }, + "name": { "type": "string" } + } + }, + "v1VsphereClusterConfig": { + "type": "object", + "required": [ + "placement" ], - "post": { - "operationId": "V1TenantUidSamlConfigUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantSamlRequestSpec" + "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" + ] } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Associates the specified federation metadata for the tenant", - "tags": [ - "tenants" - ] - } - }, - "/v1/tenants/{tenantUid}/sso/auth/providers": { - "get": { - "operationId": "V1TenantUidSsoAuthProvidersGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1TenantSsoAuthProvidersEntity" + }, + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "sshKeys": { + "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", + "type": "array", + "items": { + "type": "string" } - ], - "summary": "get sso logins for the tenants", - "tags": [ - "tenants" - ] - }, - "parameters": [ - { - "in": "path", - "name": "tenantUid", - "required": true, - "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" } + } + }, + "v1VsphereClusterConfigEntity": { + "type": "object", + "required": [ + "placement" ], - "post": { - "operationId": "V1TenantUidSsoAuthProvidersUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1TenantSsoAuthProvidersEntity" + "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" + ] } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "enable sso logins for the tenants", - "tags": [ - "tenants" - ] - } - }, - "/v1/users": { - "get": { - "description": "Lists users the given user context", - "operationId": "v1UsersList", - "parameters": [ - { - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "in": "query", - "name": "fields", - "type": "string" - }, - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - }, - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "sshKeys": { + "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Users" - } + }, + "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" + } + } + }, + "v1VsphereComputeCluster": { + "description": "Vsphere compute cluster", + "type": "object", + "properties": { + "datastores": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "name": { + "type": "string" + }, + "networks": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Lists users", - "tags": [ - "users" - ] - }, - "post": { - "description": "A user is created for the given user context", - "operationId": "v1UsersCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + }, + "resourcePools": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1VsphereComputeClusterResources": { + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "name": { + "type": "string" + }, + "networks": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "resourcePools": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create User", - "tags": [ - "users" - ] + "datacenter": { + "description": "Name of the datacenter", + "type": "string" + } } }, - "/v1/users/assets/locations": { - "get": { - "operationId": "v1UsersAssetsLocationGet", - "parameters": [ - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", + "v1VsphereDatacenter": { + "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" } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocations" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Returns the specified users location", - "tags": [ - "users" - ] + } } }, - "/v1/users/assets/locations/azure": { - "post": { - "operationId": "v1UsersAssetsLocationAzureCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationAzure" + "v1VsphereDatacenters": { + "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" + } + } } } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1VsphereDnsMapping": { + "description": "VSphere DNS Mapping", + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "description": "VSphere DNS Mapping Spec", + "type": "object", + "required": [ + "privateGatewayUid", + "datacenter", + "network", + "dnsName" + ], + "properties": { + "datacenter": { + "description": "VSphere datacenter name", + "type": "string" + }, + "dnsName": { + "description": "VSphere DNS name", + "type": "string" + }, + "network": { + "description": "VSphere network name", + "type": "string" + }, + "networkUrl": { + "description": "VSphere network URL", + "type": "string", + "readOnly": true + }, + "privateGatewayUid": { + "description": "VSphere private gateway uid", + "type": "string" + } } - ], - "summary": "Create a Azure location", - "tags": [ - "users" - ] + } } }, - "/v1/users/assets/locations/azure/{uid}": { - "get": { - "operationId": "v1UsersAssetsLocationAzureGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationAzure" + "v1VsphereDnsMappingSpec": { + "description": "VSphere DNS Mapping Spec", + "type": "object", + "required": [ + "privateGatewayUid", + "datacenter", + "network", + "dnsName" + ], + "properties": { + "datacenter": { + "description": "VSphere datacenter name", + "type": "string" + }, + "dnsName": { + "description": "VSphere DNS name", + "type": "string" + }, + "network": { + "description": "VSphere network name", + "type": "string" + }, + "networkUrl": { + "description": "VSphere network URL", + "type": "string", + "readOnly": true + }, + "privateGatewayUid": { + "description": "VSphere private gateway uid", + "type": "string" + } + } + }, + "v1VsphereDnsMappings": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "description": "List of vSphere DNS mapping", + "type": "array", + "uniqueItems": true, + "items": { + "description": "VSphere DNS Mapping", + "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": "VSphere DNS Mapping Spec", + "type": "object", + "required": [ + "privateGatewayUid", + "datacenter", + "network", + "dnsName" + ], + "properties": { + "datacenter": { + "description": "VSphere datacenter name", + "type": "string" + }, + "dnsName": { + "description": "VSphere DNS name", + "type": "string" + }, + "network": { + "description": "VSphere network name", + "type": "string" + }, + "networkUrl": { + "description": "VSphere network URL", + "type": "string", + "readOnly": true + }, + "privateGatewayUid": { + "description": "VSphere private gateway uid", + "type": "string" + } + } + } } } + } + } + }, + "v1VsphereEnv": { + "description": "Vsphere environment entity", + "type": "object", + "properties": { + "version": { + "description": "Version of vsphere environment", + "type": "string" + } + } + }, + "v1VsphereImage": { + "description": "A generated Image should always be a template which resides inside vsphere Will not generate a OVA file out of the image OVA can be used as a base input of the os pack, that's internal to the pack", + "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" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified Azure location", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "description": "Specify the Azure location uid", - "in": "path", - "name": "uid", - "required": true, + "state": { "type": "string" } + } + }, + "v1VsphereInstanceType": { + "type": "object", + "required": [ + "numCPUs", + "memoryMiB", + "diskGiB" ], - "put": { - "operationId": "v1UsersAssetsLocationAzureUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationAzure" + "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" + } + } + }, + "v1VsphereMachine": { + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } } - ], - "summary": "Updates the specified Azure location", - "tags": [ - "users" - ] + } } }, - "/v1/users/assets/locations/gcp": { - "post": { - "operationId": "v1UsersAssetsLocationGcpCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationGcp" + "v1VsphereMachinePoolCloudConfigEntity": { + "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" } } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create a GCP location", - "tags": [ - "users" - ] + } } }, - "/v1/users/assets/locations/gcp/{uid}": { - "get": { - "operationId": "v1UsersAssetsLocationGcpGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationGcp" - } + "v1VsphereMachinePoolConfig": { + "type": "object", + "required": [ + "isControlPlane", + "instanceType" + ], + "properties": { + "additionalLabels": { + "description": "additionalLabels", + "type": "object", + "additionalProperties": { + "type": "string" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Returns the specified GCP location", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "description": "Specify the GCP location uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1UsersAssetsLocationGcpUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationGcp" + }, + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "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" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "machinePoolProperties": { + "description": "Machine pool specific properties", + "type": "object", + "properties": { + "archType": { + "type": "string", + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ] + } } - ], - "summary": "Updates the specified GCP location", - "tags": [ - "users" - ] - } - }, - "/v1/users/assets/locations/minio": { - "post": { - "operationId": "v1UsersAssetsLocationMinioCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationS3" + }, + "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" + } } } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + ] + } } - ], - "summary": "Create a MinIO location", - "tags": [ - "users" - ] + }, + "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 + } } }, - "/v1/users/assets/locations/minio/{uid}": { - "get": { - "operationId": "v1UsersAssetsLocationMinioGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationS3" + "v1VsphereMachinePoolConfigEntity": { + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } } - ], - "summary": "Returns the specified MinIO location", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "description": "Specify the MinIO location uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } + } + }, + "v1VsphereMachineSpec": { + "description": "vSphere cloud VM definition spec", + "type": "object", + "required": [ + "vcenterServer", + "nics", + "placement" ], - "put": { - "operationId": "v1UsersAssetsLocationMinioUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationS3" + "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" + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified MinIO location", - "tags": [ - "users" - ] - } - }, - "/v1/users/assets/locations/s3": { - "post": { - "operationId": "v1UsersAssetsLocationS3Create", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationS3" + "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" } } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" + } } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" } - ], - "summary": "Create a S3 location", - "tags": [ - "users" - ] + }, + "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" + } } }, - "/v1/users/assets/locations/s3/{uid}": { - "delete": { - "operationId": "v1UsersAssetsLocationS3Delete", - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1VsphereMachines": { + "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" + } + } + } + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified S3 location", - "tags": [ - "users" - ] - }, - "get": { - "operationId": "v1UsersAssetsLocationS3Get", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationS3" + "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 } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified S3 location", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "description": "Specify the S3 location uid", - "in": "path", - "name": "uid", - "required": true, - "type": "string" } + } + }, + "v1VsphereNetworkConfig": { + "type": "object", + "required": [ + "networkName" ], - "put": { - "operationId": "v1UsersAssetsLocationS3Update", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserAssetsLocationS3" + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates the specified S3 location", - "tags": [ - "users" - ] + }, + "staticIp": { + "description": "support dhcp or static IP, if false, use DHCP", + "type": "boolean" + } } }, - "/v1/users/assets/locations/{type}/{uid}/default": { - "parameters": [ - { - "description": "Specify the location uid", - "in": "path", - "name": "uid", - "required": true, + "v1VsphereNetworkConfigEntity": { + "type": "object", + "required": [ + "networkName" + ], + "properties": { + "networkName": { + "description": "NetworkName is the name of the network in which VMs are created/located.", "type": "string" }, - { - "description": "Specify the location type [aws/azure/gcp/minio/s3]", - "in": "path", - "name": "type", - "required": true, + "parentPoolUid": { + "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", "type": "string" - } - ], - "patch": { - "operationId": "v1UsersAssetsLocationDefaultUpdate", - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the default backup location", - "tags": [ - "users" - ] + "staticIp": { + "description": "support dhcp or static IP, if false, use DHCP", + "type": "boolean" + } } }, - "/v1/users/assets/locations/{uid}": { - "delete": { - "operationId": "v1UsersAssetsLocationDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1VsphereNic": { + "description": "vSphere network interface", + "type": "object", + "required": [ + "networkName" + ], + "properties": { + "index": { + "type": "integer", + "format": "int8" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified location", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "description": "Specify the location uid", - "in": "path", - "name": "uid", - "required": true, + "macAddress": { "type": "string" - } - ] - }, - "/v1/users/assets/sshkeys": { - "get": { - "operationId": "v1UsersAssetsSshGet", - "parameters": [ - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", + }, + "networkName": { + "type": "string" + }, + "privateIPs": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1UserAssetsSsh" + } + } + }, + "v1VsphereOverlordClusterConfigEntity": { + "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" + ] } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the SSH keys", - "tags": [ - "users" - ] - }, - "post": { - "operationId": "v1UserAssetsSshCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserAssetSshEntity" - } + "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" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "sshKeys": { + "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", + "type": "array", + "items": { + "type": "string" } - ], - "summary": "Creates a SSH key", - "tags": [ - "users" - ] + }, + "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" + } } }, - "/v1/users/assets/sshkeys/{uid}": { - "delete": { - "operationId": "v1UsersAssetSshDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } + "v1VspherePlacementConfig": { + "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", + "type": "object", + "properties": { + "cluster": { + "description": "Cluster is the computecluster in vsphere", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified user ssh key", - "tags": [ - "users" - ] - }, - "get": { - "operationId": "v1UsersAssetSshGetUid", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1UserAssetSsh" - } - } + "datacenter": { + "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified user ssh key", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "description": "Specify the SSH key uid", - "in": "path", - "name": "uid", - "required": true, + "datastore": { + "description": "Datastore is the datastore in which VMs are created/located.", "type": "string" - } - ], - "put": { - "operationId": "v1UsersAssetSshUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserAssetSsh" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Updates the specified user ssh key", - "tags": [ - "users" - ] - } - }, - "/v1/users/assets/vsphere/dnsMapping": { - "get": { - "operationId": "v1VsphereMappingGet", - "parameters": [ - { - "description": "Specify the vSphere gateway uid", - "in": "query", - "name": "gatewayUid", - "required": true, - "type": "string" - }, - { - "description": "Specify the vSphere datacenter name", - "in": "query", - "name": "datacenter", - "required": true, - "type": "string" - }, - { - "description": "Specify the vSphere network name", - "in": "query", - "name": "network", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VsphereDnsMapping" + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified vSphere DNS mapping", - "tags": [ - "users" - ] + "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" + } } }, - "/v1/users/assets/vsphere/dnsMappings": { - "get": { - "operationId": "v1VsphereDnsMappingsGet", - "parameters": [ - { - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "in": "query", - "name": "filters", - "type": "string" - }, - { - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "in": "query", - "name": "orderBy", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VsphereDnsMappings" + "v1VspherePlacementConfigEntity": { + "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified vSphere DNS mappings", - "tags": [ - "users" - ] - }, - "post": { - "operationId": "v1VsphereDnsMappingCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VsphereDnsMapping" + "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" + } + } + }, + "v1Workspace": { + "description": "Workspace 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" } } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "spec": { + "description": "Workspace specifications", + "properties": { + "clusterNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster namespace", + "properties": { + "image": { + "description": "Workspace namespace image information", + "properties": { + "blackListedImages": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "isRegex": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "namespaceResourceAllocation": { + "description": "Workspace namespace resource allocation", + "properties": { + "clusterResourceAllocations": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace resource allocation", + "properties": { + "clusterUid": { + "type": "string" + }, + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + }, + "defaultResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + } } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "clusterRbacs": { + "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" + } + } + } + } + } + } + } + } + }, + "clusterRefs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } + }, + "policies": { + "description": "Workspace policies", + "properties": { + "backupPolicy": { + "description": "Cluster backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "type": "boolean" + } + } + } + } + }, + "quota": { + "description": "Workspace resource quota", + "properties": { + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "description": "Workspace status", + "properties": { + "errors": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace error", + "properties": { + "clusterUid": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "name": { + "type": "string" + }, + "resourceType": { + "type": "string" + } + } + } + } } - ], - "summary": "Create a vSphere DNS mapping", - "tags": [ - "users" - ] + } } }, - "/v1/users/assets/vsphere/dnsMappings/{uid}": { - "delete": { - "operationId": "v1VsphereDnsMappingDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1WorkspaceBackup": { + "description": "Workspace 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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified vSphere DNS mapping", - "tags": [ - "users" - ] - }, - "get": { - "operationId": "v1VsphereDnsMappingGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1VsphereDnsMapping" + "spec": { + "description": "Workspace backup spec", + "properties": { + "config": { + "description": "Workspace backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "type": "boolean" + } + } + }, + "workspaceUid": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "description": "Workspace backup status", + "properties": { + "workspaceBackupStatuses": { + "type": "array", + "items": { + "description": "Workspace backup status meta", + "properties": { + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "requestUid": { + "type": "string" + }, + "workspaceBackupConfig": { + "description": "Workspace cluster backup config", + "properties": { + "backupName": { + "type": "string" + }, + "backupState": { + "description": "Workspace backup state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "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" + }, + "clusterBackupRefs": { + "type": "array", + "items": { + "description": "Workspace cluster backup response", + "properties": { + "backupStatusMeta": { + "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" + } + } + }, + "backupUid": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } + }, + "config": { + "description": "Workspace backup status config", + "properties": { + "backupName": { + "type": "string" + }, + "durationInHours": { + "type": "number", + "format": "int64" + }, + "includeAllDisks": { + "type": "boolean" + }, + "includeClusterResources": { + "type": "boolean" + }, + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "requestTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } + } + } + } } - ], - "summary": "Returns the specified vSphere DNS mapping", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "description": "Specify the vSphere DNS mapping uid", - "in": "path", - "name": "uid", - "required": true, + } + } + }, + "v1WorkspaceBackupClusterRef": { + "description": "Workspace backup cluster ref", + "properties": { + "backupName": { + "type": "string" + }, + "clusterUid": { "type": "string" } - ], - "put": { - "operationId": "v1VsphereDnsMappingUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1VsphereDnsMapping" + } + }, + "v1WorkspaceBackupConfig": { + "description": "Workspace backup config", + "properties": { + "backupConfig": { + "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" + } + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Updates the specified vSphere DNS mapping", - "tags": [ - "users" - ] + }, + "includeAllClusters": { + "type": "boolean" + } } }, - "/v1/users/auth/tokens/revoke": { - "post": { - "operationId": "v1UsersAuthTokensRevoke", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1AuthTokenRevoke" + "v1WorkspaceBackupConfigEntity": { + "description": "Cluster backup config", + "properties": { + "backupConfig": { + "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" + } + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Revoke access of specific token(s)", - "tags": [ - "users" - ] + }, + "includeAllClusters": { + "type": "boolean" + } } }, - "/v1/users/config/scar": { - "get": { - "operationId": "V1UsersConfigScarGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1SystemScarSpec" + "v1WorkspaceBackupDeleteEntity": { + "description": "Cluster backup delete config", + "properties": { + "clusterConfigs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace backup cluster ref", + "properties": { + "backupName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Get the system Spectro repository. Restricted to edge services", - "tags": [ - "users" - ] + "requestUid": { + "type": "string" + } } }, - "/v1/users/kubectl/session/{sessionUid}": { - "get": { - "description": "gets users kubectl session", - "operationId": "V1UsersKubectlSessionUid", - "parameters": [ - { - "in": "path", - "name": "sessionUid", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1UserKubectlSession" + "v1WorkspaceBackupSpec": { + "description": "Workspace backup spec", + "properties": { + "config": { + "description": "Workspace backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "type": "boolean" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "gets users kubectl session", - "tags": [ - "users" - ] + "workspaceUid": { + "type": "string" + } } }, - "/v1/users/meta": { - "get": { - "operationId": "v1UsersMetadata", - "responses": { - "200": { - "description": "An array of users metadata items", - "schema": { - "$ref": "#/definitions/v1UsersMetadata" + "v1WorkspaceBackupState": { + "description": "Workspace backup state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1WorkspaceBackupStatus": { + "description": "Workspace backup status", + "properties": { + "workspaceBackupStatuses": { + "type": "array", + "items": { + "description": "Workspace backup status meta", + "properties": { + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "requestUid": { + "type": "string" + }, + "workspaceBackupConfig": { + "description": "Workspace cluster backup config", + "properties": { + "backupName": { + "type": "string" + }, + "backupState": { + "description": "Workspace backup state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "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" + }, + "clusterBackupRefs": { + "type": "array", + "items": { + "description": "Workspace cluster backup response", + "properties": { + "backupStatusMeta": { + "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" + } + } + }, + "backupUid": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } + }, + "config": { + "description": "Workspace backup status config", + "properties": { + "backupName": { + "type": "string" + }, + "durationInHours": { + "type": "number", + "format": "int64" + }, + "includeAllDisks": { + "type": "boolean" + }, + "includeClusterResources": { + "type": "boolean" + }, + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "requestTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } + } + } } } + } + } + }, + "v1WorkspaceBackupStatusConfig": { + "description": "Workspace backup status config", + "properties": { + "backupName": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "durationInHours": { + "type": "number", + "format": "int64" + }, + "includeAllDisks": { + "type": "boolean" + }, + "includeClusterResources": { + "type": "boolean" + }, + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Retrieves a list of users metadata", - "tags": [ - "users" - ] + } } }, - "/v1/users/password/change": { - "patch": { - "description": "User password change request via current password and emailId", - "operationId": "V1UsersPasswordChange", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { + "v1WorkspaceBackupStatusMeta": { + "description": "Workspace backup status meta", + "properties": { + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "requestUid": { + "type": "string" + }, + "workspaceBackupConfig": { + "description": "Workspace cluster backup config", + "properties": { + "backupName": { + "type": "string" + }, + "backupState": { + "description": "Workspace backup state", "properties": { - "currentPassword": { + "deleteState": { "type": "string" }, - "emailId": { + "state": { "type": "string" - }, - "newPassword": { + } + } + }, + "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" + }, + "clusterBackupRefs": { + "type": "array", + "items": { + "description": "Workspace cluster backup response", + "properties": { + "backupStatusMeta": { + "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" + } + } + }, + "backupUid": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } + }, + "config": { + "description": "Workspace backup status config", + "properties": { + "backupName": { "type": "string" + }, + "durationInHours": { + "type": "number", + "format": "int64" + }, + "includeAllDisks": { + "type": "boolean" + }, + "includeClusterResources": { + "type": "boolean" + }, + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } } - }, - "required": [ - "newPassword", - "emailId", - "currentPassword" - ], - "type": "object" - } - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" } + }, + "requestTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "User password change request using the user emailId", - "tags": [ - "users" - ] + } } }, - "/v1/users/password/reset": { - "patch": { - "description": "User password request will be sent to the supplied emailId", - "operationId": "v1UsersEmailPasswordReset", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "properties": { - "emailId": { - "type": "string" + "v1WorkspaceClusterBackupConfig": { + "description": "Workspace cluster backup config", + "properties": { + "backupName": { + "type": "string" + }, + "backupState": { + "description": "Workspace backup state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "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" + }, + "clusterBackupRefs": { + "type": "array", + "items": { + "description": "Workspace cluster backup response", + "properties": { + "backupStatusMeta": { + "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" + } } }, - "required": [ - "emailId" - ], - "type": "object" + "backupUid": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } } } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "config": { + "description": "Workspace backup status config", + "properties": { + "backupName": { + "type": "string" + }, + "durationInHours": { + "type": "number", + "format": "int64" + }, + "includeAllDisks": { + "type": "boolean" + }, + "includeClusterResources": { + "type": "boolean" + }, + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "User password reset request using the email id", - "tags": [ - "users" - ] + "requestTime": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + } } }, - "/v1/users/summary": { - "get": { - "description": "Deprecated, Use Post api - Returns a list of user summaries", - "operationId": "v1UsersSummary", - "parameters": [ - { - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "format": "int64", - "in": "query", - "name": "limit", - "type": "integer" - }, - { - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "format": "int64", - "in": "query", - "name": "offset", - "type": "integer" - }, - { - "description": "continue token to paginate the subsequent data items", - "in": "query", - "name": "continue", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1UsersSummary" + "v1WorkspaceClusterBackupResponse": { + "description": "Workspace cluster backup response", + "properties": { + "backupStatusMeta": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified user summary list", - "tags": [ - "users" - ] - }, - "post": { - "operationId": "v1UsersSummaryGet", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UsersSummarySpec" - } - } - ], - "responses": { - "200": { - "description": "An array of users summary items", - "schema": { - "$ref": "#/definitions/v1UsersSummaryList" - } - } + "backupUid": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of users summary with provided filter spec", - "tags": [ - "users" - ] + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } } }, - "/v1/users/system/macros": { - "delete": { - "operationId": "v1UsersSystemMacrosDeleteByMacroName", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" + "v1WorkspaceClusterNamespace": { + "description": "Workspace cluster namespace", + "properties": { + "image": { + "description": "Workspace namespace image information", + "properties": { + "blackListedImages": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete the macros for the system user by macro name", - "tags": [ - "users" - ] - }, - "get": { - "operationId": "v1UsersSystemMacrosList", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Macros" - } - } + "isRegex": { + "type": "boolean", + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "List the macros of the system", - "tags": [ - "users" - ] - }, - "patch": { - "operationId": "v1UsersSystemMacrosUpdateByMacroName", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "name": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the macros for the system user by macro name", - "tags": [ - "users" - ] - }, - "post": { - "operationId": "v1UsersSystemMacrosCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" + "namespaceResourceAllocation": { + "description": "Workspace namespace resource allocation", + "properties": { + "clusterResourceAllocations": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace resource allocation", + "properties": { + "clusterUid": { + "type": "string" + }, + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + }, + "defaultResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + } + } + }, + "v1WorkspaceClusterNamespacesEntity": { + "description": "Workspace cluster namespaces update entity", + "properties": { + "clusterNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster namespace", + "properties": { + "image": { + "description": "Workspace namespace image information", + "properties": { + "blackListedImages": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "isRegex": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "namespaceResourceAllocation": { + "description": "Workspace namespace resource allocation", + "properties": { + "clusterResourceAllocations": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace resource allocation", + "properties": { + "clusterUid": { + "type": "string" + }, + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + }, + "defaultResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create or add new macros for the system user", - "tags": [ - "users" - ] - }, - "put": { - "operationId": "v1UsersSystemMacrosUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1Macros" + "clusterRefs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "quota": { + "description": "Workspace resource quota", + "properties": { + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } } - ], - "summary": "Update the macros of the system", - "tags": [ - "users" - ] + } } }, - "/v1/users/{uid}": { - "delete": { - "description": "Deletes the specified User for given uid", - "operationId": "v1UsersUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified User", - "tags": [ - "users" - ] - }, - "get": { - "description": "Returns a User for the specified uid.", - "operationId": "v1UsersUidGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1User" - } - } + "v1WorkspaceClusterRef": { + "description": "Workspace cluster reference", + "properties": { + "clusterName": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified User", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "clusterUid": { "type": "string" } - ], - "patch": { - "description": "User is patched for the specified information", - "operationId": "v1UsersUidPatch", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1UserPatch" - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + } + }, + "v1WorkspaceClusterRestoreConfig": { + "description": "Workspace cluster restore config", + "properties": { + "backupName": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Patches the specified User", - "tags": [ - "users" - ] - }, - "put": { - "description": "A user is created for the given user context", - "operationId": "v1UsersUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserUpdateEntity" + "clusterRestoreRefs": { + "type": "array", + "items": { + "description": "Workspace cluster restore response", + "properties": { + "backupName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + }, + "restoreStatusMeta": { + "description": "Workspace cluster restore state", + "properties": { + "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" + }, + "state": { + "type": "string" + } + } + }, + "restoreUid": { + "type": "string" + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "restoreState": { + "description": "Workspace restore state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "type": "string" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + }, + "v1WorkspaceClusterRestoreResponse": { + "description": "Workspace cluster restore response", + "properties": { + "backupName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + }, + "restoreStatusMeta": { + "description": "Workspace cluster restore state", + "properties": { + "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" + }, + "state": { + "type": "string" + } } - ], - "summary": "Update User", - "tags": [ - "users" - ] + }, + "restoreUid": { + "type": "string" + } } }, - "/v1/users/{uid}/password/change": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1WorkspaceClusterRestoreState": { + "description": "Workspace cluster restore state", + "properties": { + "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" + }, + "state": { "type": "string" } - ], - "patch": { - "description": "User password change request via current password", - "operationId": "v1UsersUidPasswordChange", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "properties": { - "currentPassword": { - "type": "string" - }, - "newPassword": { - "type": "string" + } + }, + "v1WorkspaceClusterWorkloadCronJobs": { + "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" + } } }, - "required": [ - "newPassword" - ], - "type": "object" + "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" + } + } + } } } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "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" + } + } + } + } + }, + "v1WorkspaceClusterWorkloadDaemonSets": { + "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" + } + } } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "User password change request using the user uid", - "tags": [ - "users" - ] + } } }, - "/v1/users/{uid}/password/reset": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "description": "User password reset request, will send the password reset option through the emailId", - "operationId": "v1UsersUidPasswordReset", - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + "v1WorkspaceClusterWorkloadDeployments": { + "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 + } + } + } + } } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "User password reset request using the user uid", - "tags": [ - "users" - ] + } } }, - "/v1/users/{uid}/projects": { - "get": { - "description": "Returns a User with projects and roles", - "operationId": "v1UsersProjectRoles", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ProjectRolesEntity" + "v1WorkspaceClusterWorkloadJobs": { + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the specified User Projects and Roles information", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ], - "put": { - "description": "User is updated with projects and roles", - "operationId": "v1UsersProjectRolesPut", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1ProjectRolesPatch" + } + }, + "v1WorkspaceClusterWorkloadNamespaces": { + "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" } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Updates the projects and roles for user", - "tags": [ - "users" - ] + } } }, - "/v1/users/{uid}/resourceRoles": { - "get": { - "description": "Returns resource roles for user", - "operationId": "v1UsersUidResourceRoles", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1ResourceRoles" + "v1WorkspaceClusterWorkloadPods": { + "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" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } + } + } + } } - ], - "summary": "Returns the specified individual and resource roles for a user", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ], - "post": { - "description": "Resource roles added to specific user", - "operationId": "v1UsersUidResourceRolesCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1ResourceRolesUpdateEntity" + } + }, + "v1WorkspaceClusterWorkloadRoleBindings": { + "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" + ] + } + } + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Add resource roles for user", - "tags": [ - "users" - ] + } } }, - "/v1/users/{uid}/resourceRoles/{resourceRoleUid}": { - "delete": { - "operationId": "v1UsersUidResourceRolesUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" + "v1WorkspaceClusterWorkloadStatefulSets": { + "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" + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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 + } + } + } + } + } + } } - ], - "summary": "Deleted the resource roles from user", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - }, - { - "in": "path", - "name": "resourceRoleUid", - "required": true, - "type": "string" } - ], - "patch": { - "description": "Specific resource roles fo user is updated", - "operationId": "v1UsersResourceRolesUidUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1ResourceRolesUpdateEntity" + } + }, + "v1WorkspaceClustersWorkloadCronJobs": { + "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" + } + } + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates the resource roles for user", - "tags": [ - "users" - ] + } } }, - "/v1/users/{uid}/roles": { - "get": { - "description": "Returns roles clubbed from team", - "operationId": "v1UsersUidRoles", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1UserRolesEntity" + "v1WorkspaceClustersWorkloadDaemonSets": { + "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" + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the specified individual and team roles for a user", - "tags": [ - "users" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" } - ], - "put": { - "description": "User is updated with roles", - "operationId": "v1UsersUidRolesUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1UserRoleUIDs" + } + }, + "v1WorkspaceClustersWorkloadDeployments": { + "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" + } + } + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates the roles for user", - "tags": [ - "users" - ] + } } }, - "/v1/users/{uid}/status/loginMode": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "patch": { - "operationId": "v1UsersStatusLoginMode", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1UserStatusLoginMode" + "v1WorkspaceClustersWorkloadJobs": { + "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" + } + } + } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Users status login mode", - "tags": [ - "users" - ] + } } }, - "/v1/workspaces": { - "post": { - "operationId": "v1WorkspacesCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceEntity" + "v1WorkspaceClustersWorkloadNamespaces": { + "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" + } + } + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + }, + "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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "labels": { + "description": "Labels are key value data to 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" } } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create workspace", - "tags": [ - "workspaces" - ] + } } }, - "/v1/workspaces/teams/{teamUid}/roles": { - "get": { - "operationId": "v1TeamsWorkspaceGetRoles", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1WorkspaceScopeRoles" + "v1WorkspaceClustersWorkloadPods": { + "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" + } + } + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the specified team's workspaces and roles data", - "tags": [ - "workspaces" - ] - }, - "parameters": [ - { - "in": "path", - "name": "teamUid", - "required": true, - "type": "string" } - ], - "put": { - "operationId": "v1TeamsWorkspaceRolesPut", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1WorkspacesRolesPatch" + } + }, + "v1WorkspaceClustersWorkloadRoleBindings": { + "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" + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Updates the workspace roles for the specified team", - "tags": [ - "workspaces" - ] + } } }, - "/v1/workspaces/users/{userUid}/roles": { - "get": { - "description": "Returns a User with workspaces and roles", - "operationId": "v1UsersWorkspaceGetRoles", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1WorkspaceScopeRoles" + "v1WorkspaceClustersWorkloadStatefulSets": { + "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 + } + } + } + } + } + } + } + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "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" + } } - ], - "summary": "Returns the specified User workspaces and Roles information", - "tags": [ - "workspaces" - ] - }, - "parameters": [ - { - "in": "path", - "name": "userUid", - "required": true, - "type": "string" } - ], - "put": { - "description": "User is updated with workspace roles", - "operationId": "v1UsersWorkspaceRolesPut", - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1WorkspacesRolesPatch" + } + }, + "v1WorkspaceEntity": { + "description": "Workspace 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" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "spec": { + "description": "Workspace specifications", + "properties": { + "clusterNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster namespace", + "properties": { + "image": { + "description": "Workspace namespace image information", + "properties": { + "blackListedImages": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "isRegex": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "namespaceResourceAllocation": { + "description": "Workspace namespace resource allocation", + "properties": { + "clusterResourceAllocations": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace resource allocation", + "properties": { + "clusterUid": { + "type": "string" + }, + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + }, + "defaultResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + } + } + }, + "clusterRbacs": { + "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" + } + } + } + } + } + } + } + } + }, + "clusterRefs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + } + }, + "policies": { + "description": "Workspace policies", + "properties": { + "backupPolicy": { + "description": "Cluster backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "type": "boolean" + } + } + } + } + }, + "quota": { + "description": "Workspace resource quota", + "properties": { + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } } - ], - "summary": "Updates the workspace roles for user", - "tags": [ - "workspaces" - ] + } } }, - "/v1/workspaces/validate/name": { - "get": { - "operationId": "v1WorkspacesValidateName", - "parameters": [ - { - "in": "query", - "name": "name", - "required": true, - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1WorkspaceError": { + "description": "Workspace error", + "properties": { + "clusterUid": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "name": { + "type": "string" + }, + "resourceType": { + "type": "string" + } + } + }, + "v1WorkspaceNamespaceImage": { + "description": "Workspace namespace image information", + "properties": { + "blackListedImages": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1WorkspaceNamespaceResourceAllocation": { + "description": "Workspace namespace resource allocation", + "properties": { + "clusterResourceAllocations": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace resource allocation", + "properties": { + "clusterUid": { "type": "string" + }, + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "defaultResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } } - ], - "summary": "Validates the workspace name", - "tags": [ - "workspaces" - ] + } } }, - "/v1/workspaces/{uid}": { - "delete": { - "operationId": "v1WorkspacesUidDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified workspace", - "tags": [ - "workspaces" - ] - }, - "get": { - "operationId": "v1WorkspacesUidGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1WorkspacePolicies": { + "description": "Workspace policies", + "properties": { + "backupPolicy": { + "description": "Cluster backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "type": "boolean" + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1Workspace" + } + } + }, + "v1WorkspaceQuota": { + "description": "Workspace resource quota", + "properties": { + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false } } + } + } + }, + "v1WorkspaceResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the specified workspace", - "tags": [ - "workspaces" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false } - ] + } }, - "/v1/workspaces/{uid}/backup": { - "delete": { - "operationId": "v1WorkspaceOpsBackupDelete", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceBackupDeleteEntity" + "v1WorkspaceResourceAllocationsEntity": { + "description": "Workspace resource allocation update entity", + "properties": { + "clusterNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster namespace", + "properties": { + "image": { + "description": "Workspace namespace image information", + "properties": { + "blackListedImages": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "isRegex": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "namespaceResourceAllocation": { + "description": "Workspace namespace resource allocation", + "properties": { + "clusterResourceAllocations": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace resource allocation", + "properties": { + "clusterUid": { + "type": "string" + }, + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + }, + "defaultResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete workspace backup", - "tags": [ - "workspaces" - ] - }, - "get": { - "operationId": "v1WorkspaceOpsBackupGet", - "parameters": [ - { - "in": "query", - "name": "backupRequestUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1WorkspaceBackup" + "clusterRefs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the workspace backup result", - "tags": [ - "workspaces" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1WorkspaceOpsBackupCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceBackupConfigEntity" + "quota": { + "description": "Workspace resource quota", + "properties": { + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + } + }, + "v1WorkspaceRestore": { + "description": "Workspace 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" } }, - "schema": { - "$ref": "#/definitions/v1Uid" + "creationTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "deletionTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "labels": { + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "lastModifiedTimestamp": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create workspace backup settings", - "tags": [ - "workspaces" - ] - }, - "put": { - "operationId": "v1WorkspaceOpsBackupUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceBackupConfigEntity" + "spec": { + "description": "Workspace restore spec", + "properties": { + "workspaceUid": { + "type": "string" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "status": { + "description": "Workspace restore status", + "properties": { + "workspaceRestoreStatuses": { + "type": "array", + "items": { + "description": "Workspace restore status meta", + "properties": { + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "requestUid": { + "type": "string" + }, + "workspaceRestoreConfig": { + "description": "Workspace cluster restore config", + "properties": { + "backupName": { + "type": "string" + }, + "clusterRestoreRefs": { + "type": "array", + "items": { + "description": "Workspace cluster restore response", + "properties": { + "backupName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + }, + "restoreStatusMeta": { + "description": "Workspace cluster restore state", + "properties": { + "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" + }, + "state": { + "type": "string" + } + } + }, + "restoreUid": { + "type": "string" + } + } + } + }, + "restoreState": { + "description": "Workspace restore state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "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" + } + } + } + } + } + } } - ], - "summary": "Update workspace backup settings", - "tags": [ - "workspaces" - ] + } } }, - "/v1/workspaces/{uid}/backup/onDemand": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } + "v1WorkspaceRestoreConfig": { + "description": "Workspace cluster restore config", + "required": [ + "backupName", + "sourceClusterUid" ], - "post": { - "operationId": "v1WorkspaceOpsBackupOnDemandCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceBackupConfigEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "properties": { + "backupName": { + "type": "string" + }, + "includeClusterResources": { + "type": "boolean" + }, + "includeNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - }, - "schema": { - "$ref": "#/definitions/v1Uid" - } - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Create On demand Workspace Backup", - "tags": [ - "workspaces" - ] - } - }, - "/v1/workspaces/{uid}/clusterNamespaces": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "preserveNodePorts": { + "type": "boolean" + }, + "restorePVs": { + "type": "boolean" + }, + "sourceClusterUid": { "type": "string" } + } + }, + "v1WorkspaceRestoreConfigEntity": { + "description": "Cluster restore config", + "required": [ + "backupRequestUid" ], - "put": { - "operationId": "v1WorkspacesUidClusterNamespacesUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceClusterNamespacesEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } + "properties": { + "backupRequestUid": { + "type": "string" }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "restoreConfigs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster restore config", + "required": [ + "backupName", + "sourceClusterUid" + ], + "properties": { + "backupName": { + "type": "string" + }, + "includeClusterResources": { + "type": "boolean" + }, + "includeNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "preserveNodePorts": { + "type": "boolean" + }, + "restorePVs": { + "type": "boolean" + }, + "sourceClusterUid": { + "type": "string" + } + } } - ], - "summary": "Updates the specified workspace namespaces", - "tags": [ - "workspaces" - ] + } } }, - "/v1/workspaces/{uid}/clusterRbacs": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "v1WorkspaceRestoreSpec": { + "description": "Workspace restore spec", + "properties": { + "workspaceUid": { "type": "string" } - ], - "post": { - "operationId": "v1WorkspacesClusterRbacCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterRbac" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", + } + }, + "v1WorkspaceRestoreState": { + "description": "Workspace restore state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1WorkspaceRestoreStatus": { + "description": "Workspace restore status", + "properties": { + "workspaceRestoreStatuses": { + "type": "array", + "items": { + "description": "Workspace restore status meta", + "properties": { + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "requestUid": { "type": "string" + }, + "workspaceRestoreConfig": { + "description": "Workspace cluster restore config", + "properties": { + "backupName": { + "type": "string" + }, + "clusterRestoreRefs": { + "type": "array", + "items": { + "description": "Workspace cluster restore response", + "properties": { + "backupName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + }, + "restoreStatusMeta": { + "description": "Workspace cluster restore state", + "properties": { + "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" + }, + "state": { + "type": "string" + } + } + }, + "restoreUid": { + "type": "string" + } + } + } + }, + "restoreState": { + "description": "Workspace restore state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "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" + } + } } + } + } + } + } + }, + "v1WorkspaceRestoreStatusMeta": { + "description": "Workspace restore status meta", + "properties": { + "actor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" }, - "schema": { - "$ref": "#/definitions/v1Uid" + "uid": { + "type": "string" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "requestUid": { + "type": "string" + }, + "workspaceRestoreConfig": { + "description": "Workspace cluster restore config", + "properties": { + "backupName": { + "type": "string" + }, + "clusterRestoreRefs": { + "type": "array", + "items": { + "description": "Workspace cluster restore response", + "properties": { + "backupName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + }, + "restoreStatusMeta": { + "description": "Workspace cluster restore state", + "properties": { + "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" + }, + "state": { + "type": "string" + } + } + }, + "restoreUid": { + "type": "string" + } + } + } + }, + "restoreState": { + "description": "Workspace restore state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "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" + } } - ], - "summary": "Create cluster rbac in workspace", - "tags": [ - "workspaces" - ] + } } }, - "/v1/workspaces/{uid}/clusterRbacs/{clusterRbacUid}": { - "delete": { - "operationId": "v1WorkspacesUidClusterRbacDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", + "v1WorkspaceRolesPatch": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "items": { "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Deletes the specified workspace cluster rbac", - "tags": [ - "workspaces" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + "uid": { + "type": "string" + } + } + }, + "v1WorkspaceRolesUidSummary": { + "type": "object", + "properties": { + "name": { "type": "string" }, - { - "in": "path", - "name": "clusterRbacUid", - "required": true, + "uid": { "type": "string" } - ], - "put": { - "operationId": "v1WorkspacesUidClusterRbacUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ClusterRbac" + } + }, + "v1WorkspaceScopeRoles": { + "description": "List all workspaces with the roles assigned to the users", + "properties": { + "projects": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "List projects and its workspaces", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "workspaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace users and their roles", + "properties": { + "inheritedRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + } + }, + "uid": { + "type": "string" + } + } + } + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + } + } + }, + "v1WorkspaceSpec": { + "description": "Workspace specifications", + "properties": { + "clusterNamespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster namespace", + "properties": { + "image": { + "description": "Workspace namespace image information", + "properties": { + "blackListedImages": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + } + }, + "isRegex": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "namespaceResourceAllocation": { + "description": "Workspace namespace resource allocation", + "properties": { + "clusterResourceAllocations": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace resource allocation", + "properties": { + "clusterUid": { + "type": "string" + }, + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + }, + "defaultResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "clusterRbacs": { + "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" + } + } + } + } + } + } + } } - ], - "summary": "Updates the specified workspace cluster rbac", - "tags": [ - "workspaces" - ] - } - }, - "/v1/workspaces/{uid}/meta": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "v1WorkspacesUidMetaUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1ObjectMeta" + }, + "clusterRefs": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + }, + "policies": { + "description": "Workspace policies", + "properties": { + "backupPolicy": { + "description": "Cluster backup config", + "properties": { + "backupConfig": { + "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" + } + } + } + } + }, + "clusterUids": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "includeAllClusters": { + "type": "boolean" + } + } + } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "quota": { + "description": "Workspace resource quota", + "properties": { + "resourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "type": "number", + "minimum": -1, + "x-omitempty": false + }, + "memoryMiB": { + "type": "number", + "minimum": -1, + "x-omitempty": false + } + } + } } - ], - "summary": "Updates the specified workspace meta", - "tags": [ - "workspaces" - ] + } } }, - "/v1/workspaces/{uid}/resourceAllocations": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" - } - ], - "put": { - "description": "Deprecated", - "operationId": "v1WorkspacesUidResourceAllocationsUpdate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceResourceAllocationsEntity" + "v1WorkspaceStatus": { + "description": "Workspace status", + "properties": { + "errors": { + "type": "array", + "uniqueItems": true, + "items": { + "description": "Workspace error", + "properties": { + "clusterUid": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "name": { + "type": "string" + }, + "resourceType": { + "type": "string" + } } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" + } + } + }, + "v1WorkspaceWorkloadsFilter": { + "description": "Workspace workloads filter", + "type": "object", + "properties": { + "clusters": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "namespaces": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" } - ], - "summary": "Updates the specified workspace resource allocations", - "tags": [ - "workspaces" - ] + } } }, - "/v1/workspaces/{uid}/restore": { - "get": { - "operationId": "v1WorkspaceOpsRestoreGet", - "parameters": [ - { - "in": "query", - "name": "restoreRequestUid", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" + "v1WorkspaceWorkloadsSpec": { + "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" + } + } } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/v1WorkspaceRestore" + } + } + }, + "v1WorkspacesRoles": { + "description": "Workspace users and their roles", + "properties": { + "inheritedRoles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } } - ], - "summary": "Returns the workspace restore result", - "tags": [ - "workspaces" - ] - }, - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, + }, + "uid": { "type": "string" } - ] + } }, - "/v1/workspaces/{uid}/restore/onDemand": { - "parameters": [ - { - "in": "path", - "name": "uid", - "required": true, - "type": "string" + "v1WorkspacesRolesPatch": { + "type": "object", + "properties": { + "workspaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "uid": { + "type": "string" + } + } + } } - ], - "post": { - "operationId": "v1WorkspaceOpsRestoreOnDemandCreate", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1WorkspaceRestoreConfigEntity" + } + }, + "v1YearlyUsage": { + "description": "Yearly usage object", + "properties": { + "billingPeriod": { + "description": "Invoice billing period object", + "properties": { + "end": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "start": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" } - ], - "responses": { - "201": { - "description": "Created successfully", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" + }, + "monthlyUsages": { + "description": "List of monthly usages", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Monthly usage object", + "properties": { + "month": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "tenantUsages": { + "description": "List of tenants usage", + "type": "array", + "uniqueItems": true, + "items": { + "description": "Tenant usage object", + "properties": { + "orgName": { + "description": "Organization name", + "type": "string" + }, + "tenantUid": { + "description": "Tenant uid", + "type": "string" + }, + "usedAlloyCredits": { + "description": "Credits used by imported clusters", + "type": "number", + "format": "float64" + }, + "usedPureCredits": { + "description": "Credits used by managed clusters", + "type": "number", + "format": "float64" + } + } + } + }, + "usedAlloyCredits": { + "description": "Credits used by imported clusters", + "type": "number", + "format": "float64" + }, + "usedPureCredits": { + "description": "Credits used by managed clusters", + "type": "number", + "format": "float64" } - }, - "schema": { - "$ref": "#/definitions/v1Uid" } } }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] + "productUsages": { + "description": "Product usage", + "properties": { + "alloyUsage": { + "description": "Yearly usage", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "breachedCredits": { + "description": "Credits exceeded the allocated and free credits", + "type": "number", + "format": "float64" + }, + "freeSlaCredits": { + "description": "Free allocated SLA credits", + "type": "number", + "format": "int64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + }, + "pureUsage": { + "description": "Yearly usage", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "type": "number", + "format": "int64" + }, + "breachedCredits": { + "description": "Credits exceeded the allocated and free credits", + "type": "number", + "format": "float64" + }, + "freeSlaCredits": { + "description": "Free allocated SLA credits", + "type": "number", + "format": "int64" + }, + "usedCredits": { + "description": "Used credits", + "type": "number", + "format": "float64" + } + } + } } - ], - "summary": "Create On demand Workspace Restore", - "tags": [ - "workspaces" - ] + } + } + }, + "v1ZoneEntity": { + "description": "Azure availability zone entity", + "type": "object", + "properties": { + "id": { + "description": "Azure availability zone id", + "type": "string" + } } } }, - "produces": [ - "application/json" - ], - "schemes": [ - "http", - "https" - ], "securityDefinitions": { "ApiKey": { "description": "API key authorization where API key can be generated from Palette console under Profile > My API Keys", - "in": "header", + "type": "apiKey", "name": "ApiKey", - "type": "apiKey" + "in": "header" }, "Authorization": { "description": "JWT token authorization obtained using /v1/auth/authenticate api", - "in": "header", + "type": "apiKey", "name": "Authorization", - "type": "apiKey" + "in": "header" } }, - "swagger": "2.0", "tags": [ - { - "name": "cluster", - "x-displayName": "Cluster" - }, { "name": "apiKeys", "x-displayName": "Api Keys" @@ -84131,10 +415188,6 @@ "name": "filters", "x-displayName": "Filters" }, - { - "name": "installers", - "x-displayName": "Installers" - }, { "name": "metrics", "x-displayName": "Metrics" diff --git a/docs/docs-content/clusters/data-center/vmware.md b/docs/deprecated/clusters/data-center/vmware.md similarity index 100% rename from docs/docs-content/clusters/data-center/vmware.md rename to docs/deprecated/clusters/data-center/vmware.md diff --git a/docs/docs-content/byoos/_category_ copy.json b/docs/docs-content/byoos/_category_ copy.json new file mode 100644 index 0000000000..094470741d --- /dev/null +++ b/docs/docs-content/byoos/_category_ copy.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/byoos/image-builder.md b/docs/docs-content/byoos/image-builder.md index 7bc2e5724e..e91c7a8c79 100644 --- a/docs/docs-content/byoos/image-builder.md +++ b/docs/docs-content/byoos/image-builder.md @@ -73,7 +73,7 @@ create the image. 1. Clone the KIB repository. - + @@ -89,9 +89,9 @@ create the image. git clone git@github.com:kubernetes-sigs/image-builder.git ``` - + - + 2. Switch the directory into the image builder folder. diff --git a/docs/docs-content/byoos/usecases/usecases.md b/docs/docs-content/byoos/usecases/usecases.md new file mode 100644 index 0000000000..68855818fe --- /dev/null +++ b/docs/docs-content/byoos/usecases/usecases.md @@ -0,0 +1,23 @@ +--- +sidebar_label: "Use Cases" +title: "Use Cases" +description: "Learn how to build and use custom OS images with Palette." +hide_table_of_contents: false +sidebar_position: 10 +tags: ["operating system", "byoos", "profiles", "use cases"] +--- + +This section contains a collection of use cases for building and using custom OS images with Palette. Use these guides +to learn how to build custom OS images and use them to deploy Kubernetes clusters. If a specific use case is not covered +in this section, refer to the generic [Create Images with Image Builder](../image-builder.md) guide and use the +[Kubernetes Image Builder](https://image-builder.sigs.k8s.io/introduction.html) project to build your custom OS images. + +## Platforms + +- [VMware vSphere](./vmware/vmware.md) + +## Resources + +- [VMware vSphere](./vmware/vmware.md) + +- [Create Images with Image Builder](../image-builder.md) diff --git a/docs/docs-content/byoos/usecases/vmware/_category_ .json b/docs/docs-content/byoos/usecases/vmware/_category_ .json new file mode 100644 index 0000000000..094470741d --- /dev/null +++ b/docs/docs-content/byoos/usecases/vmware/_category_ .json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/byoos/usecases/vmware/konvoy.md b/docs/docs-content/byoos/usecases/vmware/konvoy.md new file mode 100644 index 0000000000..e25d442f97 --- /dev/null +++ b/docs/docs-content/byoos/usecases/vmware/konvoy.md @@ -0,0 +1,466 @@ +--- +sidebar_label: "RHEL and Konvoy" +title: "RHEL and Konvoy" +description: + "Learn how to build a custom RHEL with Konvoy image for VMware vSphere and use it to deploy a Kubernetes cluster." +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["operating system", "byoos", "profiles", "konvoy", "vmware"] +--- + +This guide provides instructions for building a custom image using Red Hat Linux Enterprise (RHEL) with Konvoy. The +guide assumes that you have a basic understanding of VMware vSphere, RHEL and [Konvoy](../../../integrations/konvoy.md). + +You will use the [Konvoy image builder](https://github.com/mesosphere/konvoy-image-builder) project to build the custom +RHEL image with Konvoy. The custom image will be used to deploy a Kubernetes cluster on VMware vSphere. + +## Prerequisites + +Carefully review the prerequisites and follow the steps in the order provided to build and use a custom RHEL with +Konvoy. Make sure you have met all the prerequisites before you begin. + +- A x86_64 Linux VM with the following resources: + + - 4 CPU + - 8 GB of RAM + - 50 GB of free disk space + +- The Linux VM must have connectivity to the internet and the VMware vSphere environment. + +- The following software must be installed on the Linux VM: + + - [Docker Engine](https://docs.docker.com/engine/install/) version 25.0.0 or later. + - [HashiCorp Packer](https://developer.hashicorp.com/packer/) version 1.10.1 or later. + - [tar](https://www.gnu.org/software/tar/) or similar tool to extract tarballs. + - [wget](https://www.gnu.org/software/wget/) or similar tool, such as curl to download files from the internet. + +- A valid [RHEL subscription](https://www.redhat.com/en/store/linux-platforms). You will need to provide the username + and password for the subscription during the build process. + +- VMware vSphere template for RHEL 8.8 or later. The Konvoy image builder will use this template to create the custom + RHEL with Konvoy image. + +
+Click to learn more about VMware vSphere RHEL templates + +You can download RHEL 8.8 or later ISO files from the +[Red Hat Developer Portal](https://developers.redhat.com/products/rhel/download?source=sso). The ISO can be uploaded to +your vSphere Datastore and be used to deploy a VM. Deploy the VM and reference the ISO you uploaded to your Datastore as +the input for the **CD/DVD Drive**. + +![A View of the ISO selection](/byoos_vmware_konvoy_iso-selection.webp) + +After the VM is deployed, and you have completed the RHEL installation, verify you can SSH into the VM. If you can SSH +and log in to the VM, you can use it as a template for the Konvoy image builder. Save the VM as a template in vSphere. +Reference the template in the Konvoy image builder configuration file. + +:::tip + +Configure the RHEL VM with the correct users and credentials before creating a VM template of it. Consider adding the +following configuration to the `/etc/sudoers` file so that the root user and the `admin` and `sudo` groups can issue +commands as root without entering a password. + +```shell +root ALL=(ALL:ALL) ALL +%admin ALL=(ALL) ALL +%sudo ALL=(ALL) ALL +Defaults        !authenticate +#Defaults   !visiblepw +``` + +::: + +
+ +- SSH credentials to the RHEL template you are specifying in the Konvoy image builder configuration file. + + :::warning + + Reach out to your VMware administrator if you need assistance with creating the VMware vSphere template. It's critical + you configure the RHEL template correctly to ensure the Konvoy image builder can the template to create the custom + RHEL with Konvoy image. + + ::: + +## Build Image + +The Konvoy image builder supports generating standard or FIPS-compliant Konvoy images. Select the appropriate tab for +instructions on how to build the custom RHEL with Konvoy image. + + + + +1. Open a terminal session in your Linux VM and create a new directory for the Konvoy image builder project. + + ```shell + mkdir --parents ~/builder + cd ~/builder + ``` + +2. Download the Konvoy builder release artifact from the GitHub releases page. In this guide, version 2.8.5 is used. + + ```shell + wget https://github.com/mesosphere/konvoy-image-builder/releases/download/v2.8.5/konvoy-image-bundle-v2.8.5_linux_amd64.tar.gz + ``` + +3. Extract the downloaded tarball and navigate to the builder directory. + + ```shell + tar --extract --file konvoy-image-bundle-v2.8.5_linux_amd64.tar.gz --directory builder && \ + cd builder + ``` + +4. Export your vSphere and RHEL credentials as environment variables. Replace the placeholders with your credentials. + Issue the following commands to set these values in your terminal session. + + ```shell + export VSPHERE_SERVER=your-vsphere-server-IP + export VSPHERE_USERNAME=your-vsphere-username + export VSPHERE_PASSWORD=your-vsphere-password + export RHSM_USER=your-redhat-email + export RHSM_PASS=your-redhat-password + export ANSIBLE_SUDO_PASS=admin + ``` + +5. Modify the Packer configuration file for the version of RHEL you want to use. The RHEL configuration files are + located in the **images/rhel** directory. In this guide, RHEL 8.8 is used. Use the following command to modify the + file. You can use `vi` or any other text editor to modify the file. + + ```shell + vi images/ova/rhel-88.yaml + ``` + +6. Replace the following placeholders in the RHEL configuration file with your vSphere and RHEL template information. + + | Parameter | Description | + | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | + | `packer.cluster` | The name of the vSphere cluster to deploy the Packer VM. | + | `packer.datacenter` | The name of the vSphere Datacenter to deploy the Packer VM. | + | `packer.datastore` | The name of the vSphere datastore to deploy the Packer VM. | + | `packer.folder` | The name of the vSphere folder to deploy the Packer VM. | + | `packer.network` | The name of the vSphere network to deploy the Packer VM. | + | `packer.insecure_connection` | Set to `true` if you are using a self-signed certificate for the vCenter endpoint. | + | `packer.resource_pool` | The name of the vSphere resource pool to deploy the Packer VM. | + | `packer.template` | The name of the RHEL template in vSphere that you created using the ISO file of the RHEL version you want to use. | + | `packer.ssh_username` | The username to SSH into the Packer VM. Specify the username you used to log in to the RHEL VM before converting it to a template. | + | `packer.ssh_password` | The password to SSH into the Packer VM. Specify the password you used to log in to the RHEL VM before converting it to a template. | + +
+ + Example RHEL configuration file + + The parameters that need to be replaced are highlighted in the example configuration file below. + + ```yaml {9-16,22,23} + --- + download_images: true + build_name: "rhel-88" + packer_builder_type: "vsphere" + guestinfo_datasource_slug: "https://raw.githubusercontent.com/vmware/cloud-init-vmware-guestinfo" + guestinfo_datasource_ref: "v1.4.0" + guestinfo_datasource_script: "{{guestinfo_datasource_slug}}/{{guestinfo_datasource_ref}}/install.sh" + packer: + cluster: "Cluster2" + datacenter: "Datacenter" + datastore: "example-datastore" + folder: "internal" + insecure_connection: "true" + network: "DEV-NETWORK" + resource_pool: "rp-dev" + template: "internal/rhel" + vsphere_guest_os_type: "rhel8_64Guest" + guest_os_type: "rhel8-64" + # goss params + distribution: "RHEL" + distribution_version: "8.8" + ssh_username: "**********" + ssh_password: "*********" + linked_clone: false + ansible_sudo_pass: "********" + use_sudo: false + NOPASSWD: ALL + # ssh_private_key_file = "" # can be exported as environment variable 'SSH_PRIVATE_KEY_FILE' + # ssh_agent_auth: false # is set to true, ssh_password and ssh_private_key will be ignored + ``` + +
+ +7. Review the **images/common.yaml** file and modify the file if necessary. The **common.yaml** file is where you + specify the Kubernetes version. Refer to the [Konvoy](../../../integrations/konvoy.md) pack reference page to learn + about supported Konvoy versions. + + ```yaml hideClipboard {2} + --- + kubernetes_version: "1.27.6" + download_images: true + packer: + goss_arch: amd64 + goss_entry_file: goss/goss.yaml + goss_format: json + goss_format_options: pretty + goss_inspect_mode: false + goss_tests_dir: goss + goss_url: + goss_vars_file: ansible/group_vars/all/system.yaml + goss_version: 0.3.16 + ``` + +8. Start the Packer build process by issuing the following command. + + ```shell + ./konvoy-image build images/ova/rhel-88.yaml --extra-vars ansible_sudo_pass="admin" + ``` + + The build process will take some time to complete. Once the build process is complete, you will have a custom RHEL + with Konvoy image located in the vSphere datastore folder you specified in the Packer configuration file. Take note + of the image ID. + + ```shell hideClipboard {11} + ==> vsphere-clone.kib_image: Convert VM into template... + vsphere-clone.kib_image: Closing sessions .... + ==> vsphere-clone.kib_image: Running post-processor: packer-manifest (type manifest) + ==> vsphere-clone.kib_image: Running post-processor: (type shell-local) + ==> vsphere-clone.kib_image (shell-local): Running local shell script: /tmp/packer-shell591621042 + Build 'vsphere-clone.kib_image' finished after 13 minutes 50 seconds. + + ==> Wait completed after 13 minutes 50 seconds + + ==> Builds finished. The artifacts of successful builds are: + --> vsphere-clone.kib_image: konvoy-rhel-88-1.27.6-20240229212552 + --> vsphere-clone.kib_image: konvoy-rhel-88-1.27.6-20240229212552 + --> vsphere-clone.kib_image: konvoy-rhel-88-1.27.6-20240229212552 + ``` + +
+ + +1. Open a terminal session in your Linux VM and create a new directory for the Konvoy image builder project. + + ```shell + mkdir --parents ~/builder + cd ~/builder + ``` + +2. Download the Konvoy builder release artifact from the GitHub releases page. + + ```shell + wget https://github.com/mesosphere/konvoy-image-builder/releases/download/v2.8.5/konvoy-image-bundle-v2.8.5_linux_amd64.tar.gz + ``` + +3. Extract the downloaded tarball and navigate to the builder directory. + + ```shell + tar --extract --file konvoy-image-bundle-v2.8.5_linux_amd64.tar.gz --directory builder && \ + cd builder + ``` + +4. Export your vSphere and RHEL credentials as environment variables. Replace the placeholders with your credentials. + + ```shell + export VSPHERE_SERVER=your-vsphere-server-IP + export VSPHERE_USERNAME=your-vsphere-username + export VSPHERE_PASSWORD=your-vsphere-password + export RHSM_USER=your-redhat-email + export RHSM_PASS=your-redhat-password + export ANSIBLE_SUDO_PASS=admin + ``` + +5. Modify the Packer configuration file for the version of RHEL you want to use. The RHEL configuration files are + located in the **images/rhel** directory. In this guide, RHEL 8.8 is used. Use the following command to modify the + file. You can use `vi` or any other text editor to modify the file. + + ```shell + vi images/ova/rhel-88.yaml + ``` + +6. Replace the following placeholders in the RHEL configuration file with your vSphere and RHEL template information. + + | Parameter | Description | + | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | + | `packer.cluster` | The name of the vSphere cluster to deploy the Packer VM. | + | `packer.datacenter` | The name of the vSphere Datacenter to deploy the Packer VM. | + | `packer.datastore` | The name of the vSphere datastore to deploy the Packer VM. | + | `packer.folder` | The name of the vSphere folder to deploy the Packer VM. | + | `packer.network` | The name of the vSphere network to deploy the Packer VM. | + | `packer.insecure_connection` | Set to `true` if you are using a self-signed certificate for the vCenter endpoint. | + | `packer.resource_pool` | The name of the vSphere resource pool to deploy the Packer VM. | + | `packer.template` | The name of the RHEL template in vSphere that you created using the ISO file of the RHEL version you want to use. | + | `packer.ssh_username` | The username to SSH into the Packer VM. Specify the username you used to log in to the RHEL VM before converting it to a template. | + | `packer.ssh_password` | The password to SSH into the Packer VM. Specify the password you used to log in to the RHEL VM before converting it to a template. | + +
+ + Example RHEL configuration file + + The parameters that need to be replaced are highlighted in the example configuration file below. + + ```yaml {9-16,22,23} + --- + download_images: true + build_name: "rhel-88" + packer_builder_type: "vsphere" + guestinfo_datasource_slug: "https://raw.githubusercontent.com/vmware/cloud-init-vmware-guestinfo" + guestinfo_datasource_ref: "v1.4.0" + guestinfo_datasource_script: "{{guestinfo_datasource_slug}}/{{guestinfo_datasource_ref}}/install.sh" + packer: + cluster: "Cluster2" + datacenter: "Datacenter" + datastore: "example-datastore" + folder: "internal" + insecure_connection: "true" + network: "DEV-NETWORK" + resource_pool: "rp-dev" + template: "internal/rhel" + vsphere_guest_os_type: "rhel8_64Guest" + guest_os_type: "rhel8-64" + # goss params + distribution: "RHEL" + distribution_version: "8.8" + ssh_username: "**********" + ssh_password: "*********" + linked_clone: false + ansible_sudo_pass: "********" + use_sudo: false + NOPASSWD: ALL + # ssh_private_key_file = "" # can be exported as environment variable 'SSH_PRIVATE_KEY_FILE' + # ssh_agent_auth: false # is set to true, ssh_password and ssh_private_key will be ignored + ``` + +
+ +7. Review the **images/common.yaml** file and modify the file if necessary. The **common.yaml** file is where you + specify the Kubernetes version. Refer to the[Konvoy](../../../integrations/konvoy.md) pack reference page to learn + about supported Konvoy versions. + + ```yaml hideClipboard {2} + --- + kubernetes_version: "1.27.6" + download_images: true + packer: + goss_arch: amd64 + goss_entry_file: goss/goss.yaml + goss_format: json + goss_format_options: pretty + goss_inspect_mode: false + goss_tests_dir: goss + goss_url: + goss_vars_file: ansible/group_vars/all/system.yaml + goss_version: 0.3.16 + ``` + +8. Update **ansible/roles/fips/tasks/redhat-8.yaml** to address potential timeout issues. Add the following lines to + the `ansible.builtin.reboot` task. + + ```yaml + ansible.builtin.reboot: + post_reboot_delay: 120 + pre_reboot_delay: 30 + connect_timeout: 120 + ``` + + {/* prettier-ignore */} +
+ Complete FIPS configuration file + + ```yaml {16-19} + - name: "redhat 8 fips: ensure fips_enabled is 1" + lineinfile: + dest: /proc/sys/crypto/fips_enabled + line: "1" + state: present + become: yes + check_mode: yes + register: sysfips + + - name: "redhat 8 fips: run fips enable command" + command: fips-mode-setup --enable + when: + - sysfips is changed + + - name: "redhat 8 fips: reboot to pick up fips changes" + ansible.builtin.reboot: + post_reboot_delay: 120 + pre_reboot_delay: 30 + connect_timeout: 120 + when: + - sysfips is changed + ``` + +
+ + :::tip + + Additional FIPS configuration can be found in the **overrides/fips.yaml** and **overrides/fips-configure.yaml** + files. + + ::: + +9. Start the Packer build process by issuing the following command. + + ```shell + ./konvoy-image build images/ova/rhel-88.yaml \ + --extra-vars ansible_sudo_pass="admin" \ + --overrides=overrides/fips.yaml \ + --overrides=overrides/fips-configure.yaml + ``` + + The build process will take some time to complete. Once the build process is complete, you will have a FIPS + compliant custom RHEL with Konvoy image located in the vSphere datastore folder you specified in the Packer + configuration file. Take note of the image ID. + + ```shell hideClipboard {11} + ==> vsphere-clone.kib_image: Convert VM into template... + vsphere-clone.kib_image: Closing sessions ... + ==> vsphere-clone.kib_image: Running post-processor: packer-manifest (type manifest) + ==> vsphere-clone.kib_image: Running post-processor: (type shell-local) + ==> vsphere-clone.kib_image (shell-local): Running local shell script: /tmp/packer-shell2158067181 + Build 'vsphere-clone.kib_image' finished after 18 minutes 44 seconds. + + ==> Wait completed after 18 minutes 44 seconds + + ==> Builds finished. The artifacts of successful builds are: + --> vsphere-clone.kib_image: konvoy-rhel-88-fips-kernel-1.27.6+fips.0-20240301141207 + --> vsphere-clone.kib_image: konvoy-rhel-88-fips-kernel-1.27.6+fips.0-20240301141207 + --> vsphere-clone.kib_image: konvoy-rhel-88-fips-kernel-1.27.6+fips.0-20240301141207 + ``` + +
+
+ +## Validate + +1. Log in to the vSphere web client and navigate to the datastore folder where the custom RHEL with Konvoy image is + located. Verify that the image is present in the folder. + +2. Create a cluster profile and use the BYOOS pack to reference the custom RHEL with Konvoy image. Specify the path to + the custom RHEL with Konvoy image in the pack's YAML file. Refer to + [Usage with Cluster Profile](#usage-with-cluster-profile) section for more details. + +3. Deploy a cluster using the cluster profile you created. + +## Usage with Cluster Profile + +To use the custom RHEL with Konvoy image, create a +[cluster profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md) and use the +[BYOOS](../../../integrations/byoos.md) pack to reference the custom RHEL with Konvoy image. Specify the vSphere path to +the custom RHEL with Konvoy image in the pack's YAML file. The following example YAML content demonstrates how to use +the custom RHEL with Konvoy image in a cluster profile. + + ```yaml hideClipboard {2} + pack: + osImageOverride: "/Datacenter/vm/internal/rhel/konvoy-rhel-88-1.27.6-20240229212552" + osName: "konvoy-rhel-vmware" + osVersion: "8.8" + ``` + +When selecting the Kubernetes distribution and version, pick Konvoy as the Kubernetes distribution and the version of +Kubernetes you specified in the Packer configuration file. + +:::warning + +Make sure you select the same version of Konvoy as specified in the Packer configuration file **images/common.yaml**. + +::: + +![A view of the cluster profile kubernetes selection screen](/byoos_vmware_konvoy_cluster-profile-view.webp) diff --git a/docs/docs-content/byoos/usecases/vmware/vmware.md b/docs/docs-content/byoos/usecases/vmware/vmware.md new file mode 100644 index 0000000000..b5e3e41277 --- /dev/null +++ b/docs/docs-content/byoos/usecases/vmware/vmware.md @@ -0,0 +1,15 @@ +--- +sidebar_label: "VMware" +title: "VMware" +description: "Learn how to build and use custom OS images for Kubernetes clusters on VMware vSphere." +hide_table_of_contents: false +sidebar_position: 10 +tags: ["operating system", "byoos", "profiles", "use cases", "vmware"] +--- + +Review the resource sections below for examples of how to build and use custom OS images for Kubernetes clusters that +use VMware vSphere as the infrastructure platform. + +## Resources + +- [RHEL and Konvoy](./konvoy.md) diff --git a/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md b/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md index 9a409d8a78..d57621fb67 100644 --- a/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md +++ b/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md @@ -102,6 +102,9 @@ cloud account. [Troubleshooting key access](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html) guide to learn more about common KMS issues. +- If you are using a custom Certificate Authority (CA) for SSL/TLS connections, provide the x509 certificate in + Privacy-Enhanced Mail (PEM) format to Palette. + :::tip Use the IAM Policy Simulator to verify the IAM role has the necessary permissions to access a customer managed KMS @@ -130,7 +133,7 @@ cloud account. | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Location Name** | Provide a name of your choice. | | **Location Provider** | Select AWS from the **drop-down** Menu. | - | **Certificate** | Optional service provider x509 certificate. | + | **Certificate** | Provide the CA bundle in PEM format if you are using a custom certificate bundle to establish SSL/TLS sessions. | | **S3 Bucket** | The name of the S3 bucket you created in the object store. The bucket name must be DNS-compliant. For more information, refer to the [Bucket naming rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html) defined by AWS. | | **Region** | Region where the S3 bucket is hosted. You can check region codes in the [Service endpoints](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) section in the AWS documentation. | | **S3 URL** | Optional S3 URL. If you choose to provide a value, refer to the [Methods for accessing a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html#virtual-host-style-url-ex) guide to determine the bucket URL and enable the **Force S3 path style** checkbox. | @@ -231,6 +234,9 @@ multiple cloud accounts. - An S3 bucket in AWS Account B. The bucket will store the backup of your clusters or workspaces. +- If you are using a custom Certificate Authority (CA) for SSL/TLS connections, provide the x509 certificate in + Privacy-Enhanced Mail (PEM) format to Palette. + - The following IAM policy must be created in your AWS Account B. Replace the `BUCKET-NAME` placeholder in the policy below with your bucket name. Refer to the [Creating IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) for diff --git a/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-static.md b/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-static.md index 8dc2204320..d0cb7739bb 100644 --- a/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-static.md +++ b/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-static.md @@ -99,6 +99,9 @@ The following sections provide detailed instructions. Select the environment whe [Troubleshooting key access](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html) guide to learn more about common KMS issues. +- If you are using a custom Certificate Authority (CA) for SSL/TLS connections, provide the x509 certificate in + Privacy-Enhanced Mail (PEM) format to Palette. + :::tip Use the IAM Policy Simulator to verify the IAM role has the necessary permissions to access a customer managed KMS @@ -122,7 +125,7 @@ The following sections provide detailed instructions. Select the environment whe | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Location Name** | Provide a name of your choice. | | **Location Provider** | Select AWS from the **drop-down** Menu. | - | **Certificate** | Optional Service provider certificate. | + | **Certificate** | Provide the CA bundle in PEM format if you are using a custom certificate bundle to establish SSL/TLS sessions. | | **S3 Bucket** | Name of the S3 bucket you created in the object store. The bucket name must be DNS-compliant. For more information, refer to the [Bucket naming rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html) defined by AWS. | | **Region** | Region where the S3 bucket is hosted. You can check the region code from the [Service endpoints](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) section in the AWS documentation. | | **S3 URL** | Optional bucket URL. If you choose to provide a value, refer to the [Methods for accessing a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html#virtual-host-style-url-ex) guide to determine the bucket URL. If you provided an S3 URL, enable the **Force S3 path style** checkbox. | @@ -234,7 +237,9 @@ Use the following steps to validate adding the new backup location. [MinIO official documentation](https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/minio-user-management.html#access-keys) to learn about creating access keys. -- An optional service provider x509 certificate. +- If you are using a custom Certificate Authority (CA) for SSL/TLS connections, provide the x509 certificate in + Privacy-Enhanced Mail (PEM) format to Palette. This is required if the MinIO endpoint is using a self-signed + certificate. ### Add a MinIO Bucket @@ -246,15 +251,15 @@ Use the following steps to validate adding the new backup location. 4. Fill out the following input fields. Refer to the table below to learn more. - | **Field** | **Value** | - | ----------------------- | --------------------------------------------------------------------------- | - | **Location Name** | Provide a name of your choice. | - | **Location Provider** | Select MinIO from the drop-down field. | - | **Certificate** | Service provider certificate, if your organization prefers it. | - | **S3 Bucket** | The name of the S3 bucket you created in the MinIO object store. | - | **Region** | The region where the MinIO server is configured. Example: `us-east-1` | - | **S3 URL** | The MinIO object storage console URL. Example: `http://12.123.234.567:0000` | - | **Force S3 path style** | This value is required for MinIO. | + | **Field** | **Value** | + | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Location Name** | Provide a name of your choice. | + | **Location Provider** | Select MinIO from the drop-down field. | + | **Certificate** | Provide the CA bundle in PEM format if you are using a custom certificate bundle to establish SSL/TLS sessions. This is required for endpoints using a self-signed certificate. | + | **S3 Bucket** | The name of the S3 bucket you created in the MinIO object store. | + | **Region** | The region where the MinIO server is configured. Example: `us-east-1` | + | **S3 URL** | The MinIO object storage console URL. Example: `http://12.123.234.567:0000` | + | **Force S3 path style** | This value is required for MinIO. |
@@ -310,6 +315,7 @@ guide to learn how to create an Azure storage account - An Azure service principal with sufficient permissions to perform the required read and write operations on the container. You will need the values of the following items: + - Client ID - Client Secret diff --git a/docs/docs-content/clusters/cluster-management/backup-restore/enable-etcd-backup.md b/docs/docs-content/clusters/cluster-management/backup-restore/enable-etcd-backup.md index 92cb06ff98..796eea4c1a 100644 --- a/docs/docs-content/clusters/cluster-management/backup-restore/enable-etcd-backup.md +++ b/docs/docs-content/clusters/cluster-management/backup-restore/enable-etcd-backup.md @@ -104,8 +104,8 @@ cluster profile's Kubernetes layer. 5. If you have not deployed a cluster, finish the cluster profile creation and deploy a cluster. For more information, - refer to [Create Cluster Profile](../../../profiles/cluster-profiles/create-cluster-profiles/) for non-Edge and - [Model Cluster Profile](../../edge/site-deployment/model-profile.md). + refer to [Create Cluster Profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md) + for non-Edge and [Model Cluster Profile](../../edge/site-deployment/model-profile.md). If you are editing the profile of an active cluster, updating the profile will trigger and update to the active cluster. We recommend that you publish a new version of the profile instead of updating a profile directly. For more diff --git a/docs/docs-content/clusters/cluster-management/cluster-updates.md b/docs/docs-content/clusters/cluster-management/cluster-updates.md index 1ef15fb0dd..c991f716e2 100644 --- a/docs/docs-content/clusters/cluster-management/cluster-updates.md +++ b/docs/docs-content/clusters/cluster-management/cluster-updates.md @@ -9,7 +9,9 @@ tags: ["clusters", "cluster management"] Palette allows you to update active clusters. You can update any layer of a cluster, including all infrastructure layers and add-on layers. Depending on the nature of the update, a cluster update could trigger different cluster repave -operations. +operations. For more information, refer to +[Repave Behaviors and Configurations](./node-pool.md#repave-behavior-and-configuration) for non-Edge clusters and +[Edge Cluster Upgrade Behavior](../edge/upgrade-behavior.md) for Edge clusters. operations. :::info diff --git a/docs/docs-content/clusters/cluster-management/compliance-scan.md b/docs/docs-content/clusters/cluster-management/compliance-scan.md index 9187a1a021..a130ebfc3b 100644 --- a/docs/docs-content/clusters/cluster-management/compliance-scan.md +++ b/docs/docs-content/clusters/cluster-management/compliance-scan.md @@ -24,6 +24,15 @@ the row of the node you want to scan, and select **Turn off maintenance mode**. ::: +## Airgap Environment + +If you are using self-hosted Palette or VerteX in an airgap environment, you must ensure the conformance packs are +available in the self-hosted OCI registry before triggering scans. Refer to the +[Palette Supplemental Packs](../../enterprise-version/install-palette/airgap/supplemental-packs.md#conformance-capabilities) +page or the +[VerteX Supplemental Packs](../../vertex/install-palette-vertex/airgap/supplemental-packs.md#conformance-capabilities) +page for guidance on how to upload the conformance packs to the self-hosted OCI registry. + ## Configuration Security This scan examines the compliance of deployed Kubernetes security features against the CIS Kubernetes Benchmarks. CIS diff --git a/docs/docs-content/clusters/cluster-management/kubeconfig.md b/docs/docs-content/clusters/cluster-management/kubeconfig.md index 72fd03dd7b..2dbfbcdb68 100644 --- a/docs/docs-content/clusters/cluster-management/kubeconfig.md +++ b/docs/docs-content/clusters/cluster-management/kubeconfig.md @@ -51,7 +51,7 @@ which clusters you can access and what operations you can perform on the cluster Palette determine if you can download and access the kubeconfig files for a cluster. As a rule, users with the Palette role -[_Cluster Admin_](../../user-management/palette-rbac/project-scope-roles-permissions#cluster) can access the admin +[_Cluster Admin_](../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster) can access the admin kubeconfig files for all clusters in the project. Users with lower-level project roles such as the _Cluster Editor_ or the _Cluster Viewer_ may not be able to access the kubeconfig file of the cluster. @@ -62,7 +62,7 @@ Palette has its own RBAC system that is separate from the permissions assigned to you in Palette determine what operations you can perform on the cluster. The permissions assigned to you in the host cluster through the Kubernetes RBAC system determine what operations you can perform inside the cluster and on its resources. Refer to the -[Palette Roles and Kubernetes Roles](cluster-rbac#palette-roles-and-kubernetes-roles) for additional information. +[Palette Roles and Kubernetes Roles](cluster-rbac.md#palette-roles-and-kubernetes-roles) for additional information. ::: diff --git a/docs/docs-content/clusters/cluster-management/namespace-management.md b/docs/docs-content/clusters/cluster-management/namespace-management.md index f57d810ec2..3841493bb0 100644 --- a/docs/docs-content/clusters/cluster-management/namespace-management.md +++ b/docs/docs-content/clusters/cluster-management/namespace-management.md @@ -16,7 +16,7 @@ namespaces are: of resources – without having to set up multiple physical clusters. - You can configure Role-Based Access Control (RBAC) based on namespaces. For information about configuring namespaces - and RBAC, check out [RBAC and NS Support](cluster-rbac). + and RBAC, check out [RBAC and NS Support](cluster-rbac.md). - Namespaces can be used for different purposes such as testing, development, and production. diff --git a/docs/docs-content/clusters/cluster-management/node-pool.md b/docs/docs-content/clusters/cluster-management/node-pool.md index 8968fc2db7..d6e425d9d1 100644 --- a/docs/docs-content/clusters/cluster-management/node-pool.md +++ b/docs/docs-content/clusters/cluster-management/node-pool.md @@ -27,6 +27,13 @@ have failed. You can configure the repave time interval for a node pool. Different types of repaving operations may occur, depending on what causes them: +:::info + +This section only applies to non-Edge clusters. To learn about the upgrade behavior of Edge clusters, refer to the +[Edge Cluster Upgrade Behavior](../edge/upgrade-behavior.md) page. + +::: + - **Control plane repave**: This takes place when certain changes are made to the Kubernetes configuration, such as changing the **apiServer** specification. This type of repave also occurs when there are changes in the hardware specifications of the control plane nodes, such as during a node scale-up operation or when changing from one instance diff --git a/docs/docs-content/clusters/cluster-management/update-k8s-cluster.md b/docs/docs-content/clusters/cluster-management/update-k8s-cluster.md index c2481e25b1..9f5fb3b18f 100644 --- a/docs/docs-content/clusters/cluster-management/update-k8s-cluster.md +++ b/docs/docs-content/clusters/cluster-management/update-k8s-cluster.md @@ -527,7 +527,7 @@ After reviewing the changes, click **Apply Changes**. Palette has backup and restore capabilities available for your mission critical workloads. Ensure that you have adequate backups before you make any cluster profile version changes in your production environments. You can learn more in the -[Backup and Restore](./backup-restore/backup-restore.md) section. +[Backup and Restore](backup-restore/backup-restore.md) section. ::: @@ -1102,7 +1102,7 @@ To learn more about Palette, we encourage you to check out the reference resourc - [Palette Clusters](../clusters.md) -- [Backup and Restore](./backup-restore) +- [Backup and Restore](./backup-restore/backup-restore.md) - [Deploy a Custom Pack](../../registries-and-packs/deploy-pack.md) diff --git a/docs/docs-content/clusters/data-center/data-center.md b/docs/docs-content/clusters/data-center/data-center.md index 70b318ff5a..f47603c11f 100644 --- a/docs/docs-content/clusters/data-center/data-center.md +++ b/docs/docs-content/clusters/data-center/data-center.md @@ -30,4 +30,4 @@ environments. - [OpenStack](openstack.md) -- [VMware](vmware.md) +- [VMware](./vmware/vmware.md) diff --git a/docs/docs-content/clusters/data-center/maas/architecture.md b/docs/docs-content/clusters/data-center/maas/architecture.md index 5223307aa8..2362030fbb 100644 --- a/docs/docs-content/clusters/data-center/maas/architecture.md +++ b/docs/docs-content/clusters/data-center/maas/architecture.md @@ -32,3 +32,10 @@ using Canonical MAAS. Refer to the PCG deployment options section below to learn ![Network flow from an architectural perspective of how MAAS works with Palette](/maas_cluster_architecture.webp) Refer to the [PCG Architecture](../../pcg/architecture.md) section to learn more about the PCG architecture. + +## Custom MAAS Endpoint + +If the MAAS API server URL is not resolvable outside of the MAAS environment, you can specify a different URL in the +cluster profile's Kubernetes YAML. This feature is only supported in Palette eXtented Kubernetes (PKX). For more +information, refer to the [Custom MAAS Endpoint](../../../integrations/kubernetes.md#custom-maas-endpoint) section of +the PXK reference page. diff --git a/docs/docs-content/clusters/data-center/maas/create-manage-maas-clusters.md b/docs/docs-content/clusters/data-center/maas/create-manage-maas-clusters.md index 8d21ae4ee1..32d7c0bc0f 100644 --- a/docs/docs-content/clusters/data-center/maas/create-manage-maas-clusters.md +++ b/docs/docs-content/clusters/data-center/maas/create-manage-maas-clusters.md @@ -29,30 +29,39 @@ create a Kubernetes cluster in MAAS that is managed by Palette. your MAAS environment. Review the [How to use standard images](https://maas.io/docs/how-to-use-standard-images) for guidance on downloading OS images for MAAS. +:::warning + +If the MAAS API server URL is not resolvable outside of the MAAS environment, you can specify a different URL in the +cluster profile's Kubernetes YAML. This feature is only supported in Palette eXtented Kubernetes (PXK). For more +information, refer to the [Custom MAAS Endpoint](../../../integrations/kubernetes.md#custom-maas-endpoint) section of +the PXK reference page. + +::: + ## Deploy a MAAS Cluster -To deploy a new MAAS cluster: +1. Log in to [Palette](https://console.spectrocloud.com). -1. Log in to [Palette](https://console.spectrocloud.com) as a tenant admin. +2. Ensure you are in the correct project scope. -2. Navigate to the **Main Menu** and click **Clusters**. Then click the **Add New Cluster** button. +3. From the left **Main Menu**, select **Clusters** and click **Add New Cluster**. -3. Click **Deploy New Cluster** on the Create a New Cluster page. +4. In **Data Center**, select **MAAS**. -4. Select **MAAS** and click the **Start MAAS Configuration** button. +5. In the bottom-right corner, click **Start MAAS Configuration**. -5. Provide basic cluster information: **Cluster name**, **Description**, and **Tags**. +6. Provide basic cluster information: **Cluster name**, **Description**, and **Tags**. -6. Select your MAAS cloud account from the **drop-down Menu** and click **Next**. +7. Select your MAAS cloud account from the **drop-down Menu** and click **Next**. -7. Select the cluster profile for your MAAS cluster. +8. Select the cluster profile for your MAAS cluster. -8. Review and override pack parameters as desired and click **Next**. By default, parameters for all packs are set with - values defined in the cluster profile. +9. Review and override pack parameters as desired and click **Next**. By default, parameters for all packs are set with + values defined in the cluster profile. -9. Select a domain from the **Domain drop-down Menu** and click **Next**. +10. Select a domain from the **Domain drop-down Menu** and click **Next**. -10. Configure the control plane and worker node pools. The following input fields apply to MAAS control plane and worker +11. Configure the control plane and worker node pools. The following input fields apply to MAAS control plane and worker node pools. For a description of input fields that are common across target platforms refer to the [Node Pools](../../cluster-management/node-pool.md) management page. Click **Next** when you are done. @@ -68,8 +77,6 @@ To deploy a new MAAS cluster: [MAAS Tags](https://maas.cloud.cbh.kth.se/MAAS/docs/cli/how-to-tag-machines.html#heading--how-to-create-automatic-tags) documentation. -
- #### Worker Pool configuration - Cloud configuration: @@ -81,7 +88,7 @@ To deploy a new MAAS cluster: provided tags. To learn more about MAAS tags, refer to the [MAAS Tags](https://maas.io/docs/how-to-tag-machines) documentation. -11. You can configure the following cluster management features now if needed, or you can do it later: +12. You can configure the following cluster management features now if needed, or you can do it later: - Manage machines - Schedule scans @@ -89,7 +96,7 @@ To deploy a new MAAS cluster: - Role-based access control (RBAC) - Location -12. Review settings and deploy the cluster. +13. Review settings and deploy the cluster. ## Validate @@ -97,16 +104,12 @@ You can validate your cluster is available by reviewing the cluster details page click **Clusters**. The **Clusters** page lists all available clusters that Palette manages. Select the cluster to review its details page. Ensure the **Cluster Status** field contains the value **Running**. -
- ## Delete a MAAS Cluster When you delete a MAAS cluster, all machines and associated storage disks that were created for the cluster are removed. Follow these steps to delete a MAAS cluster. -
- 1. Log in to [Palette](https://console.spectrocloud.com) as a tenant admin. 2. Navigate to the **Main Menu** and click **Clusters**. @@ -120,8 +123,6 @@ successfully deleted, the cluster status is updated to **Deleted** and the clust operation returns the edge hosts to the **Ready** state. All the artifacts related to the Kubernetes distribution are removed. -
- ## Upgrade a MAAS Cluster Upgrade a MAAS cluster to enhance the performance and functionality of the cluster. To learn more about managing a MAAS @@ -131,8 +132,6 @@ To protect your data, we recommend you create a backup of your MAAS cluster befo infrastructure changes. Review instructions provided in the [Backup and Restore](../../cluster-management/backup-restore/backup-restore.md). -
- :::warning Ensure that the Operating System (OS) image selected for your cluster are downloaded and available for your MAAS diff --git a/docs/docs-content/clusters/data-center/maas/register-manage-maas-cloud-accounts.md b/docs/docs-content/clusters/data-center/maas/register-manage-maas-cloud-accounts.md index eda1255283..97005478f2 100644 --- a/docs/docs-content/clusters/data-center/maas/register-manage-maas-cloud-accounts.md +++ b/docs/docs-content/clusters/data-center/maas/register-manage-maas-cloud-accounts.md @@ -21,9 +21,7 @@ additional cloud accounts that reference specific PCGs. [PCG Architecture](../../pcg/architecture.md#pcg-deployment-options) page. - An active [MAAS API key](https://maas.io/docs/api-authentication-reference) which can be generated in the MAAS web - console under **My Preferences** > **API keys**. The following is an example key: - - `APn53wz232ZwBMxDp5:MHZIbUp3e4DJTjZEKg:mdEv33WAG536MhNC8mIywNLtjcDTnFAQ` + console under **My Preferences**, and selecting **API keys**. For details, refer to the MAAS document on [how to add an API key](https://maas.io/docs/how-to-manage-user-accounts#heading--api-key). diff --git a/docs/docs-content/clusters/data-center/nutanix/create-manage-nutanix-cluster.md b/docs/docs-content/clusters/data-center/nutanix/create-manage-nutanix-cluster.md index 666d791ea5..daa88ede13 100644 --- a/docs/docs-content/clusters/data-center/nutanix/create-manage-nutanix-cluster.md +++ b/docs/docs-content/clusters/data-center/nutanix/create-manage-nutanix-cluster.md @@ -8,9 +8,11 @@ tags: ["data center", "nutanix"] --- Palette supports creating and managing Kubernetes clusters deployed to a Nutanix infrastructure environment. This -section guides you in creating a Kubernetes cluster in a Nutanix cloud managed by Palette. +section guides you in creating and updating a Kubernetes cluster in a Nutanix cloud managed by Palette. -## Prerequisites +## Deploy a Nutanix Cluster + +### Prerequisites - A Nutanix cloud account added to Palette. Refer to [Add Nutanix Cloud Account](add-nutanix-cloud-account.md). @@ -29,115 +31,207 @@ section guides you in creating a Kubernetes cluster in a Nutanix cloud managed b - A Nutanix Prism Element cluster created. -- A Nutanix subnet created in Nutanix Prism Central that will be assigned to the virtual machines (VMs) that will make +- A Nutanix subnet created in Nutanix Prism Central that will be assigned to the Virtual Machines (VMs) that will make up the Kubernetes cluster. - A Nutanix Cluster API (CAPI) OS image. For guidance on creating the image, refer to [Building CAPI Images for Nutanix Cloud Platform](https://image-builder.sigs.k8s.io/capi/providers/nutanix.html#building-capi-images-for-nutanix-cloud-platform-ncp). -## Deploy a Nutanix Cluster +### Enablement -Use the following steps to deploy a Kubernetes cluster in Nutanix. +Follow the steps below to deploy a Nutanix cluster. -1. Log in to [Palette](https://console.spectrocloud.com/). +1. Log in to [Palette](https://console.spectrocloud.com). -2. From the left **Main Menu** select **Clusters**. +2. Ensure you are in the correct project scope. -3. Click on **Add New Cluster** and select **Deploy New Cluster** on the next page that Palette displays. +3. From the left **Main Menu**, select **Clusters** and click **Add New Cluster**. -4. Select **Nutanix** and click the **Start Nutanix Configuration** button. +4. In **Tech Preview**, select **Nutanix**. -5. Fill out the following basic information, and click **Next** to continue. +5. In the bottom-right corner, click **Start Nutanix Configuration**. - | **Field** | **Description** | - | ----------------- | ------------------------------------------------------------------------------------------------------------------------ | - | **Cluster Name** | A custom name for the cluster. Use this cluster name for the `${CLUSTER_NAME}` variable in the YAML configuration files. | - | **Description** | Use the description to provide context about the cluster. | - | **Tags** | Assign any desired cluster tags. | - | **Cloud Account** | Select your Nutanix account from the **drop-down Menu**. | +6. Fill out the following basic information, and click **Next** to continue. -6. Select the Nutanix cluster profile you created and click **Next**. Palette displays the profile layers. + | **Field** | **Description** | + | ----------------- | --------------------------------------------------------- | + | **Cluster Name** | A custom name for your cluster. | + | **Description** | Use the description to provide context about the cluster. | + | **Tags** | Assign any desired cluster tags. | + | **Cloud Account** | Select your Nutanix account from the **drop-down Menu**. | -7. Review profile layers, leaving the OS and Kubernetes packs empty, and customize parameters as desired in the YAML - files that display when you select the network and storage layers. Click **Next** when you are done. +7. Select the Nutanix cluster profile you created and click **Next**. Palette displays the profile layers. -8. In the Cluster configuration YAML file that Palette displays, edit the file to replace variables within curly braces - listed in the table below with values that apply to your Nutanix cloud environment, and make any adjustments to - configure your cluster. Click **Next** when you are done. +8. Review profile layers, leaving the OS and Kubernetes packs empty, and customize parameters as desired in the YAML + files that display when you select the network and storage layers. Click **Next** when you are done. - | **Variable** | **Description** | - | ------------------------------ | -------------------------------------------------------------------------------------------- | - | `${CLUSTER_NAME}` | The name of the Nutanix workload cluster. Use the same cluster name you specified in step 5. | - | `${CONTROL_PLANE_ENDPOINT_IP}` | The Kubernetes API IP endpoint for the cluster you are creating. | - | `${NUTANIX_ENDPOINT}` | The Nutanix Prism Central IP address. | +9. In the **Cluster Configuration Macros** pane, enter values that apply to your Nutanix cloud environment and, if + necessary, adjust the **Cluster configuration** YAML file to configure your cluster. Click **Next** when you are + ready to proceed. - :::warning + :::info - The following applies when replacing variables within curly braces in the YAML configuration files. + The inactive fields are auto-populated from your Nutanix cloud account configuration. When entering other macros, + make sure to verify the default values. - - All the variables must be resolved or have a default value. + ::: - - Verify default values such as the port. + | **Field** | **Description** | + | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **NUTANIX_ADDITIONAL_TRUST_BUNDLE** | An optional environment variable that allows CAPX to verify certificates that are not issued by a publicly trusted certificate authority. For more information, refer to the [Nutanix Certificate Trust](https://opendocs.nutanix.com/capx/v1.2.x/pc_certificates/#configure-an-additional-trust-bundle) guide. | + | **CONTROL_PLANE_ENDPOINT_IP** | The host IP of the CAPX Kubernetes cluster. | + | **CONTROL_PLANE_ENDPOINT_PORT** | Port of the CAPX Kubernetes cluster that you assigned in `cloudClusterTemplate.yaml`. Defaults to `6443`. | - - Names you provide must match. Any names in the YAML files that do not match your Nutanix cluster configuration will - result in unsuccessful cluster deployment. +10. In the **Node Pool Configuration Macros** panes for the control plane and worker pools, enter the values that apply + to your Nutanix cloud environment and, if necessary, adjust their **Node pool configuration** YAML files. - - Values that are passed as a string, such as names and keys, must be enclosed in quotes, for example `" "`. + You can configure scaling in the Palette UI by specifying the number of nodes in the pool. This corresponds to + `replicas` in the YAML file. - - When replacing values, remove the dollar sign and curly braces. + :::info - ::: + The inactive fields are auto-populated from the cluster configuration specified in the previous step. When entering + other macros, make sure to verify the default values. -9. In the Node pool configuration YAML files for the control plane and worker pools, edit the files to replace each - occurrence of the variables within curly braces listed in the tables below with values that apply to your Nutanix - cloud environment. You can configure scaling in the Palette UI by specifying the number of nodes in the pool. This - corresponds to `replicas` in the YAML file. + ::: - #### Control Plane Pool + #### Control Plane Pool - | **Variable** | **Description** | - | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | `${CLUSTER_NAME}` | The name of the Nutanix workload cluster. Use the same cluster name you specified in step 5. | - | `${CONTROL_PLANE_ENDPOINT_IP}` | The Kubernetes API IP endpoint for the cluster you are creating. | - | `${NUTANIX_SSH_AUTHORIZED_KEY}` | Provide your public SSH key. | - | `${KUBERNETES_VERSION}` | Specify the Kubernetes version for your cluster, and precede the version number with `v`. For example `v1.26.3` | - | `${NUTANIX_PRISM_ELEMENT_CLUSTER_NAME}` | The name of your Nutanix AHV cluster as defined in Prism. | - | `${NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME}` | The name of your OS image as defined in Prism Central. To locate images, navigate in the Nutanix Prism dashboard to **Compute & Storage** and select **Images**. | - | `${NUTANIX_SUBNET_NAME}` | The name of the subnet as defined in Prism Central that will be assigned to the virtual machines (VMs) deployed in this cluster. | + | **Field** | **Description** | + | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **TLS_CIPHER_SUITES** | Cryptographic algorithms for securing network communications. Refer to [Nutanix Cryptographic Module for OpenSSL](https://csrc.nist.gov/CSRC/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp3460.pdf) for more options and details. | + | **KUBEVIP_SVC_ENABLE** | This setting enables a service of type `LoadBalancer`. Refer to the [Kubernetes Service Load Balancing docs](https://kube-vip.io/docs/about/architecture/#kubernetes-service-load-balancing) for details. | + | **KUBEVIP_LB_ENABLE** | This setting allows control plane load balancing using IPVS. Refer to the [Control Plane Load-Balancing docs](https://kube-vip.io/docs/about/architecture/#control-plane-load-balancing) for details. | + | **KUBEVIP_SVC_ELECTION** | This setting enables watching services of type `LoadBalancer`. | + | **NUTANIX_SSH_AUTHORIZED_KEY** | Your public SSH key. | + | **KUBERNETES_VERSION** | Your cluster Kubernetes version preceded with `v`, for example, `v1.26.3`. | + | **NUTANIX_MACHINE_BOOT_TYPE** | The VM boot type. Depends on the OS image you're using. Allowed values: `legacy`, `uefi`. Defaults to `legacy`. | + | **NUTANIX_PRISM_ELEMENT_CLUSTER_NAME** | The name of your Nutanix AHV cluster as defined in Prism. | + | **NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME** | The name of your OS image as defined in Prism Central. To locate images, in the Nutanix Prism dashboard, navigate to **Compute & Storage** and select **Images**. | + | **NUTANIX_MACHINE_MEMORY_SIZE** | Amount of memory. Defaults to `4Gi`. | + | **NUTANIX_SUBNET_NAME** | The name of the subnet defined in Prism Central, which will be assigned to the VMs deployed in this cluster. | + | **NUTANIX_SYSTEMDISK_SIZE** | Amount of storage assigned to the system disk. Defaults to `40Gi`. | + | **NUTANIX_MACHINE_VCPU_SOCKET** | Number of vCPU sockets. Defaults to `2`. | + | **NUTANIX_MACHINE_VCPU_PER_SOCKET** | Number of vCPUs per socket. Defaults to `1`. | - #### Worker-Pool + #### Worker Pool - | **Variable** | **Description** | - | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | `${NUTANIX_SSH_AUTHORIZED_KEY}` | Provide your public SSH key. | - | `${KUBERNETES_VERSION}` | Specify the Kubernetes version for your cluster, and precede the version number with `v`. For example `v1.26.3` | - | `${NUTANIX_PRISM_ELEMENT_CLUSTER_NAME}` | The name of your Nutanix AHV cluster as defined in Prism. | - | `${NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME}` | The name of your OS image as defined in Prism Central. To locate images, navigate in the Nutanix Prism dashboard to **Compute & Storage** and select **Images**. | - | `${NUTANIX_SUBNET_NAME}` | The name of the subnet as defined in Prism Central that will be assigned to the VMs deployed in this cluster. | + | **Field** | **Description** | + | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **KUBERNETES_VERSION** | Your cluster Kubernetes version preceded with `v`, for example, `v1.26.3`. | + | **NUTANIX_MACHINE_BOOT_TYPE** | The VM boot type. Depends on the OS image you're using. Allowed values: `legacy`, `uefi`. Defaults to `legacy`. | + | **NUTANIX_PRISM_ELEMENT_CLUSTER_NAME** | The name of your Nutanix AHV cluster as defined in Prism. | + | **NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME** | The name of your OS image as defined in Prism Central. To locate images, in the Nutanix Prism dashboard, navigate to **Compute & Storage** and select **Images**. | + | **NUTANIX_MACHINE_MEMORY_SIZE** | Amount of memory. Defaults to `4Gi`. | + | **NUTANIX_SUBNET_NAME** | The name of the subnet defined in Prism Central, which will be assigned to the VMs deployed in this cluster. | + | **NUTANIX_SYSTEMDISK_SIZE** | Amount of storage assigned to the system disk. Defaults to `40Gi`. | + | **NUTANIX_MACHINE_VCPU_SOCKET** | Number of vCPU sockets. Defaults to `2`. | + | **NUTANIX_MACHINE_VCPU_PER_SOCKET** | Number of vCPUs per socket. Defaults to `1`. | + | **TLS_CIPHER_SUITES** | Cryptographic algorithms for securing network communications. Refer to [Nutanix Cryptographic Module for OpenSSL](https://csrc.nist.gov/CSRC/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp3460.pdf) for more options and details. | + | **NUTANIX_SSH_AUTHORIZED_KEY** | Your public SSH key. | -10. Click **Next** when you are done. +11. Click **Next** when you are done. -11. Review the options for OS patching schedule, scanning, backups, and RBAC. +12. Review the options for OS patching schedule, scanning, backups, and RBAC. -12. Click **Validate** and review the cluster configuration and settings summary. +13. Click **Validate** and review the cluster configuration and settings summary. -13. Click **Finish Configuration** to deploy the cluster. The cluster details page contains the status and details of +14. Click **Finish Configuration** to deploy the cluster. The cluster details page contains the status and details of the deployment. Use this page to track deployment progress. Provisioning clusters can take several minutes to complete. -14. To edit node pool configurations, navigate to the cluster details page, click the **Nodes** tab, and select the node - pool you want to edit. Click the **Edit** button and edit the YAML file that Palette displays. - -15. To edit cluster settings, from the cluster details page, click the **Settings** button and select **Cluster - Configuration**. Edit the YAML file that Palette displays. - -## Validate +### Validate 1. Log in to [Palette](https://console.spectrocloud.com/). -2. Navigate to the **left Main Menu** and select **Clusters**. The Clusters page displays a list of all available +2. Navigate to the left **Main Menu** and select **Clusters**. The Clusters page displays a list of all available clusters that Palette manages. 3. Click on the Nutanix cluster you created to view its details page. 4. Ensure the **Cluster Status** field displays **Running**. + +## Update a Deployed Cluster + +Palette supports editing the settings of a deployed Nutanix cluster, including the control plane and worker node pool +configurations. You can change the memory, CPU, or storage of your node pools. Follow the steps described below to +update your cluster. + +### Prerequisites + +- An active Nutanix cluster in Palette. +- The `cluster.update` permission to update clusters. Refer to + [Roles and Permissions](../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-admin) for + more information. + +### Enablement + +1. Log in to [Palette](https://console.spectrocloud.com/). + +2. From the left **Main Menu**, select **Clusters**. + +3. Click on the Nutanix cluster you created. + +4. To edit the cluster settings, from the cluster details page, click **Settings** and select **Cluster + Configuration**. Edit the YAML file that Palette displays. + +#### Update Control Plane Node Pool + +5. Navigate to the cluster details page and click the **Nodes** tab. + +6. In the control plane node pool you want to edit, click **Edit** to open its YAML configuration file. + +7. Edit the `NutanixMachineTemplate` object. You can update the memory (`memorySize`), CPU (`vcpuSockets` and + `vcpuPerSocket`), and storage (`systemDiskSize`). Once you are finished changing the node pool configurations, update + the `name` parameter under the `metadata` line. For example, if the previous name was + **control-plane-pool-resource-3**, rename it to **control-plane-pool-resource-4**. + + :::warning + + You must update the node pool name for the configuration updates to take effect. + + ::: + +8. Edit the `KubeadmControlPlane` object. Change the `name` parameter under the `kind: NutanixMachineTemplate` line to + match the new name you used in the `NutanixMachineTemplate` object. + +9. When you are done updating the control plane node pool configuration, click **Confirm** and **Continue** to confirm + the changes. + +#### Update Worker Node Pool + +10. Navigate to the cluster details page and click the **Nodes** tab. + +11. In the worker node pool you want to edit, click **Edit** to open its YAML configuration file. + +12. Edit the `NutanixMachineTemplate` object. You can update the memory (`memorySize`), CPU (`vcpuSockets` and + `vcpuPerSocket`), and storage (`systemDiskSize`). Once you are finished editing the node pool configurations, update + the `name` parameter under the `metadata` line. For example, if the previous name was **worker-pool-resource-3**, + rename it to **worker-pool-resource-4**. + + :::warning + + You must update the node pool name for the configuration updates to take effect. + + ::: + +13. Edit the `MachineDeployment` object. Change the `name` parameter under the `kind: NutanixMachineTemplate` line to + match the new name you used in the `NutanixMachineTemplate` object. + +14. When you are done updating the worker node pool configuration, click **Confirm** and **Continue** to confirm the + changes. + +15. The node pool alterations will trigger a + [cluster repave](../../cluster-management/node-pool.md#repave-behavior-and-configuration). Follow the + [Approve Cluster Repave](../../cluster-management/node-pool.md#approve-cluster-repave) guide to incorporate the + updates to your cluster. + +### Validate + +1. Log in to [Palette](https://console.spectrocloud.com/). + +2. From the left **Main Menu**, select **Clusters**. + +3. Click on the Nutanix cluster you deployed, and then click on the **Nodes** tab. + +4. Verify that all nodes are in the **Running** and **Healthy** status, and reflect the applied repave changes. diff --git a/docs/docs-content/clusters/data-center/nutanix/install-pcg/deploy-kubernetes-cluster-pcg.md b/docs/docs-content/clusters/data-center/nutanix/install-pcg/deploy-kubernetes-cluster-pcg.md index 87ddffaede..e895a9b700 100644 --- a/docs/docs-content/clusters/data-center/nutanix/install-pcg/deploy-kubernetes-cluster-pcg.md +++ b/docs/docs-content/clusters/data-center/nutanix/install-pcg/deploy-kubernetes-cluster-pcg.md @@ -44,105 +44,98 @@ following the process described in the ## Deploy Workload Cluster -3. Copy the required variables shown in the examples below to your terminal, add your environment-specific information, - and export the variables. The table describes the environment variables. For more information, review the - [Nutanix Getting Started](https://opendocs.nutanix.com/capx/v1.1.x/getting_started/) guide. - - | **Variable** | **Description** | - | ------------------------------------- | --------------------------------------------------------------------------------------------------- | - | `NUTANIX_ENDPOINT` | The Prism Central IP address or FQDN. | - | `NUTANIX_USER` | The Prism Central user name. | - | `NUTANIX_PASSWORD` | The Prism Central user password. | - | `NUTANIX_INSECURE` | The SSL behavior you used in the `cloudClusterTemplate.yaml` file. The default behavior is `false`. | - | `NUTANIX_SSH_AUTHORIZED_KEY` | Provide your public SSH key. | - | `NUTANIX_PRISM_ELEMENT_CLUSTER_NAME` | The Nutanix Prism Element cluster name. | - | `NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME` | The Nutanix CAPI OS Image | - | `NUTANIX_SUBNET_NAME` | The subnet of the Nutanix workload cluster. | - | `KUBERNETES_VERSION` | The Kubernetes version the workload cluster uses. Precede the version with `v`. | - | `WORKER_MACHINE_COUNT` | The number of nodes in the workload cluster. | - - Copy the following Nutanix environment variables to your terminal, provide values, and export the variables. +3. Copy the required variables shown in the examples below to your terminal, add your environment-specific information, + and export the variables. The table describes the environment variables. For more information, review the + [Nutanix Getting Started](https://opendocs.nutanix.com/capx/v1.1.x/getting_started/) guide. + + | **Variable** | **Description** | + | ------------------------------------- | --------------------------------------------------------------------------------------------------- | + | `NUTANIX_ENDPOINT` | The Prism Central IP address or FQDN. | + | `NUTANIX_USER` | The Prism Central user name. | + | `NUTANIX_PASSWORD` | The Prism Central user password. | + | `NUTANIX_INSECURE` | The SSL behavior you used in the `cloudClusterTemplate.yaml` file. The default behavior is `false`. | + | `NUTANIX_SSH_AUTHORIZED_KEY` | Provide your public SSH key. | + | `NUTANIX_PRISM_ELEMENT_CLUSTER_NAME` | The Nutanix Prism Element cluster name. | + | `NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME` | The Nutanix CAPI OS Image | + | `NUTANIX_SUBNET_NAME` | The subnet of the Nutanix workload cluster. | + | `KUBERNETES_VERSION` | The Kubernetes version the workload cluster uses. Precede the version with `v`. | + | `WORKER_MACHINE_COUNT` | The number of nodes in the workload cluster. | + + Copy the following Nutanix environment variables to your terminal, provide values, and export the variables. - ```bash - export NUTANIX_ENDPOINT="" - export NUTANIX_USER="" - export NUTANIX_PASSWORD="" - export NUTANIX_INSECURE=false - export NUTANIX_SSH_AUTHORIZED_KEY="" - export NUTANIX_PRISM_ELEMENT_CLUSTER_NAME="" - export NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME="" - export NUTANIX_SUBNET_NAME="" - ``` - - You can ensure the Nutanix variables were successfully exported by issuing the following command in your terminal. - - ```bash - env | grep "NUTANIX" - ``` - - Copy the following environment variables to your terminal, provide values, and export the variables. - - ```bash - export KUBERNETES_VERSION="v1.22.9" - export WORKER_MACHINE_COUNT=1 - ``` - - To verify the KUBERNETES_VERSION and WORKER_MACHINE_COUNT variables were successfully exported, you can issue the - following command for each variable. - - ```bash - echo $variable_name - ``` - -4. Instantiate Nutanix Cluster API. - - :::info +```bash +export NUTANIX_ENDPOINT="" +export NUTANIX_USER="" +export NUTANIX_PASSWORD="" +export NUTANIX_INSECURE=false +export NUTANIX_SSH_AUTHORIZED_KEY="" +export NUTANIX_PRISM_ELEMENT_CLUSTER_NAME="" +export NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME="" +export NUTANIX_SUBNET_NAME="" +``` - To prevent conflicts with the recent Nutanix CAPI provider updates, you need to instantiate Cluster API with this - exact version of the Nutanix infrastructure. + You can ensure the Nutanix variables were successfully exported by issuing the following command in your terminal. - ::: +```bash +env | grep "NUTANIX" +``` - ```bash - clusterctl init --infrastructure nutanix:v1.2.4 - ``` + Copy the following environment variables to your terminal, provide values, and export the variables. -5. Deploy a workload cluster in Nutanix by issuing the following command. Replace `mytestcluster` with the cluster name - that you assigned to your workload cluster and `mytestnamespace` and with your namespace name. Provide the Nutanix - Prism Central IP address for CONTROL_PLANE_ENDPOINT_IP. +```bash +export KUBERNETES_VERSION="v1.22.9" +export WORKER_MACHINE_COUNT=1 +``` - ```bash - export TEST_CLUSTER_NAME=mytestcluster - export TEST_NAMESPACE=mytestnamespace - CONTROL_PLANE_ENDPOINT_IP=x.x.x.x clusterctl generate cluster ${TEST_CLUSTER_NAME} \ - -i nutanix \ - --target-namespace ${TEST_NAMESPACE} \ - > ./cluster.yaml - kubectl create namespace ${TEST_NAMESPACE} - kubectl apply --filename ./cluster.yaml -namespace ${TEST_NAMESPACE} - ``` + To verify the KUBERNETES_VERSION and WORKER_MACHINE_COUNT variables were successfully exported, you can issue the + following command for each variable. - The snippet below displays the output of the command. +```bash +echo $variable_name +``` - ```bash hideClipBoard - namespace/mytestnamespace created - configmap/user-ca-bundle created - secret/mytestcluster created - kubeadmconfigtemplate.bootstrap.cluster.x-k8s.io/mytestcluster-kcfg-0 created - cluster.cluster.x-k8s.io/mytestcluster created - machinedeployment.cluster.x-k8s.io/mytestcluster-wmd created - machinehealthcheck.cluster.x-k8s.io/mytestcluster-mhc created - kubeadmcontrolplane.controlplane.cluster.x-k8s.io/mytestcluster-kcp created - nutanixcluster.infrastructure.cluster.x-k8s.io/mytestcluster created - nutanixmachinetemplate.infrastructure.cluster.x-k8s.io/mytestcluster-mt-0 created - ``` +4. Instantiate Nutanix Cluster API. + + ```bash + clusterctl init --infrastructure nutanix + ``` + +5. Deploy a workload cluster in Nutanix by issuing the following command. Replace `mytestcluster` with the cluster name + that you assigned to your workload cluster and `mytestnamespace` and with your namespace name. Provide the Nutanix + Prism Central IP address for CONTROL_PLANE_ENDPOINT_IP. + + ```bash + export TEST_CLUSTER_NAME=mytestcluster + export TEST_NAMESPACE=mytestnamespace + CONTROL_PLANE_ENDPOINT_IP=x.x.x.x clusterctl generate cluster ${TEST_CLUSTER_NAME} \ + -i nutanix \ + --target-namespace ${TEST_NAMESPACE} \ + > ./cluster.yaml + kubectl create namespace ${TEST_NAMESPACE} + kubectl apply --filename ./cluster.yaml --namespace ${TEST_NAMESPACE} + ``` + + The snippet below displays the output of the command. + + ```bash hideClipBoard + namespace/mytestnamespace created + configmap/user-ca-bundle created + secret/mytestcluster created + kubeadmconfigtemplate.bootstrap.cluster.x-k8s.io/mytestcluster-kcfg-0 created + cluster.cluster.x-k8s.io/mytestcluster created + machinedeployment.cluster.x-k8s.io/mytestcluster-wmd created + machinehealthcheck.cluster.x-k8s.io/mytestcluster-mhc created + kubeadmcontrolplane.controlplane.cluster.x-k8s.io/mytestcluster-kcp created + nutanixcluster.infrastructure.cluster.x-k8s.io/mytestcluster created + nutanixmachinetemplate.infrastructure.cluster.x-k8s.io/mytestcluster-mt-0 created + ``` ## Install CNI on Workload Cluster 6. After your Nutanix workload cluster is deployed, retrieve its kubeconfig file with the command described below. ```bash - clusterctl get kubeconfig $TEST_CLUSTER_NAME > $TEST_CLUSTER_NAME.kubeconfig -namespace $TEST_NAMESPACE + clusterctl get kubeconfig $TEST_CLUSTER_NAME > $TEST_CLUSTER_NAME.kubeconfig --namespace $TEST_NAMESPACE ``` 7. Deploy a Container Network Interface (CNI) pod in the workload cluster to enable pod-to-pod communication. For more @@ -179,8 +172,8 @@ Use the steps below to verify your virtual machines (VMs) are created. ## Cleanup -With the PCG successfully installed in your Kubernetes workload cluster, you can delete the kind cluster that was used -to bootstrap the workload cluster. +Once you have successfully [installed a Nutanix PCG in Palette](/clusters/data-center/nutanix/install-pcg), delete the +kind cluster you used to bootstrap the workload cluster. ```bash kind delete cluster --name pcg-pilot diff --git a/docs/docs-content/clusters/data-center/openstack.md b/docs/docs-content/clusters/data-center/openstack.md index ebf4e6385d..460595ccba 100644 --- a/docs/docs-content/clusters/data-center/openstack.md +++ b/docs/docs-content/clusters/data-center/openstack.md @@ -347,6 +347,13 @@ used to create tenant clusters. Additional cloud accounts may be created if desi - A PCG is installed and available in the OpenStack. Refer to the [Deploy to OpenStack](../pcg/deploy-pcg/openstack.md) guide to learn how to deploy a PCG. +:::caution + +OpenStack support is limited to the Kubernetes distribution +[Palette eXtended Kubernetes (PXK)](../../integrations/kubernetes.md) for version 1.24.x. + +::: + ### Deploy Cluster The following steps need to be performed to provision a new OpenStack cluster: diff --git a/docs/docs-content/clusters/data-center/vmware/_category_.json b/docs/docs-content/clusters/data-center/vmware/_category_.json new file mode 100644 index 0000000000..c3460c6dbd --- /dev/null +++ b/docs/docs-content/clusters/data-center/vmware/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 30 +} diff --git a/docs/docs-content/clusters/data-center/vmware/architecture.md b/docs/docs-content/clusters/data-center/vmware/architecture.md new file mode 100644 index 0000000000..745b89c005 --- /dev/null +++ b/docs/docs-content/clusters/data-center/vmware/architecture.md @@ -0,0 +1,96 @@ +--- +sidebar_label: "Architecture" +title: "Architecture" +description: "Learn about the architecture used to support VMware clusters through Palette." +hide_table_of_contents: false +sidebar_position: 10 +tags: ["data center", "vmware", "architecture"] +--- + +## Overview + +Palette supports using VMware vSphere as a data center provider. You can deploy Kubernetes clusters to your vSphere +environment using Palette. Below are some key features of the Palette VMware architecture: + +- Kubernetes nodes can be distributed across multiple-compute clusters, which serve as distinct fault domains. + +- Support for static IP addresses, as well as DHCP. If you are using Dynamic Host Configuration Protocol (DHCP), Dynamic + DNS is required. + +- Support for IP address pool management for assigning blocks of IPs dedicated to clusters or projects. + +- A Private Cloud Gateway (PCG) must be setup within the VMware vSphere environment to communicate with the Palette + management platform and the VMware vCenter that installed in the private data center. + + The PCG facilitates communication between Palette and your infrastructure environment. The PCG is necessary in + environments where Palette does not have direct network access. Many infrastructure environments are placed in a + private network that blocks connections originating externally. The PCG connects to Palette, and acts as an endpoint, + allowing you to target the environment when deploying clusters in Palette. + + ![vmware_arch_oct_2020.webp](/clusters_vmware_architecture_arch-overview.webp) + +You can learn more in the [PCG Architecture](../../pcg/architecture.md) section. + +## Zone Tagging + +You can use tags to create node zones and regions for your Kubernetes clusters. The node zones and regions can be used +to dynamically place Kubernetes workloads and achieve higher availability. Kubernetes nodes inherit the zone and region +tags as [Labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). Kubernetes workloads can +use the node labels to ensure that the workloads are deployed to the correct zone and region. + +The following is an example of node labels that are discovered and inherited from vSphere tags. The tag values are +applied to Kubernetes nodes in vSphere. + + + +```yaml hideClipboard +topology.kubernetes.io/region=usdc +topology.kubernetes.io/zone=zone3 +failure-domain.beta.kubernetes.io/region=usdc +failure-domain.beta.kubernetes.io/zone=zone3 +``` + + +:::info + +To learn more about node zones and regions, refer to the +[Node Zones/Regions Topology](https://cloud-provider-vsphere.sigs.k8s.io/cloud_provider_interface.html) section of the +Cloud Provider Interface documentation. + +::: + +Zone tagging is required to install Palette and is helpful for Kubernetes workloads deployed in vSphere clusters through +Palette if they have persistent storage needs. Use vSphere tags on data centers and compute clusters to create distinct +zones in your environment. You can use vSphere +[Tag Categories and Tags](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vcenter-esxi-management/GUID-16422FF7-235B-4A44-92E2-532F6AED0923.html) +to create zones in your vSphere environment and assign them to vSphere objects. + +The zone tags you assign to your vSphere objects, such as a datacenter and clusters are applied to the Kubernetes nodes +you deploy through Palette into your vSphere environment. Kubernetes clusters deployed to other infrastructure +providers, such as public cloud may have other native mechanisms for auto discovery of zones. + +For example, assume a vCenter environment contains three compute clusters, cluster-1, cluster-2, and cluster-3. To +support this environment you create the tag categories `k8s-region` and `k8s-zone`. The `k8s-region` is assigned to the +datacenter, and the `k8s-zone` tag is assigned to the compute clusters. + +The following table lists the tag values for the data center and compute clusters. + +| **vSphere Object** | **Assigned Name** | **Tag Category** | **Tag Value** | +| ------------------ | ----------------- | ---------------- | ------------- | +| **Datacenter** | dc-1 | k8s-region | region1 | +| **Cluster** | cluster-1 | k8s-zone | az1 | +| **Cluster** | cluster-2 | k8s-zone | az2 | +| **Cluster** | cluster-3 | k8s-zone | az3 | + +Create a tag category and tag values for each datacenter and cluster in your environment. Use the tag categories to +create zones. Use a name that is meaningful and that complies with the tag requirements listed in the following section. + +### Tag Requirements + +The following requirements apply to tags: + +- A valid tag must consist of alphanumeric characters. + +- The tag must start and end with an alphanumeric character. + +- The regex used for tag validation is `(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?` diff --git a/docs/docs-content/clusters/data-center/vmware/create-manage-vmware-clusters.md b/docs/docs-content/clusters/data-center/vmware/create-manage-vmware-clusters.md new file mode 100644 index 0000000000..231dbe6af6 --- /dev/null +++ b/docs/docs-content/clusters/data-center/vmware/create-manage-vmware-clusters.md @@ -0,0 +1,218 @@ +--- +sidebar_label: "Create and Manage VMware Clusters" +title: "Create and Manage VMware Clusters" +description: "Learn how to configure VMware to create VMware clusters in Palette." +hide_table_of_contents: false +sidebar_position: 20 +tags: ["data center", "vmware"] +--- + +You can deploy Kubernetes clusters on VMware vSphere using Palette. Use the following steps to create and manage VMware +clusters in Palette. + +## Prerequisites + +Before you begin, ensure that you have the following prerequisites: + +- A VMware vSphere user account with the necessary permissions to create and manage clusters. Refer to the + [Required Permissions](./permissions.md) page for more information. + +- A VMware account registered in Palette. VMware accounts are automatically registered when you deploy a Private Cloud + Gateway (PCG) in Palette. Check out the [Deploy a PCG](../../pcg/deploy-pcg/vmware.md) guide to learn how to deploy a + PCG. + + :::info + + If you have a self-hosted Palette or VerteX instance, you can use the System PCG instance that is deployed in a VMware + environment. Refer to the [System PCG](../../pcg/architecture.md#system-private-gateway) to learn more about the + system PCG. + + ::: + +- A cluster profile for the VMware vSphere environment. You can learn how to create a cluster profile by following the + steps in the + [Create a Cluster Profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-cluster-profiles.md) + guide. + +- Depending on the network type you select for the cluster, you may need to create an IP Address Management (IPAM) pool + or define a search domain. Use the following guidelines to create an IPAM pool or define a search domain. + + - An IP Address Management (IPAM) pool is required to assign static IP addresses to the nodes in the cluster. You can + learn how to create an IPAM pool by following the steps in the + [Create and Manage IPAM Node Pools](../../pcg/manage-pcg/create-manage-node-pool.md) guide. + + - A search domain, also called DNS mapping, can be used to assign cluster nodes to a specific network, cluster, and + datacenter. Check out the [Add DNS Mapping](../../pcg/manage-pcg/add-dns-mapping.md) guide to learn how to add + multiple DNS mappings to a PCG. + +## Create a VMware Cluster + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. Navigate to the left **Main Menu** and select **Clusters**. + +3. Click **Deploy New Cluster** on the Create a New Cluster page. + +4. Select **VMware** and click the **Start VMware Configuration** button. + +5. Fill out the input fields. Use the table below to learn more about each input fields. Click on the **Next** button + when you are done. + + | Field Name | Description | Required | + | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | + | **Cluster name** | The name of the cluster. | Yes | + | **Description** | A brief description of the cluster. | No | + | **Tags** | Tags to help you identify the cluster. | No | + | **Cloud Account** | The VMware vSphere account to use for the cluster. If no account is available, ensure you [deployed a PCG](../../pcg/deploy-pcg/vmware.md) into the VMware vSphere environment. | Yes | + +6. Select the cluster profile you want to use for the cluster. Click the **Next** to proceed. + +7. Modify any cluster profile layers as needed. Click **Next** to continue. + +8. Fill out the VMware vSphere configuration details for the cluster. Refer to the table below to learn more about each + option. Click **Next** to proceed. + + | Field Name | Description | Required | + | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | + | **Datacenter** | The VMware vSphere datacenter where the cluster and its nodes will be deployed. | Yes | + | **Deployment Folder** | The folder in the datacenter where the cluster and its nodes will be deployed. Check the box **Append cluster name** if you want the cluster name appended to the folder name. | Yes | + | **Image Template Folder** | The folder in the datacenter where the image templates are stored. This is typically in the **spectro-templates** folder. | Yes | + | **Network Type** | The network type to use for the cluster. Select **Static IP** if you want to use static IP addresses. Select **DHCP** if you want to use Dynamic Host Configuration Protocol (DHCP). | Yes | + | **SSH Key** | The SSH key to use for the cluster. Check out the [Create and Upload an SSH Key](../../cluster-management/ssh-keys.md#create-and-upload-an-ssh-key) guide to learn how to upload an SSH key to Palette. | No | + | **NTP Servers** | The Network Time Protocol (NTP) servers to use for the cluster. | No | + + :::warning + + We recommend specifying Network Time Protocol (NTP) servers to ensure that the cluster nodes have the correct time. + If no NTP servers are specified, it could lead to time drift issues. + + ::: + +9. Configure the control plane and worker node pool configurations. Click **Next** to proceed. + + ### Control Plane Pool Configuration + + :::tip + + To apply the same configuration to the worker node pool as the control plane node pool, click the **Copy from the + Control Plane Pool** button. This will copy the control plane pool configuration to the worker node pool. + + ::: + + | Field Name | Description | + | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | **Node Pool Name** | The name of the control plane node pool. | + | **Number of nodes in the pool** | The number of control plane nodes. Allowed values are 1, 3, and 5. | + | **Allow Worker Capability** | Enable this option to workloads to be deployed on control plane nodes. | + | **Additional Labels** | Additional labels to apply to the control plane nodes. | + | **Taints** | Taints to apply to the control plane nodes. If enabled, an input field is displayed to specify the taint key, value and effect. Check out the [Node Labels and Taints](../../cluster-management/taints.md) page to learn more. | + + #### Cloud Configuration + + | Field Name | Description | + | ---------- | ---------------------------------------------------------------- | + | **CPU** | The number of CPUs to allocate to the control plane nodes. | + | **Memory** | The amount of memory to allocate to the control plane nodes. | + | **Disk** | The amount of disk space to allocate to the control plane nodes. | + + #### Fault Domain Configuration + + | Field Name | Description | + | ------------------- | ------------------------------------------------------- | + | **Compute Cluster** | The compute cluster to use for the control plane nodes. | + | **Resource Pool** | The resource pool to use for the control plane nodes. | + | **Datastore** | The datastore to use for the control plane nodes. | + | **Network** | The network to use for the control plane nodes. | + + #### Network Configuration + + Depending on what option you selected for the **Network Type** field, the following fields are displayed. + + | Field Name | Description | Network Type | + | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | + | **IPAM Pool** | The IPAM pool to use for the control plane nodes. An IPAM pool is required to assign IP addresses to the nodes in the cluster. You can learn how to create an IPAM pool by following the steps in the [Create and Manage IPAM Node Pools](../../pcg/manage-pcg/create-manage-node-pool.md) guide. | Static IP | + | **Search Domain** | The search domain to assign the cluster nodes in. If no search domain is defined, click on the **Define DNS** button and specify the search domain. Check out the [Add DNS Mapping](../../pcg/manage-pcg/add-dns-mapping.md) guide to learn how to add multiple DNS mappings to a PCG. | DHCP | + + ### Worker Plane Pool Configuration + + | Field Name | Description | + | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Node Pool Name** | The name of the control plane node pool. | + | **Enable Autoscaler** | Enable this option to automatically scale the worker nodes based on the workload. | + | **Node Repave Interval** | The interval at which the worker nodes are repaved in seconds. Refer to the [Repave Behavior and Configuration](../../cluster-management/node-pool.md#repave-behavior-and-configuration) for additional information about repave behaviors. | + | **Number of Nodes in the Pool** | The number of worker nodes. | + | **Rolling Update** | Choose between **Expand First** and **Contract First** to determine the order in which nodes are added or removed from the worker node pool. Expand first adds new nodes before removing old nodes. Contract first removes old nodes before adding new nodes. | + | **Additional Labels** | Additional labels to apply to the control plane nodes. | + | **Taints** | Taints to apply to the control plane nodes. If enabled, an input field is displayed to specify the taint key, value and effect. Check out the [Node Labels and Taints](../../cluster-management/taints.md) page to learn more. | + + Click on the **Next** button when you are done. + +10. You can configure the following cluster management features now if needed, or you can do it later: + + - OS Patching + - Schedule scans + - Schedule backups + - Role Based Access Control (RBAC) + - Location + + #### OS Patching + + Specify your preferred **OS Patching Schedule** for the cluster. Check out the + [OS Patching](../../cluster-management/os-patching.md) page to learn more about OS patching. + + #### Scan Options + + Enable any scan options you want Palette to perform, and select a scan schedule. Palette provides support for + Kubernetes configuration security, penetration testing, and conformance testing. + + #### Backup Options + + Schedule any backups you want Palette to perform. Review + [Backup and Restore](../../cluster-management/backup-restore/backup-restore.md) for more information. + + #### RBAC Configuration + + RBAC configuration is required when you configure custom OIDC. You must map a set of users or groups to a Kubernetes + RBAC role. To learn how to map a Kubernetes role to users and groups, refer to + [Create Role Bindings](../../cluster-management/cluster-rbac.md#create-role-bindings). Refer to + [Use RBAC with OIDC](../../../integrations/kubernetes.md#use-rbac-with-oidc) for an example. + + #### Location + + Specify the location of the cluster. The cluster location is added to the project dashboard location map. + +11. Click on the **Validate** button and review the cluster configuration and settings summary. + +12. Click **Finish Configuration** to deploy the cluster. + +The cluster deployment process is initiated. You can monitor the cluster deployment progress by navigating to the left +**Main Menu** and selecting **Clusters**. Click on the cluster you just created to view the cluster details page. The +**Cluster Status** field displays the current status of the cluster. + +## Validate + +Use the following steps to validate that the cluster is available and healthy. + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. Navigate to the left **Main Menu** and click **Clusters**. + +3. The **Clusters** page lists all available clusters that Palette manages. Select the cluster you deployed to review + its details page. + +4. Ensure the **Cluster Status** field contains the value **Running**. + +:::tip + +You can download the cluster's kubeconfig file to access the cluster using the Kubernetes command-line tool, kubectl. +Check out the [Access a Cluster](../../cluster-management/palette-webctl.md) guide to learn how to download the +kubeconfig file. + +::: + +## Next Steps + +Now that you have a Kubernetes cluster deployed, you can start developing and deploying applications to your clusters. +We recommend you review the Day-2 responsibilities and become familiar with the cluster management tasks. Check out the +[Manage Clusters](../../cluster-management/cluster-management.md) documentation to learn more about Day-2 +responsibilities. diff --git a/docs/docs-content/clusters/data-center/vmware/permissions.md b/docs/docs-content/clusters/data-center/vmware/permissions.md new file mode 100644 index 0000000000..3ffe56b768 --- /dev/null +++ b/docs/docs-content/clusters/data-center/vmware/permissions.md @@ -0,0 +1,192 @@ +--- +sidebar_label: "Required Permissions" +title: "Required Permissions" +description: "The permissions required to configure VMware to allow Palette to deploy clusters in VMware vSphere." +hide_table_of_contents: false +sidebar_position: 60 +tags: ["data center", "vmware", "permissions"] +--- + +The VMware vSphere user account that deploys host clusters require access to the following vSphere objects and +permissions listed in the following table. Review the vSphere objects and privileges required to ensure each role is +assigned the required privileges. + +### Spectro Root Role Privileges + +The spectro root role privileges are only applied to root objects and data center objects. Select the tab for the +vSphere version you are using to view the required privileges for the spectro root role. + + + + + +| **vSphere Object** | **Privilege** | +| ----------------------- | -------------------------------------------------- | +| **CNS** | Searchable | +| **Datastore** | Browse datastore | +| **Host** | Configuration
Storage partition configuration | +| **vSphere Tagging** | Create and edit vSphere tags | +| **Network** | Assign network | +| **Sessions** | Validate session | +| **VM Storage Policies** | View VM storage policies | +| **Storage views** | View | + +
+ + + +| **vSphere Object** | **Privileges** | +| -------------------------- | -------------------------------------------------- | +| **CNS** | Searchable | +| **Datastore** | Browse datastore | +| **Host** | Configuration
Storage partition configuration | +| **vSphere tagging** | Create vSphere Tag
Edit vSphere Tag | +| **Network** | Assign network | +| **Profile-driven storage** | View | +| **Sessions** | Validate session | +| **Storage views** | View | + +
+ + + +| **vSphere Object** | **Privileges** | +| -------------------------- | -------------------------------------------------- | +| **CNS** | Searchable | +| **Datastore** | Browse datastore | +| **Host** | Configuration
Storage partition configuration | +| **vSphere tagging** | Create vSphere Tag
Edit vSphere Tag | +| **Network** | Assign network | +| **Profile-driven storage** | Profile-driven storage view | +| **Sessions** | Validate session | +| **Storage views** | View | + +
+ +
+ +:::warning + +If the network is a Distributed Port Group under a vSphere Distributed Switch (VDS), _ReadOnly_ access to the VDS +without “Propagate to children” is required. + +::: + +### Spectro Role Privileges + +As listed in the table, apply spectro role privileges to vSphere objects you intend to use for Palette installation. A +separate table lists Spectro role privileges for VMs by category. + +Open Virtual Appliance (OVA) files are downloaded to the folder you selected. These images are cloned from the folder +and applied VMs that deployed during deployments. + +Select the tab for the vSphere version you are using to view the required privileges for the spectro role. + + + + + +| **vSphere Object** | **Privileges** | +| --------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| **CNS** | Searchable | +| **Datastore** | Allocate space
Browse datastore
Low-level file operations
Remove file
Update VM files
Update VM metadata | +| **Folder** | Create Folder
Delete folder
Move folder
Rename folder | +| **Host** | Local operations: Reconfigure VM | +| **Network** | Assign network | +| **Resource** | Apply recommendation
Assign VM to resource pool
Migrate powered off VM
Migrate powered on VM
Query vMotion | +| **Sessions** | Validate sessions | +| **Storage policies** | View access for VM storage policies is required.
Ensure `StorageProfile.View` is available. | +| **spectro-templates** | Read only. This is the vSphere folder created during the install. For airgap installs, you must manually create this folder. | +| **Storage views** | View | +| **Tasks** | Create task
Update task | +| **vApp** | Import
View OVF environment
Configure vAPP application
Configure vApp instance | +| **vSphere tagging** | Assign or Unassign vSphere Tag
Create vSphere Tag
Delete vSphere Tag
Edit vSphere Tag | + +The following table lists spectro role privileges for VMs by category. All privileges are for the vSphere object, +Virtual Machines. + +| **Category** | **Privileges** | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Change Configuration | Acquire disk lease
Add existing disk
Add new disk
Add or remove device
Advanced configuration
Change CPU count
Change memory
Change settings
Change swapfile placement
Change resource
Change host USB device
Configure raw device
Configure managedBy
Display connection settings
Extend virtual disk
Modify device settings
Query fault tolerance compatibity
Query unowned files
Reload from path
Remove disk
Rename
Reset guest information
Set annotation
Toggle disk change tracking
Toggle fork parent
Upgrade VM compatibility | +| Edit Inventory | Create from existing
Create new
Move
Register
Remove
Unregister | +| Guest Operations | Alias modification
Alias query
Modify guest operations
Invoke programs
Queries | +| Interaction | Console Interaction
Power on/off | +| Provisioning | Allow disk access
Allow file access
Allow read-only disk access
Allow VM download
Allow VM files upload
Clone template
Clone VM
Create template from VM
Customize guest
Deploy template
Mark as template
Mark as VM
Modify customization specification
Promote disks
Read customization specifications | +| Service Configuration | Allow notifications
Allow polling of global event notifications
Manage service configurations
Modify service configurations
Query service configurations
Read service configurations | +| Snapshot Management | Create snapshot
Remove snapshot
Rename snapshot
Revert to snapshot | +| Sphere Replication | Configure replication
Manage replication
Monitor replication | +| vSAN | Cluster: ShallowRekey | + +
+ + + +| **vSphere Object** | **Privileges** | +| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| **CNS** | Searchable | +| **Datastore** | Allocate space
Browse datastore
Low-level file operations
Remove file
Update VM files
Update VM metadata | +| **Folder** | Create Folder
Delete folder
Move folder
Rename folder | +| **Host** | Local operations: Reconfigure VM | +| **Network** | Assign network | +| **Resource** | Apply recommendation
Assign VM to resource pool
Migrate powered off VM
Migrate powered on VM
Query vMotion | +| **Profile-driven storage** | Profile-driven storage view | +| **Sessions** | Validate session | +| **spectro-templates** | Read only. This is the vSphere folder created during the install. For airgap installs, you must manually create this folder. | +| **Storage views** | Configure service
View | +| **Tasks** | Create task
Update task | +| **vApp** | Import
View OVF environment
Configure vAPP applications
Configure vApp instances | +| **vSphere tagging** | Assign or unassign vSphere Tag
Create vSphere Tag
Delete vSphere Tag
Edit vSphere Tag | + +The following table lists spectro role privileges for VMs by category. All privileges are for the vSphere object, +Virtual Machines. + +| **Category** | **Privileges** | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Change Configuration | Acquire disk lease
Add existing disk
Add new disk
Add or remove device
Advanced configuration
Change CPU count
Change memory
Change Settings
Change Swapfile placement
Change resource
Change host USB device
Configure Raw device
Configure managedBy
Display connection settings
Extend virtual disk
Modify device settings
Query fault tolerance compatibity
Query unowned files
Reload from path
Remove disk
Rename
Reset guest information
Set annotation
Toggle disk change tracking
Toggle fork parent
Upgrade VM compatibility | +| Edit Inventory | Create from existing
Create new
Move
Register
Remove
Unregister | +| Guest Operations | Alias modification
Alias query
Modify guest operations
Invoke programs
Query guest operations | +| Interaction | Console Interaction
Power on/off | +| Provisioning | Allow disk access
Allow file access
Allow read-only disk access
Allow VM download
Allow VM upload
Clone template
Clone VM
Create template from VM
Customize guest
Deploy template
Mark as template
Modify customization specifications
Promote disks
Read customization specifications | +| Service Configuration | Allow notifications
Allow polling of global event notifications
Manage service configurations
Modify service configurations
Query service configurations
Read service configurations | +| Snapshot Management | Create snapshot
Remove snapshot
Rename snapshot
Revert to snapshot | +| vSphere Replication | Configure replication
Manage replication
Monitor replication | +| vSAN | Cluster
ShallowRekey | + +
+ + + +| **vSphere Object** | **Privileges** | +| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| **CNS** | Searchable | +| **Datastore** | Allocate space
Browse datastore
Low-level file operations
Remove file
Update VM files
Update VM metadata | +| **Folder** | Create Folder
Delete folder
Move folder
Rename folder | +| **Host** | Local operations: Reconfigure VM | +| **Network** | Assign network | +| **Profile-driven storage** | Profile-driven storage view | +| **Resource** | Apply recommendation
Assign VM to resource pool
Migrate powered off VM
Migrate powered on VM
Query vMotion | +| **Sessions** | Validate session | +| **spectro-templates** | Read only. This is the vSphere folder created during the install. For airgap installs, you must manually create this folder. | +| **Storage views** | View | +| **Tasks** | Create task
Update task | +| **vApp** | Import
View OVF environment
Configure vAPP applications
Configure vApp instances | +| **vSphere tagging** | Assign or unassign vSphere Tag
Create vSphere Tag
Delete vSphere Tag
Edit vSphere Tag | + +The following table lists spectro role privileges for VMs by category. All privileges are for the vSphere object, +Virtual Machines. + +| **Category** | **Privileges** | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Change Configuration | Acquire disk lease
Add existing disk
Add new disk
Add or remove device
Advanced configuration
Change CPU count
Change memory
Change Settings
Change Swapfile placement
Change resource
Change host USB device
Configure Raw device
Configure managedBy
Display connection settings
Extend virtual disk
Modify device settings
Query fault tolerance compatibity
Query unowned files
Reload from path
Remove disk
Rename
Reset guest information
Set annotation
Toggle disk change tracking
Toggle fork parent
Upgrade VM compatibility | +| Edit Inventory | Create from existing
Create new
Move
Register
Remove
Unregister | +| Guest Operations | Alias modification
Alias query
Modify guest operations
Invoke programs
Query guest operations | +| Interaction | Console Interaction
Power on/off | +| Provisioning | Allow disk access
Allow file access
Allow read-only disk access
Allow VM download
Allow VM upload
Clone template
Clone VM
Create template from VM
Customize guest
Deploy template
Mark as template
Modify customization specifications
Promote disks
Read customization specifications | +| Service Configuration | Allow notifications
Allow polling of global event notifications
Manage service configurations
Modify service configurations
Query service configurations
Read service configurations | +| Snapshot Management | Create snapshot
Remove snapshot
Rename snapshot
Revert to snapshot | +| vSphere Replication | Configure replication
Manage replication
Monitor replication | +| vSAN | Cluster
ShallowRekey | + +
+ +
diff --git a/docs/docs-content/clusters/data-center/vmware/vmware.md b/docs/docs-content/clusters/data-center/vmware/vmware.md new file mode 100644 index 0000000000..92d4ea5e80 --- /dev/null +++ b/docs/docs-content/clusters/data-center/vmware/vmware.md @@ -0,0 +1,49 @@ +--- +sidebar_label: "VMware" +title: "VMware" +description: "Learn how to configure VMware to create VMware clusters in Palette." +hide_table_of_contents: false +sidebar_position: 30 +tags: ["data center", "vmware"] +--- + +Palette supports usning VMware as a data center provider. With this, you can deploy and manage Kubernetes clusters on +VMware virtual machines. For this to work, Palette uses a [Private Cloud Gateway (PCG)](../../pcg/architecture.md), +which creates a secure connection from the internal network to the internet-accessible Palette instance, ultimately +bypassing the need to create firewall rules or other network configurations allowing external connections to the +internal network. + +:::tip + +Palette supports the ability to manage your VMware workloads on the same Kubernetes infrastructure as your other +applications through the Palette Virtual Machine Orchestrator (VMO). VMO provides a unified platform for managing +containerized and virtualized applications. This solution allows organizations to onboard, deploy, manage, and scale VMs +within the same cluster as their containerized applications. Check out the +[VMO documentation](../../../vm-management/vm-management.md) for more information. + +::: + +## Get Started + +To get started with VMware as your target platform for deploying Kubernetes clusters, you need to deploy a PCG in your +VMware environment. The PCG acts as a bridge between your VMware environment and Palette, enabling secure communication +between the two. Start by reviewing the [Deploy a PCG in VMware vSphere](../../pcg/deploy-pcg/vmware.md) guide. + +:::info + +If you are using a self-hosted Palette or VerteX instance, you can skip the PCG deployment and use the System PCG that +is already available in the instance. Review the [System PCG](../../pcg/architecture.md#system-private-gateway) section +of the PCG architecture page for more information. + +::: + +After you have deployed the PCG, you can proceed to create and manage VMware clusters in Palette. Refer to the +[Create and Manage VMware Clusters](create-manage-vmware-clusters.md) guide for detailed instructions. + +## Resources + +- [Architecture](architecture.md) + +- [Create and Manage VMware Clusters](create-manage-vmware-clusters.md) + +- [Permissions](permissions.md) diff --git a/docs/docs-content/clusters/edge/architecture.md b/docs/docs-content/clusters/edge/architecture.md index 0c1eb84556..a96d49008f 100644 --- a/docs/docs-content/clusters/edge/architecture.md +++ b/docs/docs-content/clusters/edge/architecture.md @@ -11,8 +11,6 @@ The following are architectural highlights of Palette-provisioned Edge native cl - Kubernetes is natively installed on the host. -- Support for AMD64 and ARM64 architectures. - - Support for bare metal and virtualized edge devices. - Customizable site properties such as network proxies and certificates. @@ -52,7 +50,8 @@ test your hardware configuration before deploying to production. :::warning -ARM64 support is a preview feature and requires Palette version 4.0.0 or later. +ARM64 support is a preview feature and requires Palette version 4.0.0 or later. ARM64 support is only verified for the +Nvidia Jetson Orin device family. ::: @@ -60,11 +59,11 @@ ARM64 support is a preview feature and requires Palette version 4.0.0 or later. Palette provides the following distributions for edge installations. -| Name | OS | Kubernetes Distro | CNIs | CSIs | -| ----------------------------------------------------------------------------------------------------- | ---------------- | ----------------- | --------------- | --------- | -| Palette Optimized K3s | openSUSE, Ubuntu | K3s | Calico, Flannel | Rook Ceph | -| Palette Optimized RKE2 | openSUSE, Ubuntu | RKE2 | Calico, Flannel | Rook Ceph | -| [Palette eXtended Kubernetes Edge (PXK-E)](../../glossary-all#palette-extended-kubernetes-edge-pxk-e) | openSUSE, Ubuntu | CNCF | Calico, Flannel | Rook Ceph | +| Name | OS | Kubernetes Distro | CNIs | CSIs | +| -------------------------------------------------------------------------------------------------------- | ---------------- | ----------------- | --------------- | --------- | +| Palette Optimized K3s | openSUSE, Ubuntu | K3s | Calico, Flannel | Rook Ceph | +| Palette Optimized RKE2 | openSUSE, Ubuntu | RKE2 | Calico, Flannel | Rook Ceph | +| [Palette eXtended Kubernetes Edge (PXK-E)](../../glossary-all.md#palette-extended-kubernetes-edge-pxk-e) | openSUSE, Ubuntu | CNCF | Calico, Flannel | Rook Ceph | ## Supported Configurations @@ -76,13 +75,11 @@ table below describes these aspects and the available options. | Cluster Mode | - Connected: The site has internet connectivity and the installation is initiated via Palette Management Console
- Air-Gapped: The site does not have internet connectivity. Installation is initiated via the Palette CLI. | | OS | - Ubuntu
- OpenSUSE
- Bring your own OS (BYOOS) | | K8s Flavor | - Palette eXtended K8s for Edge FIPS (PXK-E)
- Palette eXtended K8s for Edge (PXK-E)
- Palette Optimized K3s
- Palette Optimized RKE2 | -| K8s Version | - 1.24.x
- 1.25.x
- 1.26.x
- 1.27.x | +| K8s Version | - 1.26.x
- 1.27.x
- 1.28.x
- 1.29.x | | FIPS Mode | - True: Enforce usage of FIPS packs and other required FIPS configuration to meet FIPS compliance
- False | | Edge Host Registration Mode | - Manual: A unique Edge host ID is manually entered into the Palette Management Console
- Auto: Edge hosts automatically register with the Palette through the usage of a registration token supplied in the use-data
- QR Code: Scan a QR code that takes you to a web application that registers the Edge host with Palette. This method is considered advanced with the benefit of simplifying the Edge host registration without needing a tenant token or a manual entry. | | Edge Host Type - Installer Format | Create an ISO image that contains all your dependencies and custom configurations. | -
- ## Kubernetes Defaults The following items are disabled by default for RKE2 and K3s. @@ -112,5 +109,3 @@ cluster: Disable: - metrics-server ``` - -
diff --git a/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md b/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md index d5c632e40c..020c4a226a 100644 --- a/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md +++ b/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md @@ -63,17 +63,13 @@ stylus: You can specify the mode the Edge Installer should prepare the installation for. The Edge Installer supports two different modes. -
- - Connected: The site has internet connectivity and the installation is initiated through Palette. - Air-Gapped: The site does not have internet connectivity. The Installation is initiated through the Palette Edge CLI. -| Parameter | Description | -| ------------------ | ------------------------------------------------------------- | -| `installationMode` | Allowed values are `connected`. Default value is `connected`. | - -
+| Parameter | Description | +| ------------------ | -------------------------------------------------------------------------- | +| `installationMode` | Allowed values are `connected` and `airgap`. Default value is `connected`. | ```yaml #cloud-config @@ -81,6 +77,24 @@ stylus: installationMode: "connected" ``` +### Initial Configuration + +You can configure the Edge Installer to enable the initial configuration in the Terminal User Interface (TUI) when you +boot up the Edge host for the first time. For more information about initial configuration, refer to +[Initial Edge Host Configuration](../site-deployment/initial-setup.md). + +| Parameter | Description | +| ------------ | --------------------------------------------------------------------- | +| `includeTui` | Enable the initial Edge host configuration. Default value is `false`. | + +### Local UI + +You can change the port that the Edge management console is exposed on. The default port is 5080. + +| Parameter | Description | +| ---------------- | ----------------------------------------------------------------------------------------- | +| `emcServer.port` | Specifies the port that the Edge management console is exposed on. Default value is 5080. | + ### External Registry You can point the Edge Installer to a non-default registry to load content from another source. Use the @@ -94,8 +108,6 @@ You can point the Edge Installer to a non-default registry to load content from | `insecure` | Whether to allow insecure connections to the registry. Default value is `false`. | | `encodedPassword` | Specifies whether the password as given is base64 encoded.`true` means that the provided password is base64 encoded and that when using the password to authenticate, the password must be decoded first. `false` means the password is not encoded and must be used as is to authenticate with the registry. Default is `false`. | -
- ```yaml #cloud-config stylus: diff --git a/docs/docs-content/clusters/edge/edge.md b/docs/docs-content/clusters/edge/edge.md index ed412a8994..645e6a4156 100644 --- a/docs/docs-content/clusters/edge/edge.md +++ b/docs/docs-content/clusters/edge/edge.md @@ -20,20 +20,14 @@ from central computing and improving overall application performance. Industries manufacturing, oil and gas, cruise ships, healthcare, and 5G telecommunication providers typically have use cases that require content data and processing to be closer to their applications. -
- ![A drawing of Edge architecture with humans interacting](/clusters_edge_edge-arch-drawing.webp) -
- The following are some highlights of the comprehensive Palette Edge Solution: - Centralized Full Stack Management - Low touch, plug-and-play setup -- Support for AMD64 and ARM64 architectures - - Immutable update for Kubernetes and operating system (OS) with zero downtime - Distro-agnostic Kubernetes and OS diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/build-artifacts.md b/docs/docs-content/clusters/edge/edgeforge-workflow/build-artifacts.md deleted file mode 100644 index 555fb1b14f..0000000000 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/build-artifacts.md +++ /dev/null @@ -1,268 +0,0 @@ ---- -sidebar_label: "Build Edge Artifacts using a Content Bundle" -title: "Build Edge Artifacts using a Content Bundle" -description: "Learn how to build an Edge installer ISO using the Palette Edge CLI and the CanvOS utilities." -icon: "" -hide_table_of_contents: false -sidebar_position: 30 -tags: ["edge"] ---- - -Palette's Edge solution supports creating Edge artifacts for edge devices deployed in a low internet bandwidth -environment or an _air-gapped_ environment. An air-gapped environment is a deployment site with no direct internet -access. Using a content bundle, you can build Edge artifacts for installation in such environments. - -A content bundle is an archive that includes the Operating System (OS) image, the Kubernetes distribution, the Network -Container Interface (CNI), and all other dependencies specified in the cluster profiles you want to deploy to the Edge -cluster. A content bundle provides several benefits, such as: - -- Software dependencies are pre-loaded into the installer image. - -- Optimizes the deployment process for bandwidth-constrained environments or air-gapped environments. - -- The ability to more granularly manage the software dependencies available to Edge clusters. - -This how-to guide provides instructions for creating and using a content bundle to build the Edge artifacts. You will -begin with installing a necessary tool, the Palette Edge CLI, on your development machine. The Palette Edge CLI is a -command-line utility to interact with Palette and perform specific tasks in your development environment, such as -creating a content bundle. Next, you will download all the software dependencies mentioned in your cluster profile using -the Palette Edge CLI and create a content bundle. Lastly, when your content bundle is ready, you will use the CanvOS -utility to embed the content bundle and user data into the Edge installer ISO image. - -The diagram below displays the overarching steps to build the Edge installer ISO using a content bundle. The diagram -also highlights the primary prerequisites to create a content bundle. - -![An overarching diagram displaying the workflow in the current guide.](/clusters_edge_edge-forge-workflow_build-images_build-artifacts_overarching.webp) - -## Prerequisites - -:::warning - -This how-to guide extends the [Build Edge Artifacts](palette-canvos.md) workflow. Therefore, you must complete it before -proceeding with the current guide. - -::: - -To complete this guide, you will need the following items: - -- A physical or virtual Linux machine with _AMD64_ (also known as _x86_64_) processor architecture to build the Edge - installer ISO image. You can issue the following command in the terminal to check your processor architecture. - - ```bash - uname -m - ``` - -- The Linux machine should have the following minimum hardware configuration: - - - 4 CPU - - 8 GB memory - - 100 GB storage. The actual storage will depend on the size of the content bundle you will use to build the Edge - installer ISO image. - -- You must have completed the [Build Edge Artifacts](palette-canvos.md) guide to build the provider images and create a - cluster profile referencing one of the provider images. - -- A Spectro Cloud API key. Later in this guide, you will use this API key to authenticate the Palette Edge CLI utility - and allow it to interact with Palette. Refer to the - [User Authentication](../../../user-management/authentication/api-key/create-api-key.md) guide to create a new API - key. - -## Instructions - -Use the following instructions on your Linux machine, which this guide refers to as the development environment. - -1. Visit the [Downloads](../../../spectro-downloads#palette-edge-cli) page and download the latest Palette Edge CLI. - You can download the Palette Edge CLI by clicking on the available URL or using the download URL in the following - command. Replace the `[PALETTE-EDGE-BINARY-URL]` placeholder with the download URL.
- -```bash -curl [PALETTE-EDGE-BINARY-URL] --output palette-edge -``` - -2. Open a terminal session and navigate to the folder where you have downloaded the palette-edge binary. Set the - executable permissions for the palette-edge binary by issuing the following command.
- -```bash -chmod 755 palette-edge -``` - -3. Use the following command to move the palette-edge binary to the **/usr/local/bin** directory to make the binary - available in your system $PATH. This will allow you to issue the `palette-edge` command from any directory in your - development environment.
- -```bash -mv palette-edge /usr/local/bin -``` - -4. Verify the installation of the Palette Edge CLI by issuing the following command. The output will display information - about the currently supported OS and Kubernetes distributions.
- -```bash -palette-edge show -``` - -```hideClipboard bash -# Sample output -┌────────────────────────────────────────────────────────────────────────┐ -| OS Flavor | Description | Base Image URI | -| opensuse-leap | Opensuse Leap 15.4 | quay.io/kairos/core-opensuse-leap | -| ubuntu-20 | Ubuntu 20.4 LTS | quay.io/kairos/core-ubuntu-20-lts | -| ubuntu-22 | Ubuntu 22.4 LTS | quay.io/kairos/core-ubuntu-22-lts | -└────────────────────────────────────────────────────────────────────────┘ -┌─────────────────────────────────────────────────────────────────────────────────────────────┐ -| K8S Flavor | Description | Supported Versions | -| k3s | Rancher K3s | 1.25.2-k3s1,1.24.6-k3s1,1.23.12-k3s1,1.22.15-k3s1 | -| kubeadm | Kubernetes kubeadm | 1.25.2,1.24.6,1.23.12,1.22.15 | -| rke2 | Rancher RK2 | 1.25.2-rke2r1,1.24.6-rke2r1,1.23.12-rke2r1,1.22.15-rke2r1 | -└─────────────────────────────────────────────────────────────────────────────────────────────┘ -┌─────────────────────────────────┐ -| Component | Version | -| Spectro Agent Version | v3.4.3 | -| Kairos Version | v2.0.3 | -└─────────────────────────────────┘ -``` - -
- -5. Set the Spectro Cloud API key as an environment variable by issuing the following command. Replace the - `[USE-YOUR-API-KEY_HERE]` placeholder with your API key. The Palette Edge CLI will use this API key to authenticate - with Palette. Once authenticated, the Palette Edge CLI can interact with your Palette account.
- -```bash -export API_KEY=[USE-YOUR-API-KEY_HERE] -``` - -6. Log in to [Palette](https://console.spectrocloud.com). - -7. Copy your Palette project ID. You will use this ID in a later step. The project ID is on the top-right corner of your - Palette project overview page. Use the following screenshot to help you find your project ID. - -![A screenshot highlighting the project ID in Palette project overview page](/clusters_edge_edge-forge-workflow_build-images_build-project_id.webp) - -8. Navigate to the left **Main Menu** and select **Profiles**. - -9. Select the cluster profile you want to include in the content bundle. Click on the target cluster profile to access - its details page. - -10. Examine the cluster details page URL. The cluster details page URL follows the - `[Palette-URL]/projects/[PROJECT-ID]/profiles/cluster/[CLUSTER-PROFILE-ID]` syntax. The cluster details page URL has - your project ID and the cluster profile ID. For example, the screenshot below highlights the project ID and the - cluster profile ID in a cluster details page URL. - -![A screenshot highlighting the cluster profile ID and project ID in the URL of the cluster details page.](/clusters_edge_edge-forge-workflow_build-images_build-artifacts_url.webp) - -11. Copy the cluster profile ID from the cluster details page URL for the next step. - -12. Switch back to your development environment, and set the project ID as an environment variable by issuing the - following command. Replace the `[USE-YOUR-PROJECT-ID_HERE]` placeholder with your project ID.
- -```bash -export PROJECT_ID=[USE-YOUR-PROJECT-ID_HERE] -``` - -13. Set the cluster profile ID as an environment variable using the following command. Replace the - `[USE-YOUR-PROFILE-ID_HERE]` placeholder with your cluster profile ID. The Palette Edge CLI uses the cluster profile - ID to reference the correct cluster profile and download all its software dependencies.
- -```bash -export PROFILE_ID=[USE-YOUR-PROFILE-ID_HERE] -``` - -14. Issue the command below to create the content bundle. The `build` command uses the following flags: - -| **Command Flag** | **Value** | -| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | -| `--api-key` | Spectro Cloud API key | -| `--project-id` | Palette project ID | -| `--cluster-profile-ids` | Cluster profile IDs. If you want to include multiple cluster profiles in the content bundle, add multiple cluster profile IDs separated by a comma. | -| `--palette-endpoint` | Palette API endpoint. The default Palette API endpoint is `api.spectrocloud.com` | -| `--outfile` | Path to write the final content bundle. | - -You can issue `palette-edge build --help` to know about other available flags.
- -```bash -palette-edge build --api-key $API_KEY \ - --project-id $PROJECT_ID \ - --cluster-profile-ids $PROFILE_ID \ - --palette-endpoint api.spectrocloud.com \ - --outfile content -``` - -15. Use the command below to list all files in the current directory to verify that you created the content bundle - successfully. The content bundle will have the following naming convention, `content-[random-string]`, for example, - **content-8e61a9e5**.
- -```bash -ls -al -``` - -16. List the files in the content bundle folder using the following command. The output will display the compressed core - and app content files.
- -```bash -ls -al content-*/ -``` - -```hideClipboard bash -# Sample output -total 3981104 --rw-rw-r-- 1 jb jb 1598552722 Jul 26 18:20 app-content-8e61a9e5.zst --rw-rw-r-- 1 jb jb 2478086360 Jul 26 18:20 core-content-8e61a9e5.zst -``` - -17. Issue the following command to build the Edge artifacts with your content bundle. The `+iso` option specifies the - build target. This command will generate an ISO image from the content bundle and other configurations you have - specified in the **.arg** and **user-data** files.
- -```bash -sudo ./earthly.sh +iso -``` - -This command may take up to 15-20 minutes to finish depending on the resources of the host machine. - -## Validate - -List the Edge installer ISO and checksum by issuing the following command from the **CanvOS/** directory.
- -```shell -ls build/ -``` - -```hideClipboard shell -palette-edge-installer.iso -palette-edge-installer.iso.sha256 -``` - -
- -To validate, you can prepare an edge device using the Edge installer ISO. You can follow the -[Prepare Edge Host for Installation](../site-deployment/stage.md) guide if you prepare a bare metal machine or a VMware -VM as a host. Below are the high-level steps for your reference:
- -1. Create a bootable USB flash drive using any third-party software. Most software that creates a bootable USB drive - will validate the ISO image. - -2. Select a physical or virtual host machine to emulate as an edge device. Enable (Dynamic Host Configuration Protocol) - DHCP on the host before proceeding with the installation process. Enabling DHCP is necessary for the device to obtain - an IP address automatically from the network. - -3. Flash the edge device with a bootable USB drive. - -4. The last step is to power on the edge device and start the installation process. For more information, refer to the - [Perform Site Install](../site-deployment/site-installation/site-installation.md) documentation.
- -## Next Steps - -Palette's Edge solution allows you to create Edge artifacts using a content bundle for edge devices deployed in low -internet bandwidth or air-gapped environments. You created a content bundle using the Palette Edge CLI in this guide. -Next, you used the CanvOS utility to embed the content bundle and user data into an Edge installer ISO. - -As the next step, we recommend you check out the end-to-end tutorial, -[Deploy an Edge Cluster on VMware](../site-deployment/deploy-cluster.md). The tutorial provides a detailed walkthrough -on deploying an Edge cluster in a VMware environment. - -Check out the reference resources below to learn more about preparing an Edge host. - -- [Prepare Edge Host for Installation](../site-deployment/stage.md) - -- [Perform Site Install](../site-deployment/site-installation/site-installation.md) diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/build-content-bundle.md b/docs/docs-content/clusters/edge/edgeforge-workflow/build-content-bundle.md index fd6fe18a93..9a2332fea4 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/build-content-bundle.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/build-content-bundle.md @@ -7,11 +7,11 @@ sidebar_position: 20 tags: ["edge"] --- -Content bundles are archives of all the required container images required for a cluster profiles. The content bundle -includes Helm charts, Packs, and manifest files needed to deploy your Edge host cluster. In addition to core container -images, the content bundle can include artifacts from your applications that you wish to deploy to the Edge cluster. -[Cluster Profiles](../../../profiles/cluster-profiles/cluster-profiles.md) are the primary source for building these -content bundles. +Content bundles are archives of all the required container images required for one or more cluster profiles. The content +bundle includes Helm charts, Packs, and manifest files needed to deploy your Edge host cluster. In addition to core +container images, the content bundle can include artifacts from your applications that you wish to deploy to the Edge +cluster. [Cluster Profiles](../../../profiles/cluster-profiles/cluster-profiles.md) are the primary source for building +these content bundles. :::warning @@ -52,7 +52,7 @@ Creating a content bundle provides several benefits that may address common use ## Create Content Bundle -1. Download Palette Edge Content CLI and assign the executable bit to the CLI.
+1. Download Palette Edge Content CLI and assign the executable bit to the CLI. ```shell VERSION=4.1.2 @@ -80,10 +80,132 @@ Creating a content bundle provides several benefits that may address common use https://console.spectrocloud.com/projects/yourProjectId/profiles/cluster/ ``` -8. Navigate back to your terminal window and issue the following command to create the content bundle. Replace the - placeholder values with your actual values. +8. (Optional) If your cluster profile uses images or helm charts that are hosted on private registries that require + authentication, you must provide a JSON file that contains the necessary credentials to access the registry. -
+ + + + + For authenticated access to Helm charts, your must provide credentials with the following schema. Use a key at the + root level of the JSON object named "helm" and set its value to a list. The list is a list of credentials for each + Helm chart repository. For each set of credentials, use an object in the list with the keys "endpoint", "username", + and "password". + + ```json + { + "helm": [ + { + "endpoint": , + "username": , + "password": + } + ] + } + ``` + + For example, the following JSON code is a valid set of credentials. + + ```json + { + "helm": [ + { + "endpoint": "harbor.abcd.com", + "username": "admin", + "password": "xxxxxxxx" + } + ] + } + ``` + + + + + + For image registries, you must provide credentials with the following schema. Provide a key at the root level of the + JSON object named "image" and set its value to a list. The list is a list of credentials for each Helm chart + repository. For each set of credentials, use an object in the list with the keys "endpoint", "username", and + "password". + + ```json + { + "image": [ + { + "endpoint": , + "username": , + "password": + } + ] + } + ``` + + For example, the following JSON code provides access to two registries `ttl.sh` and `docker.io` with two + username-password pairs. + + ```json + { + "image": [ + { + "endpoint": "ttl.sh", + "username": "admin", + "password": "Welc0me!123" + }, + { + "endpoint": "docker.io", + "username": "akhileshpvt", + "password": "Lucent122333!" + } + ] + } + ``` + + For Google Container Registry (GCR) access, you need to set the username field to `"_json_key"` and set the password + to an JSON object containing the following fields. + + | Field | Description | + | ----------------------------- | --------------------------------------------------------------------------------------------------- | + | `type` | The type of credential, which is `service_account` for Google Cloud service accounts. | + | `project_id` | The project ID associated with your Google Cloud project. For example, `spectro-images`. | + | `private_key_id` | A unique identifier for the private key associated with the service account. | + | `private_key` | The private key that is used to authenticate to Google Cloud services, encapsulated in a PEM block. | + | `client_email` | The email address associated with the service account, used for authentication. | + | `client_id` | The client ID associated with the service account. | + | `auth_uri` | The URI for the authentication provider, typically Google's OAuth 2.0 server. | + | `token_uri` | The URI for obtaining tokens from Google's OAuth 2.0 server. | + | `auth_provider_x509_cert_url` | The URL of the public x509 certificate for the authentication provider. | + | `client_x509_cert_url` | The URL of the public x509 certificate for the client (service account). | + + For example, the following is a valid set of credentials for a GCR registry. + + ```json + { + "image": [ + { + "endpoint": "gcr.io", + "username": "_json_key", + "password": { + "type": "service_account", + "project_id": "spectro-images", + "private_key_id": "847c09190xxxxxxxxxxxxc4ebc", + "private_key": "-----BEGIN KEY-----MIIEvQIBADA ... -----Shortened for brevity", + "client_email": "xxx.iam.gserviceaccount.com", + "client_id": "115830xxxxxxx340453", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/spectro-images-viewer%40spectro-images.iam.gserviceaccount.com" + } + } + ] + } + ``` + + + + + +9. Navigate back to your terminal window and issue the following command to create the content bundle. Replace the + placeholder values with your actual values. :::info @@ -92,14 +214,13 @@ Creating a content bundle provides several benefits that may address common use ::: -
- ```shell ./palette-edge build --api-key \ --project-id \ --cluster-profile-ids \ --palette-endpoint \ --outfile .tar \ + --include-palette-content \ --iso ``` @@ -125,9 +246,13 @@ Creating a content bundle provides several benefits that may address common use INFO[0144] ISO file created successfully ``` -The result is a content bundle that you can use to preload into your installer. Alternatively, you can use the ISO -version of the content bundle and transfer it to a USB drive to be used separately at the time of Edge host -installation. +The result is a content bundle that you can use to preload into your installer. For more information, refer to +[Build Edge Artifacts with Content Bundle](./palette-canvos/build-artifacts.md) or +[Build Installer ISO](./palette-canvos/build-installer-iso.md). Our Tech Preview feature +[local UI](../local-ui/local-ui.md) also allows you to upload content bundles to a disconnected Edge deployment. + +Alternatively, you can use the ISO version of the content bundle and transfer it to a USB drive to be used separately at +the time of Edge host installation. ## Validate @@ -137,4 +262,4 @@ creates a bootable device will validate the ISO image before the flash process. ## Next Steps Your next step is to build the Edge artifacts so that you can deploy an Edge host. To create an Edge artifacts, check -out the [Build Images](../edgeforge-workflow/palette-canvos.md) guide. +out the [Build Images](../edgeforge-workflow/palette-canvos/palette-canvos.md) guide. diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/edgeforge-workflow.md b/docs/docs-content/clusters/edge/edgeforge-workflow/edgeforge-workflow.md index 8d96fe27e6..4bff9331bc 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/edgeforge-workflow.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/edgeforge-workflow.md @@ -10,42 +10,70 @@ _EdgeForge_ is the process or workflow of preparing an Edge host with all the re EdgeForge workflow contains several steps and key elements that you must complete to ensure the Edge host is ready for a successful site deployment. -EdgeForge contains three critical components. +Each EdgeForge component plays a critical role in the [lifecycle](../edge-native-lifecycle.md) of an Edge deployment. +Review the [Edge Artifacts](../edgeforge-workflow/edgeforge-workflow.md#edge-artifacts) section to learn more about each +component. -- Edge Installer ISO. +![A diagram that displays the relationship between the three components and how they relate to an Edge host](/clusters_edge-forge-workflow_edgeforge-workflow_components-diagram.webp) -- Edge Host Agent Container Image. +## Get Started -- Edge Provider Container Images. +To start building a custom Edge artifact, use the following guides: -Each component plays a critical role in the [lifecycle](../edge-native-lifecycle.md) of an Edge deployment. Review the -[Edge Artifacts](../edgeforge-workflow/edgeforge-workflow.md#edge-artifacts) section to learn more about each component. +[Build Edge Artifacts](./palette-canvos/palette-canvos.md). This guide builds both the Edge Installer ISO and provider +images to help you get started quickly. You can also refer to the following how-tos to learn how to build the Edge +Installer ISO and provider images individually. -![A diagram that displays the relationship between the three components and how they relate to an Edge host](/clusters_edge-forge-workflow_edgeforge-workflow_components-diagram.webp) +- [Build Provider Images](./palette-canvos//build-provider-images.md). -## Get Started +- [Build Installer ISO](./palette-canvos//build-installer-iso.md). + +If you want your Edge host to have preloaded content and be able to create clusters using the preloaded content, you +build a content bundle and build the content bundle into your Edge Installer ISO. Building preloaded content into your +ISO allows you to create clusters without a connection to a Palette instance. Refer to the following guides to build +Edge Artifacts with content bundles: -To start building a custom Edge artifact, use the [Build Edge Artifacts](palette-canvos.md) guide. +- [Build Content Bundle](./build-content-bundle.md) -
+- [Build Edge Artifacts with Content Bundles](./palette-canvos/build-artifacts.md) + +The following table lists the combination of our guides you can follow to build Edge artifacts with or without preloaded +content. + +| Edge Artifacts have preloaded content? | Option 1 | Option 2 | +| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| No | [Build Provider Images](./palette-canvos//build-provider-images.md) + [Build Installer ISO](./palette-canvos//build-installer-iso.md) | [Build Edge Artifacts](./palette-canvos/palette-canvos.md) | +| Yes | [Build Provider Images](./palette-canvos//build-provider-images.md) + [Build Installer ISO](./palette-canvos//build-installer-iso.md) + [Build Content Bundle](./build-content-bundle.md) | [Build Content Bundle](./build-content-bundle.md) + [Build Edge Artifacts with Content Bundles](./palette-canvos/build-artifacts.md) | ## Edge Artifacts +EdgeForge contains the following critical components: + +- Edge Installer ISO. + +- Edge Provider Container Images. + ### Edge Installer ISO An ISO file that bootstraps the installation is created in the EdgeForge process. The ISO image contains the Edge -Installer that installs the Palette Edge host agent and metadata to perform the initial installation. +Installer that installs the Palette Edge host agent and metadata to perform the initial installation. The Edge Installer +ISO can also contain the following components: -
+- User data. User data includes essential configurations for the Edge Installer. The Edge Installer ISO requires user + data to function. If you choose to not supply user data in the ISO, you must supply it before the Edge Installer + initiates with a site user data. You can also use site user data to override or supplement the user data supplied in + the installer ISO. -![A diagram breaking up the internal components of the ISO image](/clusters_edge_edgeforge-workflow_iso-diagram.webp) - -### Edge Host Agent Container Image +- Content bundle. Content bundles are archives of all the required container images required for specified cluster + profiles. You have the option to build content bundles into the Edge Installer ISO, which allows your Edge host to + build clusters without a connection to external image registries. -The Edge host agent container image contains the Palette Edge host agent. The agent is responsible for Day-2 operations -and management of the Edge host. The Edge host agent also provides ongoing support during cluster runtime. +- Cluster definition (Tech Preview). A cluster definition include one or more cluster profiles. You can export cluster + definitions from any existing cluster profiles in your Palette account. If you include a cluster definition in your + Edge Installer ISO, you can use the profiles contained within to build a cluster without a connection to a Palette + instance. -
+![A diagram breaking up the internal components of the ISO image](/clusters_edge_edgeforge-workflow_iso-diagram.webp) ### Edge Provider Container Images @@ -59,8 +87,6 @@ default Palette container registries to familiarize yourself with the installati production scenario, you would need to customize these artifacts to suit your specific needs or perform some [content bundle](../edgeforge-workflow/build-content-bundle.md) optimization. -
- ![A diagram breaking up the internal components of the Edge Provider container images](/clusters_edge_edgeforge-workflow_provider-diagram.webp) :::info @@ -72,6 +98,18 @@ details. ::: +## Content Bundles + +Content bundles are archives of all the required container images required for one or more cluster profiles. You can +include build content bundles using the Palette Edge Command-line Interface (CLI), and build the preloaded content into +the Edge Installer ISO during EdgeForge. This allows the Edge host to provision clusters without a connection to an +external image registry. Refer to the following guides on how to build a content bundle and how to use them during the +EdgeForge process: + +- [Build Content Bundle](./build-content-bundle.md) + +- [Build Edge Artifacts with Content Bundles](./palette-canvos/build-artifacts.md) + ## Deployment Scenarios The Edge Installer supports various deployment scenarios. You can customize your Edge host deployment by using the Edge @@ -79,8 +117,6 @@ Installer configuration user data, creating content bundles, and creating a cust scenarios that organizations encounter when deploying an Edge host that requires customization. If you have a similar scenario, use the CLIs to help you with the customization. -
- - **Additional Packages**: You may need to install additional OS packages for your specific needs, such as an NVIDIA driver or a network package essential for your hardware to establish an outgoing network connection. These additional OS packages would need to be added to the Edge Installer and the Edge Provider images. @@ -103,14 +139,16 @@ scenario, use the CLIs to help you with the customization. [Build Edge Artifacts](/clusters/edge/edgeforge-workflow/palette-canvos) guide to learn more about how you can customize the OS used in an Edge deployment. -
- ## Resources -- [Build Edge Artifacts](palette-canvos.md) - - [Build Preloaded Content Bundles](build-content-bundle.md) -- [Build Edge Artifacts using a Content Bundle](build-artifacts.md) +- [Build Edge Installer ISO](./palette-canvos/build-installer-iso.md) + +- [Build Provider Images](./palette-canvos/build-provider-images.md) + +- [Build Edge Artifacts](./palette-canvos/palette-canvos.md) + +- [Build Edge Artifacts using a Content Bundle](./palette-canvos/build-artifacts.md) - [Prepare User Data](prepare-user-data.md) diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/arg.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/arg.md new file mode 100644 index 0000000000..5882791001 --- /dev/null +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/arg.md @@ -0,0 +1,29 @@ +--- +sidebar_label: "Edge Artifact Build Configurations" +title: "Edge Artifact Build Configurations" +description: "A reference document of the parameters using in the Edge artifact build process. " +icon: "" +sidebar_position: 10 +hide_table_of_contents: false +tags: ["edge"] +--- + +During the EdgeForge process, you provide an **.arg** document that contains a list of parameters to configure the build +of both the provider images and the Edge Installer ISO. This page lists the parameters available in the **.arg** file. + +| **Argument** | **Description** | **Allowed Values** | +| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- | +| `ARCH` | Architecture of the image. | `amd64`, `arm64`. | +| `CUSTOM_TAG` | A custom tag for the provider images. This custom tag will be appended to the `IMAGE_REGISTRY` and `IMAGE_REPO` parameters to form the full image tag. | Lowercase alphanumeric string without spaces. | +| `FIPS_ENABLED` | Whether to generate FIPS compliant binaries. | `true`, `false.` | +| `HTTP_PROXY` | URL of the HTTP Proxy server. | URL string. | +| `HTTPS_PROXY` | URL of the HTTPS Proxy server. | URL string. | +| `IMAGE_REGISTRY` | The image registry to use for tagging the generated provider images. | Your image registry hostname, without `http` or `https`
Example: docker.io/spectrocloud. | +| `IMAGE_REPO` | The image repository to use for tagging the generated provider images. | Your image repository name. | +| `ISO_NAME` | Name of the Installer ISO file. | Lowercase alphanumeric string without spaces. The characters `-` and `_` are allowed. | +| `K8S_DISTRIBUTION` | Kubernetes distribution. | ` k3s`, `rke2`, `kubeadm`, `kubeadm-fips`. | +| `NO_PROXY` | URLS that should be excluded from the proxy. | Comma-separated URL string. | +| `OS_DISTRIBUTION` | OS distribution. | `ubuntu`, `opensuse-leap`, `rhel`. | +| `OS_VERSION` | OS version. This applies to Ubuntu only. | `20`, `22`. | +| `PROXY_CERT_PATH` | Absolute path of the SSL Proxy certificate in the PEM format. | Absolute path string. | +| `UPDATE_KERNEL` | Determines whether to upgrade the Kernel version to the latest from the upstream OS provider. | `true`, `false`. | diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-artifacts.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-artifacts.md new file mode 100644 index 0000000000..86329a1aa5 --- /dev/null +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-artifacts.md @@ -0,0 +1,264 @@ +--- +sidebar_label: "Build Edge Artifacts using a Content Bundle" +title: "Build Edge Artifacts using a Content Bundle" +description: "Learn how to build an Edge installer ISO using the Palette Edge CLI and the CanvOS utilities." +icon: "" +hide_table_of_contents: false +sidebar_position: 30 +tags: ["edge"] +--- + +Palette's Edge solution supports creating Edge artifacts for edge devices deployed in a low internet bandwidth +environment or a disconnected environment. A disconnected environment is a deployment site with no network access to a +Palette instance. Using a content bundle, you can build Edge artifacts for installation in such environments. + +A content bundle is an archive that includes the Operating System (OS) image, the Kubernetes distribution, the Network +Container Interface (CNI), and all other dependencies specified in the cluster profiles you want to deploy to the Edge +cluster. A content bundle provides several benefits, such as: + +- Software dependencies are pre-loaded into the installer image. + +- Optimizes the deployment process for bandwidth-constrained environments or air-gapped environments. + +- The ability to more granularly manage the software dependencies available to Edge clusters. + +This how-to guide provides instructions for creating and using a content bundle to build the Edge artifacts. You will +begin with installing a necessary tool, the Palette Edge CLI, on your development machine. The Palette Edge CLI is a +command-line utility to interact with Palette and perform specific tasks in your development environment, such as +creating a content bundle. Next, you will download all the software dependencies mentioned in your cluster profile using +the Palette Edge CLI and create a content bundle. Lastly, when your content bundle is ready, you will use the EdgeForge +utility to embed the content bundle and user data into the Edge installer ISO image. + +The diagram below displays the overarching steps to build the Edge installer ISO using a content bundle. The diagram +also highlights the primary prerequisites to create a content bundle. + +![An overarching diagram displaying the workflow in the current guide.](/clusters_edge_edge-forge-workflow_build-images_build-artifacts_overarching.webp) + +## Prerequisites + +:::warning + +This how-to guide extends the [Build Edge Artifacts](palette-canvos.md) workflow. Therefore, you must complete it before +proceeding with the current guide. + +::: + +To complete this guide, you will need the following items: + +- A physical or virtual Linux machine with _AMD64_ (also known as _x86_64_) processor architecture to build the Edge + installer ISO image. You can issue the following command in the terminal to check your processor architecture. + + ```bash + uname -m + ``` + +- The Linux machine should have the following minimum hardware configuration: + + - 4 CPU + - 8 GB memory + - 100 GB storage. The actual storage will depend on the size of the content bundle you will use to build the Edge + installer ISO image. + +- You must have completed the [Build Edge Artifacts](palette-canvos.md) guide to build the provider images and create a + cluster profile referencing one of the provider images. + +- A Spectro Cloud API key. Later in this guide, you will use this API key to authenticate the Palette Edge CLI utility + and allow it to interact with Palette. Refer to the + [User Authentication](/docs/docs-content/user-management/authentication/api-key/create-api-key.md) guide to create a + new API key. + +## Instructions + +Use the following instructions on your Linux machine, which this guide refers to as the development environment. + +1. Visit the [Downloads](../../../../spectro-downloads.md#palette-edge-cli) page and download the latest Palette Edge + CLI. You can download the Palette Edge CLI by clicking on the available URL or using the download URL in the + following command. Replace the `[PALETTE-EDGE-BINARY-URL]` placeholder with the download URL. + + ```bash + curl [PALETTE-EDGE-BINARY-URL] --output palette-edge + ``` + +2. Open a terminal session and navigate to the folder where you have downloaded the palette-edge binary. Set the + executable permissions for the palette-edge binary by issuing the following command. + + ```bash + chmod +x palette-edge + ``` + +3. Use the following command to move the palette-edge binary to the **/usr/local/bin** directory to make the binary + available in your system $PATH. This will allow you to issue the `palette-edge` command from any directory in your + development environment. + + ```bash + mv palette-edge /usr/local/bin + ``` + +4. Verify the installation of the Palette Edge CLI by issuing the following command. The output will display + information about the currently supported OS and Kubernetes distributions. + + ```bash + palette-edge show + ``` + + ```hideClipboard bash + # Sample output + ┌────────────────────────────────────────────────────────────────────────┐ + | OS Flavor | Description | Base Image URI | + | opensuse-leap | Opensuse Leap 15.4 | quay.io/kairos/core-opensuse-leap | + | ubuntu-20 | Ubuntu 20.4 LTS | quay.io/kairos/core-ubuntu-20-lts | + | ubuntu-22 | Ubuntu 22.4 LTS | quay.io/kairos/core-ubuntu-22-lts | + └────────────────────────────────────────────────────────────────────────┘ + ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ + | K8S Flavor | Description | Supported Versions | + | k3s | Rancher K3s | 1.25.2-k3s1,1.24.6-k3s1,1.23.12-k3s1,1.22.15-k3s1 | + | kubeadm | Kubernetes kubeadm | 1.25.2,1.24.6,1.23.12,1.22.15 | + | rke2 | Rancher RK2 | 1.25.2-rke2r1,1.24.6-rke2r1,1.23.12-rke2r1,1.22.15-rke2r1 | + └─────────────────────────────────────────────────────────────────────────────────────────────┘ + ┌─────────────────────────────────┐ + | Component | Version | + | Spectro Agent Version | v3.4.3 | + | Kairos Version | v2.0.3 | + └─────────────────────────────────┘ + ``` + +5. Set the Palette API key as an environment variable by issuing the following command. Replace the + `[USE-YOUR-API-KEY_HERE]` placeholder with your API key. The Palette Edge CLI will use this API key to authenticate + with Palette. Once authenticated, the Palette Edge CLI can interact with your Palette account. + + ```bash + export API_KEY=[USE-YOUR-API-KEY_HERE] + ``` + +6. Log in to [Palette](https://console.spectrocloud.com). + +7. Copy your Palette project ID. You will use this ID in a later step. The project ID is on the top-right corner of + your Palette project overview page. Use the following screenshot to help you find your project ID. + + ![A screenshot highlighting the project ID in Palette project overview page](/clusters_edge_edge-forge-workflow_build-images_build-project_id.webp) + +8. Navigate to the left **Main Menu** and select **Profiles**. + +9. Select the cluster profile you want to include in the content bundle. Click on the target cluster profile to access + its details page. + +10. Examine the cluster details page URL. The cluster details page URL follows the + `[Palette-URL]/projects/[PROJECT-ID]/profiles/cluster/[CLUSTER-PROFILE-ID]` syntax. The cluster details page URL has + your project ID and the cluster profile ID. For example, the screenshot below highlights the project ID and the + cluster profile ID in a cluster details page URL. + + ![A screenshot highlighting the cluster profile ID and project ID in the URL of the cluster details page.](/clusters_edge_edge-forge-workflow_build-images_build-artifacts_url.webp) + +11. Copy the cluster profile ID from the cluster details page URL for the next step. + +12. Switch back to your development environment, and set the project ID as an environment variable by issuing the + following command. Replace the `[USE-YOUR-PROJECT-ID_HERE]` placeholder with your project ID. + + ```bash + export PROJECT_ID=[USE-YOUR-PROJECT-ID_HERE] + ``` + +13. Set the cluster profile ID as an environment variable using the following command. Replace the + `[USE-YOUR-PROFILE-ID_HERE]` placeholder with your cluster profile ID. The Palette Edge CLI uses the cluster profile + ID to reference the correct cluster profile and download all its software dependencies. + + ```bash + export PROFILE_ID=[USE-YOUR-PROFILE-ID_HERE] + ``` + +14. Issue the command below to create the content bundle. The `build` command uses the following flags: + + | **Command Flag** | **Value** | + | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | + | `--api-key` | Spectro Cloud API key | + | `--project-id` | Palette project ID | + | `--cluster-profile-ids` | Cluster profile IDs. If you want to include multiple cluster profiles in the content bundle, add multiple cluster profile IDs separated by a comma. | + | `--palette-endpoint` | Palette API endpoint. The default Palette API endpoint is `api.spectrocloud.com` | + | `--outfile` | Path to write the final content bundle. | + + You can issue `palette-edge build --help` to know about other available flags. + + ```bash + palette-edge build --api-key $API_KEY \ + --project-id $PROJECT_ID \ + --cluster-profile-ids $PROFILE_ID \ + --palette-endpoint api.spectrocloud.com \ + --outfile content + ``` + +15. Use the command below to list all files in the current directory to verify that you created the content bundle + successfully. The content bundle will have the following naming convention, `content-[random-string]`, for example, + **content-8e61a9e5**. + + ```bash + ls -al + ``` + +16. List the files in the content bundle folder using the following command. The output will display the compressed core + and app content files. + + ```bash + ls -al content-*/ + ``` + + ```hideClipboard bash + # Sample output + total 3981104 + -rw-rw-r-- 1 jb jb 1598552722 Jul 26 18:20 app-content-8e61a9e5.zst + -rw-rw-r-- 1 jb jb 2478086360 Jul 26 18:20 core-content-8e61a9e5.zst + ``` + +17. Issue the following command to build the Edge artifacts with your content bundle. The `+iso` option specifies the + build target. This command will generate an ISO image from the content bundle and other configurations you have + specified in the **.arg** and **user-data** files. + + ```bash + sudo ./earthly.sh +iso + ``` + + This command may take up to 15-20 minutes to finish depending on the resources of the host machine. + +## Validate + +List the Edge installer ISO and checksum by issuing the following command from the **CanvOS/** directory. + +```shell +ls build/ +``` + +```hideClipboard shell +palette-edge-installer.iso +palette-edge-installer.iso.sha256 +``` + +To validate, you can prepare an edge device using the Edge installer ISO. You can follow the +[Prepare Edge Host for Installation](../../site-deployment/stage.md) guide if you prepare a bare metal machine or a +VMware VM as a host. Below are the high-level steps for your reference: + +1. Create a bootable USB flash drive using any third-party software. Most software that creates a bootable USB drive + will validate the ISO image. + +2. Select a physical or virtual host machine to emulate as an edge device. Enable (Dynamic Host Configuration Protocol) + DHCP on the host before proceeding with the installation process. Enabling DHCP is necessary for the device to obtain + an IP address automatically from the network. + +3. Flash the edge device with a bootable USB drive. + +4. The last step is to power on the edge device and start the installation process. For more information, refer to the + [Perform Site Install](../../site-deployment/site-installation/site-installation.md) documentation. + +## Next Steps + +Palette's Edge solution allows you to create Edge artifacts using a content bundle for edge devices deployed in low +internet bandwidth or air-gapped environments. You created a content bundle using the Palette Edge CLI in this guide. +Next, you used the CanvOS utility to embed the content bundle and user data into an Edge installer ISO. + +As the next step, we recommend you check out the end-to-end tutorial, +[Deploy an Edge Cluster on VMware](../../site-deployment/deploy-cluster.md). The tutorial provides a detailed +walkthrough on deploying an Edge cluster in a VMware environment. + +Check out the reference resources below to learn more about preparing an Edge host. + +- [Prepare Edge Host for Installation](../../site-deployment/stage.md) + +- [Perform Site Install](../../site-deployment/site-installation/site-installation.md) diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-installer-iso.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-installer-iso.md new file mode 100644 index 0000000000..86976ee5c8 --- /dev/null +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-installer-iso.md @@ -0,0 +1,194 @@ +--- +sidebar_label: "Build Installer ISO" +title: "Build Installer ISO" +description: "Learn how to build the Palette Edge Installer ISO using the EdgeForge utilities." +icon: "" +hide_table_of_contents: false +sidebar_position: 30 +tags: ["edge"] +--- + +The Edge Installer ISO is a file that bootstraps the installation and is created in the EdgeForge process. The ISO image +contains the Edge Installer that installs the Palette Edge host agent and metadata to perform the initial installation. + +:::info + +The Edge Installer ISO is one of the critical artifacts you need to build during EdgeForge. The other artifact is +provider images. Both are required for Edge deployment. For education purposes, we provide separate instructions for +building the installer ISO and the provider images. However, these two artifacts are often built together in a single +step in practice. Refer to [Build Edge Artifacts](palette-canvos.md) for an how-to that covers how to build both +artifacts at the same time. + +::: + +You can build the following content into the Edge installer ISO to customize your installation: + +- User data. This is a YAML file that contains the configuration for the Edge Installer. For all available configuration + options, refer to [Installer Configuration](../../edge-configuration/installer-reference.md). User data is required + for the installer ISO. + - If you do not include the user data file during the Edge Installer ISO build process, you must provide this + configuration before the installation takes place with site user data. For more information, refer to + [Apply Site User Data](../../site-deployment/site-installation/site-user-data.md). +- Content bundles. This is an archive of all images, Helm charts and packs used for any number of specified cluster + profiles. Content bundles are optional to include in an installer ISO. +- Cluster definition (Tech Preview). Cluster definitions contains cluster profiles and any profile variables used in the + profiles. When you include a cluster definition during the Edge Installer ISO build process, you can create a new + cluster that uses your imported cluster definition in your Edge host using the local UI. Cluster definitions are + optional to include in an installer ISO. + + :::preview + + ::: + +The benefits of building the installer configuration, content bundles, and cluster definition into the installer ISO is +that you can ensure the standardization of your Edge deployments through the installer. Whether you build the content +into the installer ISO or not, you always have the option of uploading them or changing them later in the deployment +process. + +## Prerequisites + +- A physical or virtual Linux machine with _AMD64_ (also known as _x86_64_) processor architecture to build the Edge + artifacts. You can issue the following command in the terminal to check your processor architecture. + + ```bash + uname -m + ``` + +- Minimum hardware configuration of the Linux machine: + + - 4 CPU + - 8 GB memory + - 50 GB storage + +## Instructions + +Use the following instructions to build the Edge Installer ISO. The optional steps can be completed any order. + +### Clone EdgeForge Repository + +1. Clone the **CanvOS** repository. + + ```shell + git clone https://github.com/spectrocloud/CanvOS.git + ``` + +2. Change to the **CanvOS/** directory. + + ```shell + cd CanvOS + ``` + +3. View the available git tag. + + ```shell + git tag + ``` + +4. Check out the latest available tag. This guide uses the tag v4.3.0 as an example. + + ``` + git checkout v4.3.0 + ``` + +### Prepare **.arg** file + +5. Review the **.arg.template** file to view a template of all the arguments that are used during the build process. + Since the process to build provider images uses the same **.arg** file, some of the arguments in the template are + related to the provider images. Refer to [Edge Artifact Build Configuration](./arg.md) for all available + configuration parameters. + +6. Customize these arguments to use during the build process. The following is an example **.arg** file. + + ``` + CUSTOM_TAG=palette-learn + IMAGE_REGISTRY=ttl.sh + OS_DISTRIBUTION=ubuntu + IMAGE_REPO=ubuntu + OS_VERSION=22.04 + K8S_DISTRIBUTION=k3s + ISO_NAME=palette-edge-installer + ARCH=amd64 + HTTPS_PROXY= + HTTP_PROXY= + PROXY_CERT_PATH= + UPDATE_KERNEL=false + EOF + ``` + +### Prepare User Data + +7. Refer to [Prepare User Data](./../prepare-user-data.md) to prepare the **user-data** file in the root directory of + the **CanvOS** directory. + + User data contains installer configuration and is required for an installer ISO. If you do not supply user data + during this step, you must provide site user data before installation takes place. You can also use site user data to + override or supplement configuration you provided to the installer ISO. For more information, refer to + [Apply Site User Data](../../site-deployment/site-installation/site-user-data.md). + +### Build Content Bundle + +Optionally, you can include a content bundle in your Edge installer ISO. When you include a content bundle in your Edge +Installer ISO, you can provision a cluster using the images in your content bundle without connections to an external +image registry. + +If you do not include content bundle in your Edge Installer ISO, you can still build content bundles and upload them to +a disconnected Edge host instance via the [local UI](../../local-ui/local-ui.md). For more information, refer to +[Upload Content Bundle](../../local-ui/cluster-management/upload-content-bundle.md). + +8. Refer to [Build Content Bundle](../build-content-bundle.md) to learn how to build content bundles for your ISO image. + Since you are including the content bundle in the Installer ISO, you should choose either the zst format or the tar + format for the content bundle. Do not build the content bundle as an ISO image. + +9. When the content bundle build finishes, the output will be in a directory named **content-XXXXXX**, where XXXXXX is a + random alphanumerical string. Inside the directory is the content bundle file. + +10. Place the directory containing the content bundle file in the root directory of the **CanvOS** directory. + +### Prepare Cluster Definition (Tech Preview) + +Optionally, you can include a cluster definition in your Edge Installer ISO. Cluster definitions include one or more +cluster profile and any dynamic values used in the cluster profiles. Cluster definitions can be exported from an Palette +API endpoint. + +If you do not include cluster definitions in your Edge Installer ISO, you can still import the cluster definition from +the local UI once you finish installing Palette on the Edge host. + +11. Refer to [Export Cluster Definition](../../local-ui/cluster-management/export-cluster-definition.md) to learn how to + export cluster definitions. + +12. Put the cluster definition tgz file in the **CanvOS/** directory. + +13. In the **.arg** file, add an argument `CLUSTERCONFIG` and set it to the name of the cluster configuration file. For + example: + + ``` + CLUSTERCONFIG=demo-cluster-65cbe80213d15e81c308748b.tgz + ``` + +### Build Edge Installer ISO + +14. Ensure that all components of the ISO you want to include are in the **CanvOS/** directory: + + - **.args** file: **CanvOS/.args** + - User data: **CanvOS/user-data** + - Content bundle: **CanvOS/content-XXXXX/core-spectro-content** + - Cluster definition: **CanvOS/cluster-name-XXXX.tgz** + +15. Issue the following command to build the ISO image. + + ```shell + ./earthly.sh +iso + ``` + + ``` + # Output condensed for readability + ===================== Earthly Build SUCCESS ===================== + Share your logs with an Earthly account (experimental)! Register for one at https://ci.earthly.dev. + ``` + + When the build finishes, the ISO image can be found in the **build/** folder. + +## Validate + +You can validate that the ISO image has not been corrupted by attempting to flash a bootable device. Most software that +creates a bootable device will validate the ISO image before the flash process. diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-provider-images.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-provider-images.md new file mode 100644 index 0000000000..f53f321f52 --- /dev/null +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-provider-images.md @@ -0,0 +1,193 @@ +--- +sidebar_label: "Build Provider Images" +title: "Build Provider Images" +description: "Learn how to build provider images using the Palette Edge CLI and the EdgeForge utilities." +icon: "" +hide_table_of_contents: false +sidebar_position: 30 +tags: ["edge"] +--- + +In this guide, you will use the CanvOS utility to build provider images for your Edge deployment. Provider images are +Kairos-based images containing the OS and the desired Kubernetes versions. These images install an immutable Operating +System (OS) and software dependencies compatible with a specific Kubernetes version during the cluster deployment. A +provider image is used in the OS and the Kubernetes layer when creating a cluster profile. These container images are +downloaded during the installation by the Edge Installer and converted to disk images for the system to boot into. + +:::info + +The provider images are one of the critical artifacts you need to build during EdgeForge. The other artifact is the Edge +Installer ISO. Both are required for Edge deployment. For education purposes, we provide separate instructions for +building the installer ISO and the provider images. However, these two artifacts are often built together in a single +step in practice. Refer to [Build Edge Artifacts](palette-canvos.md) for an how-to that covers how to build both +artifacts at the same time. + +::: + +## Prerequisites + +- A physical or virtual Linux machine with _AMD64_ (also known as _x86_64_) processor architecture to build the Edge + artifacts. You can issue the following command in the terminal to check your processor architecture. + + ```bash + uname -m + ``` + +- Minimum hardware configuration of the Linux machine: + + - 4 CPU + - 8 GB memory + - 50 GB storage + +- [Git](https://cli.github.com/manual/installation). You can ensure git installation by issuing the `git --version` + command. + +- [Docker Engine](https://docs.docker.com/engine/install/) version 18.09.x or later. You can use the `docker --version` + command to view the existing Docker version. You should have root-level or `sudo` privileges on your Linux machine to + create privileged containers. + +## Build Provider Images + +1. Check out the [CanvOS](https://github.com/spectrocloud/CanvOS) GitHub repository containing the starter code. + + ```bash + git clone https://github.com/spectrocloud/CanvOS.git + ``` + +2. Change to the **CanvOS/** directory. + + ```bash + cd CanvOS + ``` + +3. View the available [git tag](https://github.com/spectrocloud/CanvOS/tags). + + ```bash + git tag + ``` + +4. Check out the newest available tag. This guide uses the tag **v4.3.0** as an example. + + ```shell + git checkout v4.3.0 + ``` + +5. Review the files relevant for this guide. + + - **.arg.template** - A sample **.arg** file that defines arguments to use during the build process. + + - **Earthfile** - Contains a series of commands to create target artifacts. + + - **earthly.sh** - Script to invoke the Earthfile, and generate target artifacts. + +6. Review the **.arg** file containing the customizable arguments, such as image tag, image registry, image repository, + and OS distribution. The table below shows all arguments, their default value, and allowed values. + + | **Argument** | **Description** | **Default Value** | **Allowed Values** | + | ------------------ | ------------------------------------------------------------------- | ------------------ | ---------------------------------------------------------------------------------------------- | + | `CUSTOM_TAG` | Tag for the provider images | demo | Lowercase alphanumeric string without spaces. | + | `IMAGE_REGISTRY` | Image registry name | ttl.sh | Your image registry hostname, without `http` or `https`
Example: docker.io/spectrocloud | + | `OS_DISTRIBUTION` | OS Distribution | ubuntu | ubuntu, opensuse-leap | + | `IMAGE_REPO` | Image repository name.
It is the same as the OS distribution. | `$OS_DISTRIBUTION` | Your image repository name. | + | `OS_VERSION` | OS version, only applies to Ubuntu | 22.04 | 20, 22.04 | + | `K8S_DISTRIBUTION` | Kubernetes Distribution | k3s | k3s, rke2, kubeadm | + | `ARCH` | Architecture of the image. | `amd64` | `amd64`, `arm64` | + +7. Issue the command below to assign an image tag value that will be used when creating the provider images. This guide + uses the value `palette-learn` as an example. However, you can assign any lowercase and alphanumeric string to the + `CUSTOM_TAG` argument. + + ```bash + export CUSTOM_TAG=palette-learn + ``` + +8. Use the command below to save the Docker Hub image registry hostname in the `IMAGE_REGISTRY` argument. Before you + execute the command, replace `[DOCKER-ID]` in the declaration below with your Docker ID. Your image registry hostname + must comply with standard DNS rules and may not contain underscores. + + ```bash + export IMAGE_REGISTRY=docker.io/[DOCKER-ID] + ``` + +9. Issue the following command to use the Ubuntu OS distribution and use the 22.04 version. + + ```bash + export OS_DISTRIBUTION=ubuntu + export OS_VERSION=22.04 + ``` + +10. Issue the command below to create the **.arg** file containing the custom tag, Docker Hub image registry hostname, + and openSUSE Leap OS distribution. The **.arg** file uses the default values for the remaining arguments. You can + refer to the existing **.arg.template** file to learn more about the available customizable arguments. + + ```bash + cat << EOF > .arg + IMAGE_REGISTRY=$IMAGE_REGISTRY + OS_DISTRIBUTION=$OS_DISTRIBUTION + OS_VERSION=$OS_VERSION + IMAGE_REPO=$OS_DISTRIBUTION + CUSTOM_TAG=$CUSTOM_TAG + K8S_DISTRIBUTION=k3s + ARCH=amd64 + HTTPS_PROXY= + HTTP_PROXY= + PROXY_CERT_PATH= + UPDATE_KERNEL=false + EOF + ``` + +11. Open the **Earthfile** in the CanvOS directory. Under `build-provider-images`, remove the lines containing + Kubernetes versions that you do not need. + +12. CanvOS utility uses [Earthly](https://earthly.dev/) to build the target artifacts. Issue the following command to + start the build process. + + ```bash + sudo ./earthly.sh +build-provider-images + ``` + + ```hideClipboard bash {2} + # Output condensed for readability + ===================== Earthly Build SUCCESS ===================== + Share your logs with an Earthly account (experimental)! Register for one at https://ci.earthly.dev. + ``` + +13. To use the provider images in your cluster profile, push them to your image registry mentioned in the **.arg** file. + Issue the following command to log in to Docker Hub. Provide your Docker ID and password when prompted. + + ```bash + docker login + ``` + +14. Use the following commands to push the provider images to the Docker Hub image registry you specified. Replace the + `[DOCKER-ID]` and version numbers in the command below with your Docker ID and respective Kubernetes versions that + the utility created. + + ```bash + docker push docker.io/[DOCKER-ID]/ubuntu:k3s-1.28.2-v4.3.0-palette-learn + ``` + +## Validate + +1. List the Docker images to review the provider images created. You can identify the provider images by reviewing the + image tag value you used in the **.arg** file's `CUSTOM_TAG` argument. + + ``` + docker images --filter=reference='*/*:*palette-learn' + ``` + +2. Verify that the provider images were created successfully. + + ```hideClipboard + REPOSITORY TAG IMAGE ID CREATED SIZE + docker.io/[DOCKER-ID]/ubuntu k3s-1.28.2-v4.3.0-palette-learn 075134ad5d4b 10 minutes ago 4.11GB + ``` + +## Next Steps + +Provider images are only one the artifacts you need to provision an Edge deployment. You also need to build the Edge +Installer ISO that matches your provider image settings. Refer to [Build Edge Installer ISO](./build-installer-iso.md) +for more information. + +If you have built both provider images and the installer ISO, refer to +[Site Deployment](../../site-deployment/site-deployment.md) to learn how to deploy your Edge cluster. diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/fips.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/fips.md new file mode 100644 index 0000000000..58ccc77d48 --- /dev/null +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/fips.md @@ -0,0 +1,253 @@ +--- +sidebar_label: "Build FIPS-Compliant Edge Artifacts" +title: "Build FIPS-Compliant Edge Artifacts" +description: "Learn how to build Edge Installer ISO and provider images to install FIPS-compliant Palette Edge." +icon: "" +hide_table_of_contents: false +sidebar_position: 30 +tags: ["edge"] +--- + +Palette Edge supports +[Federal Information Processing Standards](https://www.nist.gov/standardsgov/compliance-faqs-federal-information-processing-standards-fips) +(FIPS)-compliant Edge clusters. To deploy a FIPS-compliant Edge cluster, you need to build FIPS-enabled Edge artifacts. +Both the Edge Installer ISO and the provider images must be FIPS-compliant. + +This page guides you through the process of building FIPS-compliant Edge Installer ISO and provider images. + +## Prerequisites + +- A physical or virtual Linux machine with _AMD64_ (also known as _x86_64_) processor architecture to build the Edge + artifacts. You can issue the following command in the terminal to check your processor architecture. + + ```bash + uname -m + ``` + +- Minimum hardware configuration of the Linux machine: + + - 4 CPU + - 8 GB memory + - 50 GB storage + +- Depending on the Operating System (OS) you want to use on your Edge host, you will need the following subscription + credentials: + + - Red Hat Enterprise Linux (RHEL): RHEL subscription token. + - Ubuntu Pro: Ubuntu Pro subscription token. + + Contact your system administrator for access to the subscription credentials. + +- [Git](https://cli.github.com/manual/installation). You can ensure git installation by issuing the `git --version` + command. + +- [Docker Engine](https://docs.docker.com/engine/install/) version 18.09.x or later. You can use the `docker --version` + command to check the existing Docker version. You should have root-level or `sudo` privileges on your Linux machine to + create privileged containers. + +- A [VerteX](/docs/docs-content/vertex/vertex.md) account. Refer to + [Palette VerteX](/docs/docs-content/vertex/vertex.md#access-palette-vertex) for information on how to set up a VerteX + account. + +- VerteX registration token for pairing Edge hosts with VerteX. You will need tenant admin access to VerteX to generate + a new registration token. For detailed instructions, refer to the + [Create Registration Token](/clusters/edge/site-deployment/site-installation/create-registration-token) guide. + +## Build FIPS-Enabled Edge Artifacts + +### Clone CanvOS Repository + +1. Clone the [CanvOS](https://github.com/spectrocloud/CanvOS) GitHub repository containing the starter code. + + ```bash + git clone https://github.com/spectrocloud/CanvOS.git + ``` + +2. Change to the **CanvOS/** directory. + + ```bash + cd CanvOS + ``` + +3. Ensure that you are using the **main** branch of the repository. + + ```bash + git tag + ``` + +### Build FIPS-Compliant Base OS Image + +Before you can build the Edge Installer ISO or the provider images, you need to build a FIPS-compliant OS base image +with the Kairos framework. This base image is then used to build the final Edge artifacts. + +Palette supports the RHEL and Ubuntu for FIPS-compliant base OS images. Choose the OS that you want to build the base +image with. + + + + + +5. Change into the **rhel-fips** directory. + +6. In the file **Dockerfile**, provide your RHEL subscription username and password. + + ```text + ARG USERNAME=name@spectrocloud.com + ARG PASSWORD=*********** + ``` + +7. Issue the following command to start building the provider images. + + ```shell + bash build.sh + ``` + + :::info + + If you experience issues with the script not recognizing the RHEL credentials, try searching **Dockerfile** for the + following line and replacing the credentials directly: + + ```dockerfile + RUN rm /etc/rhsm-host && subscription-manager register --username 'your-username' --password '*******' \ + ``` + + ::: + +8. When the build finishes, issue `docker images` and confirm there is an image named `rhel-byoi-fips:latest`. This is + the base image that you will use to build provider images and the Edge installer ISO later on. + +9. Tag the image with a repository that is accessible by your Linux machine. For example, the following command uses the + publicly accessible `ttl.sh` repository. + + ```shell + docker tag rhel-byoi-fips:latest ttl.sh/rhel/rhel-byoi-fips:latest + ``` + +10. Push the image to the repository. + + ```shell + docker push ttl.sh/rhel/rhel-byoi-fips:latest + ``` + + + + + +5. Change into the **ubuntu-fips** directory. + +6. In the file **pro-attach-config.yaml**, provide your Ubuntu Pro subscription token. + + ```yaml + token: ******* + ``` + +7. Issue the following command to start building the provider images. + + ```shell + bash build.sh + ``` + +8. When the build finishes, issue `docker images` and confirm there is an image named `ubuntu-focal-fips:latest`. This + is the base image that you will use to build provider images and the Edge installer ISO later on. + +9. Tag the image with a repository that is accessible by your Linux machine. For example, use the publicly accessible + `ttl.sh` repository. + + ```shell + docker tag ubuntu-focal-fips:latest ttl.sh/ubuntu/ubuntu-focal-fips:latest + ``` + +10. Push the image to the repository. + + ```shell + docker push ttl.sh/ubuntu/ubuntu-focal-fips:latest + ``` + + + + + +### Build Edge Installer ISO + +11. Return to the **CanvOS** directory. + + ```shell + cd .. + ``` + +12. Create a file named **.arg**. This file will contain parameters that customize the Edge Installer ISO build. + +13. In the **.arg** file, provide the following required information. Refer to + [Edge Artifact Build Configuration](arg.md) for more information. + + | Argument | Description | + | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | IMAGE_REGISTRY | The image registry to use for tagging the generated provider images. | + | OS_DISTRIBUTION | The OS distribution in your provider image. | + | IMAGE_REPO | The image repository to use for tagging the generated provider images. | + | OS_VERSION | The OS version in your provider image. This applies to Ubuntu only. | + | K8S_DISTRIBUTION | The Kubernetes distribution for your provider image. Allowed values are `rke2` (RKE2) and `kubeadm-fips` (PXK-E). The other distributions are not FIPS-compliant. | + | FIPS_ENABLED | Whether to enable FIPS compliance. This parameter must be set to `true`. | + | ARCH | The architecture of the image. Allowed values are `amd64` and `arm64`. | + | BASE_IMAGE | The base image used by EdgeForge to build the Edge Installer and provider images. This must be the same image that you build in the previous step. | + | ISO_NAME | The file name of the ISO file that will be generated. | + +14. Create a file named **user-data**. Add the following blocks to the root level of the **user-data** file. Replace the + value for `edgeHostToken` with your VerteX registration token, and replace the value `paletteEndPoint` with the URL + of your VerteX instance. + + ```yaml + install: + grub_options: + extra_cmdline: "fips=1" + + stylus: + site: + edgeHostToken: ******** + paletteEndpoint: https://vertex.palette-devx.spectrocloud.com + ``` + +15. Add further customization to the **user-data** file as needed. This file configures the Edge Installer. Refer to + [Installer Reference](../../edge-configuration/installer-reference.md) for more information. + +16. Issue the following command to build the Edge Installer ISO. + + ```shell + ./earthly.sh +iso + ``` + + When the build finishes, the ISO file will be generated in the **build** directory under the name you specified in + your **.arg** file. + +### Build Provider Images + +Provider images are Kairos-based container images for a supported OS and Kubernetes distribution combination. +FIPS-complaint provider images are built on top of the base OS image you have built previously. + +17. Locate **Earthfile** in the CanvOS directory. In the file, find the block that starts with + `build-provider-images-fips:` and delete the Kubernetes versions that you do not want. This will speed up the build + process and save storage space. + +18. Review the **.arg** file again to ensure the parameters are correct. Issue the following command to build the + provider images. + + ```shell + ./earthly +build-provider-images-fips + ``` + + :::warning + + For the Kubernetes distribution set in your **.arg** file, only `rke2` and `kubeadm-fips` will produce + FIPS-compliant provider images. + + ::: + +## Validate + +1. Follow the [Site Installation](../../site-deployment/stage.md) guide to install the Palette Edge on your Edge host. + +2. Issue the following command and ensure that the output is `1`. This means the OS is FIPS enabled. + + ```shell + cat /proc/sys/crypto/fips_enabled + ``` diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md similarity index 95% rename from docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos.md rename to docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md index 821cd45d5f..c35a047eb2 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md @@ -13,8 +13,8 @@ tags: ["edge"] --- Palette's Edge solution requires Edge hosts to be ready with the required dependencies and -[user data](../edge-configuration/installer-reference.md) configurations before deploying a Kubernetes cluster. An Edge -host requires the following artifacts to prepare for successful cluster deployment: +[user data](../../edge-configuration/installer-reference.md) configurations before deploying a Kubernetes cluster. An +Edge host requires the following artifacts to prepare for successful cluster deployment: - **Edge installer ISO image** - This bootable ISO image installs the necessary dependencies and configurations on a bare host machine. During installation, the host machine will boot from the Edge installer ISO, partition the disk, @@ -32,6 +32,9 @@ an Edge installer ISO image and provider images for all the Palette-supported Ku multiple provider images, so you can use either one that matches the desired Kubernetes version you want to use with your cluster profile. +If you want to build the ISO image and the provider images individually, refer to +[Build Provider Images](./build-provider-images.md) and [Build Installer ISO](./build-installer-iso.md). + :::info CanvOS is a utility that helps you build Edge artifacts. CanvOS is part of the EdgeForge workflow. @@ -75,8 +78,7 @@ To complete this basic guide, you will need the following items: - 8 GB memory - 50 GB storage -- [Git](https://cli.github.com/manual/installation). You can ensure git installation by issuing the `git --version` - command. +- [Git](https://git-scm.com/downloads). You can ensure git installation by issuing the `git --version` command. - [Docker Engine](https://docs.docker.com/engine/install/) version 18.09.x or later. You can use the `docker --version` command to view the existing Docker version. You should have root-level or `sudo` privileges on your Linux machine to @@ -143,8 +145,8 @@ export CUSTOM_TAG=palette-learn :::info The default ttl.sh image registry is free and does not require a sign-up. Images pushed to ttl.sh are ephemeral and will -expire after the 24 hrs time limit. Should you need to use a different image registry, refer to the Advanced workflow in -the [Build Edge Artifacts](palette-canvos.md) guide. +expire after the 24 hrs time limit. Should you need to use a different image registry, refer to the Advanced workflow on +this page. ::: @@ -320,7 +322,7 @@ images accordingly. 15. Navigate to the left **Main Menu** and select **Profiles**. Click on the **Add Cluster Profile** button, and fill out the required basic information fields to create a cluster profile for Edge. -16. Add the following [BYOS Edge OS](../../../integrations/byoos.md) pack to the OS layer in the **Profile Layers** +16. Add the following [BYOS Edge OS](../../../../integrations/byoos.md) pack to the OS layer in the **Profile Layers** section. | **Pack Type** | **Registry** | **Pack Name** | **Pack Version** | @@ -371,8 +373,8 @@ The screenshot below displays how to reference a provider image in the BYOOS pac :::info The BYOOS pack's `system.uri` attribute references the Kubernetes version selected in the cluster profile by using the -`{{ .spectro.system.kubernetes.version }}` [macro](../../cluster-management/macros.md). This is how the provider images -you created and pushed to a registry are tied to the OS and Kubernetes version you selected in the **.arg** file. +`{{ .spectro.system.kubernetes.version }}` [macro](../../../cluster-management/macros.md). This is how the provider +images you created and pushed to a registry are tied to the OS and Kubernetes version you selected in the **.arg** file. ::: @@ -435,8 +437,7 @@ To complete this advanced guide, you will need the following items:
- 8 GB memory - 50 GB storage -- [Git](https://cli.github.com/manual/installation). You can ensure git installation by issuing the `git --version` - command. +- [Git](https://git-scm.com/downloads). You can ensure git installation by issuing the `git --version` command. - [Docker Engine](https://docs.docker.com/engine/install/) version 18.09.x or later. You can use the `docker --version` command to view the existing Docker version. You should have root-level or `sudo` privileges on your Linux machine to @@ -510,7 +511,7 @@ git checkout v4.0.6 | `IMAGE_REPO` | Image repository name.
It is the same as the OS distribution. | `$OS_DISTRIBUTION` | Your image repository name. | | `OS_VERSION` | OS version, only applies to Ubuntu | 22 | 20, 22 | | `K8S_DISTRIBUTION` | Kubernetes Distribution | k3s | k3s, rke2, kubeadm | -| `ISO_NAME` | Name of the Installer ISO | palette-edge-installer | Lowercase alphanumeric string without spaces. The charaters `-` and `_` are allowed. | +| `ISO_NAME` | Name of the Installer ISO | palette-edge-installer | Lowercase alphanumeric string without spaces. The characters `-` and `_` are allowed. | | `ARCH` | Architecture of the image. | `amd64` | `amd64`, `arm64` | | `FIPS_ENABLED` | to generate FIPS compliant binaries `true`or`false` | `false` | `true`, `false` | | `HTTP_PROXY` | URL of the HTTP Proxy server. | `""` | URL string | @@ -565,8 +566,6 @@ EOF View the newly created file to ensure the customized arguments are set correctly. -
- ```bash cat .arg ``` @@ -669,7 +668,8 @@ EOF If you need to pull images from a private image registry, you can supply the credentials for the registry in the user data file in the `registryCredentials` field or in the cluster profile. Credentials specified in **user-data** overwrites the credentials provided in the cluster profile. To learn how to provide credentials in cluster profiles, -refer to [Deploy Cluster with a Private Registry](../site-deployment/deploy-private-registry.md). +refer to +[Deploy Cluster with a Private Registry](../../site-deployment/deploy-custom-registries/deploy-private-registry.md). ::: @@ -680,8 +680,8 @@ cat user-data ``` If you want further customization, check the existing **user-data.template** file, and refer to the -[Edge Configuration Stages](../edge-configuration/cloud-init.md) and -[User Data Parameters](../edge-configuration/installer-reference.md) documents to learn more. +[Edge Configuration Stages](../../edge-configuration/cloud-init.md) and +[User Data Parameters](../../edge-configuration/installer-reference.md) documents to learn more. 14. CanvOS utility uses [Earthly](https://earthly.dev/) to build the target artifacts. Issue the following command to start the build process. @@ -785,7 +785,7 @@ docker push docker.io/[DOCKER-ID]/opensuse-leap:k3s-1.25.2-v4.0.6-palette-learn 19. Navigate to the left **Main Menu** and select **Profiles**. Click on the **Add Cluster Profile** button, and fill out the required basic information fields to create a cluster profile for Edge. -20. Add the following [BYOS Edge OS](../../../integrations/byoos.md) pack to the OS layer in the **Profile Layers** +20. Add the following [BYOS Edge OS](../../../../integrations/byoos.md) pack to the OS layer in the **Profile Layers** section. | **Pack Type** | **Registry** | **Pack Name** | **Pack Version** | @@ -836,8 +836,8 @@ The screenshot below displays how to reference a provider image in the BYOOS pac :::info The BYOOS pack's `system.uri` attribute references the Kubernetes version selected in the cluster profile by using the -`{{ .spectro.system.kubernetes.version }}` [macro](../../cluster-management/macros.md). This is how the provider images -you created and pushed to a registry are tied to the OS and Kubernetes version you selected in the **.arg** file. +`{{ .spectro.system.kubernetes.version }}` [macro](../../../cluster-management/macros.md). This is how the provider +images you created and pushed to a registry are tied to the OS and Kubernetes version you selected in the **.arg** file. ::: @@ -889,6 +889,6 @@ After building the Edge artifacts and creating an Edge cluster profile, the next image to prepare your Edge host. To learn more about utilizing Edge artifacts to prepare Edge hosts and deploy Palette-managed Edge clusters, we encourage you to check out the reference resources below.
-- [Deploy an Edge Cluster on VMware](../site-deployment/deploy-cluster.md) +- [Deploy an Edge Cluster on VMware](../../site-deployment/deploy-cluster.md) -- [Prepare Edge Host for Installation](../site-deployment/stage.md) +- [Prepare Edge Host for Installation](../../site-deployment/stage.md) diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md b/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md index d2205e0a08..7311bd2374 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md @@ -7,8 +7,13 @@ sidebar_position: 0 tags: ["edge"] --- -The Edge Installer supports using a custom configuration file in the format of a YAML that you can use to customize the -installation process. You can provide the customized configuration to the Edge Installer as a user data file. +The Edge Installer supports using a custom configuration file in the format of a YAML file named **user-data** that you +can use to customize the installation. You can provide the customized configuration to the Edge Installer as a user data +file. For more information on how to provide the configuration to the Edge Installer, refer to +[Build Edge Installer ISO](./palette-canvos/build-installer-iso.md). Additionally, you can also provide the +configuration during site deployment as site-specific configuration. This can replace, supplement, or override your +installer configuration you provide to the installer ISO. For more information, refer to +[Apply Site User Data](../site-deployment/site-installation/site-user-data.md). :::info @@ -306,5 +311,11 @@ use case. ## Next Steps -The last step of the EdgeForce workflow is to build the Edge artifacts. Check out the -[Build Edge Artifacts](palette-canvos.md) guide to learn how to create the Edge artifacts. +After you have finalized your Installer configuration, you can build the configuration into the Edge Installer ISO, or +turn the **user-data** file into an ISO file to use before site deployment. + +- Check out the [Build Edge Installer ISO](palette-canvos/palette-canvos.md) guide to learn how to build the Edge + Installer ISO image. + +- Check out the [Apply Site User Data](../site-deployment/site-installation/site-user-data.md) guide to learn how to + provide site user data. diff --git a/docs/docs-content/clusters/edge/local-ui/_category_.json b/docs/docs-content/clusters/edge/local-ui/_category_.json new file mode 100644 index 0000000000..e7e7c54966 --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 40 +} diff --git a/docs/docs-content/clusters/edge/local-ui/cluster-management/_category_.json b/docs/docs-content/clusters/edge/local-ui/cluster-management/_category_.json new file mode 100644 index 0000000000..094470741d --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/cluster-management/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/clusters/edge/local-ui/cluster-management/cluster-management.md b/docs/docs-content/clusters/edge/local-ui/cluster-management/cluster-management.md new file mode 100644 index 0000000000..dd18212e4b --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/cluster-management/cluster-management.md @@ -0,0 +1,24 @@ +--- +sidebar_label: "Cluster Management" +title: "Cluster Management" +description: "Instructions for cluster management with Local UI." +hide_table_of_contents: false +sidebar_position: 32 +tags: ["edge"] +--- + +Local UI allows you to upload content bundles to the Edge host. The content in the content bundles can then be used to +create a single-node cluster consisting of the Edge host itself. You can also import cluster definitions, which is a +bundle of one or more cluster profiles and their profile variables, from Palette to define your Edge cluster. + +:::preview + +::: + +Refer to the following resources to learn how to upload content and create a cluster using the local UI: + +- [Upload Content Bundle](./upload-content-bundle.md) + +- [Export Cluster Definition](./export-cluster-definition.md) + +- [Create Local Cluster](./create-cluster.md) diff --git a/docs/docs-content/clusters/edge/local-ui/cluster-management/create-cluster.md b/docs/docs-content/clusters/edge/local-ui/cluster-management/create-cluster.md new file mode 100644 index 0000000000..3c106e9df3 --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/cluster-management/create-cluster.md @@ -0,0 +1,85 @@ +--- +sidebar_label: "Create Local Cluster" +title: "Create Local Cluster" +description: "Instructions for creating a locally manageg cluster in Edge Host Management Console." +hide_table_of_contents: false +sidebar_position: 32 +tags: ["edge"] +--- + +You can create and manage a single-node cluster locally from the local UI. This page guides you through how to create a +cluster using Local UI. + +:::preview + +::: + +## Limitations + +- You can only create single node clusters consisting solely of the Edge host you create the cluster from. You cannot + include other Edge hosts in the same local or remote network. + +## Prerequisites + +- Network access to the Edge device’s IP and port where the local UI is exposed. The default port is 5080. + +- Credentials to log into the local UI. Any OS user can be used to log in to the local UI. + +- You have uploaded the necessary software artifacts to the Edge host or included the artifacts in the Edge Installer + ISO during EdgeForge. For more information, refer to [Upload Content Bundle](./upload-content-bundle.md) and + [Build Edge Artifacts with Content Bundle](../../edgeforge-workflow/palette-canvos/build-artifacts.md). + +## Create Local Cluster + +1. Log into the local UI by visiting the 5080 port of your Edge device's IP address or domain name. For more + information, refer to [Access Local UI](../host-management/access-console.md). + +2. From the left **Main Menu**, click **Clusters**. + +3. Click **Create cluster**. + +4. Fill out **Basic Information** such as cluster name and tag. Click **Next**. + + | Parameter | Description | + | ------------ | ------------------------------------------------------- | + | Cluster bane | Name of the cluster. | + | Tags | Key-value pairs to provide metadata about your cluster. | + +5. If you built a cluster definition into your Edge installer ISO, you can either choose to use the embedded config or + import a cluster definition file. The embedded config uses a cluster definition you included during the creation of + the ISO image you used to install Palette Edge on your Edge host. Ensure that the final profile for your deployed + cluster contains the pack **Harbor Edge-Native Config**. This pack is required for all disconnected Edge clusters. + + To learn more about how to export a cluster configuration and import it during this step, refer to + [Export Cluster Definition](./export-cluster-definition.md). + + After you finish configuring the cluster profile, click **Next**. + +6. If your selected cluster profile has profile variables, you will now be prompted to enter the values for those + profile variables. The variables with default values will be auto-populated unless the variable value is masked when + you defined the variable. Enter the values for the profile variables and click **Next**. + +7. In the **Cluster Config** step, enter a virtual IP address to be used by your cluster. Optionally, you can also + specify a Network Time Protocol server and an SSH public key. + + | Parameter | Description | + | --------------------------- | --------------------------------------------------------------------------------------------- | + | Network Time Protocol (NTP) | Specify the IP address for any Network Time Protocol (NTP) servers the cluster can reference. | + | SSH keys | Provide the public key of an SSH key pair that you will use to connect to the Edge host. | + | Virtual IP address | Provide the virtual IP address to be used by the cluster. | + + Optionally, you can also enable network overlay, especially if your cluster will operate in an DHCP environment. For + more information, refer to [Enable Overlay Network](../../networking/vxlan-overlay.md). If you enable the overlay + network, you need to specify a CIDR range to be used by the overlay network. + +8. In the **Node Config** step, you can specify configurations for the control plane pool of your single-node cluster. + For more information about node pool configurations, refer to [Node pools](../../../cluster-management/node-pool.md). + After you finish configuration, click **Next**. + +9. Review your configurations and deploy the cluster. + +## Validate + +1. Log in to the local UI. + +2. Click **Clusters**. Verify that you cluster has entered the running status. diff --git a/docs/docs-content/clusters/edge/local-ui/cluster-management/export-cluster-definition.md b/docs/docs-content/clusters/edge/local-ui/cluster-management/export-cluster-definition.md new file mode 100644 index 0000000000..b8a3e4a87e --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/cluster-management/export-cluster-definition.md @@ -0,0 +1,111 @@ +--- +sidebar_label: "Export Cluster Definition" +title: "Export Cluster Definition" +description: "Instructions for exporting cluster definition." +hide_table_of_contents: false +sidebar_position: 32 +tags: ["edge"] +--- + +You can export cluster definitions from a cluster in Palette and use the definition to provision a cluster in an Edge +host. A cluster definition contains one or more cluster profiles, including the profile variables used in the profiles. + +:::preview + +::: + +## Prerequisites + +- At least one [cluster profile](/docs/docs-content/profiles/cluster-profiles/cluster-profiles.md) in Palette. + +- A Palette API key. For more information on how to create a Palette API key, refer to + [Create API Key](/docs/docs-content/user-management/authentication/api-key/create-api-key.md). + +- curl is installed on your machine. You can also use API management tools such as Postman. This document uses curl as + an example. + +## Export Cluster Definition + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. From the **Main Menu**, select **Profiles**. + +3. Select a profile you want to include in the cluster definition. + +4. Inspect the URL of the page. The URL has the following format: + `https://console.spectrocloud.com/projects/[ProjectID]/profiles/cluster/[ProfileID]`. + +5. Extract the project ID and the profile ID from the URL. + +6. If you want to include another profile in the cluster definition, repeat step 3 - 4 and extract the profile ID for + each profile you want to export. All profiles must be in the same project. + + Make sure the combination of profiles you choose to export can be used to provision a cluster together. This means + that you cannot include more than one profile that has infrastructure layers and cannot have duplicate packs between + the profiles. + +7. Use the Palette Download Cluster Definition API to download the cluster definition. The endpoint location is + `POST https://api.spectrocloud.com/v1/spectroclusters/spc/download`. If you are using a self-hosted Palette instance, + replace the base URL `api.spectrocloud.com` with API endpoint address of your Palette instance. + + The endpoint takes a few header arguments and a request body. + + | Header Parameter | Description | + | ---------------- | ---------------------------------------------------------------------------------------------------------------- | + | `ProjectUid` | The unique ID of the project where the profiles are located. | + | `Content-Type` | You must set the value of this header to `application/json` to indicate that your payload is in the JSON format. | + | `ApiKey` | The value of your Palette API key. | + + In the request body, you must provide the ID of the cluster profiles to include in the cluster definition. + + | Parameter | Description | + | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | `metadata` | You must set the value of this field to `{"name":"cluster-profiles"}`. | + | `spec.cloudType` | You must set the value of this field to `edge-native`. | + | `spec.profiles` | Provide the exact list of cluster profiles to include in the cluster definition. Inside the list are objects representing the cluster profiles. Each object must have the required key `uid`, which is the ID of the cluster profile. | + + The following curl command is an example. + + ```shell + curl --location 'https://api.spectrocloud.com/v1/spectroclusters/spc/download' \ + --header 'ProjectUid: 5fbbf0XXXXX' \ + --header 'Content-Type: application/json' \ + --header 'ApiKey: XXXXXXXX' \ + --output ~/Downloads/demo/cluster-definition.tgz \ + --data-raw '{ + "metadata": { "name": "cluster-profiles" }, + "spec": + { + "cloudType": "edge-native", + "profiles": + [ + { + "uid": "65c90XXXXX770dae35" + }, + { + "uid": "65c91XXXXa9fe4f51c" + } + ] + } + }' + ``` + +## Validate + +1. Log in to the [local UI](../host-management/access-console.md). + +2. From the left **Main Menu**, click on **Cluster**. + +3. Try creating a cluster with the exported cluster definition. For more information, refer to + [Create a Local Cluster](../cluster-management/create-cluster.md). + +4. A successful cluster definition export will display the correct profile layers from the cluster creation view. + +## Next Steps + +You can build the cluster definition into the Edge Installer ISO, or upload the cluster definition to an existing Edge +deployment using the local UI during cluster creation. + +- [Build Edge Installer ISO](../../edgeforge-workflow/palette-canvos/build-installer-iso.md) + +- [Create Local Cluster](../cluster-management/create-cluster.md) diff --git a/docs/docs-content/clusters/edge/local-ui/cluster-management/upload-content-bundle.md b/docs/docs-content/clusters/edge/local-ui/cluster-management/upload-content-bundle.md new file mode 100644 index 0000000000..22129fe76c --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/cluster-management/upload-content-bundle.md @@ -0,0 +1,45 @@ +--- +sidebar_label: "Upload Content Bundle" +title: "Upload Content Bundle" +description: "Instructions for building and uploading content to Edge hosts." +hide_table_of_contents: false +sidebar_position: 32 +tags: ["edge"] +--- + +You can build a content bundle and upload it to an Edge host through the local UI. The content you upload can include +images, helm charts, and packs. This allows you to provision clusters locally using the content you upload to the Edge +host when the host does not have a connection to a central Palette instance or an image repository. + +This page guides you through how to build a content bundle and upload it to an Edge host using the Edge management +console. + +:::preview + +::: + +## Prerequisites + +- An Edge host with installed with Edge Installer 4.3 or later using the `airgapped` install mode. + +- You have built a content bundle that's necessary for provisioning a cluster using your intended cluster profile. For + more information, refer to [Build Content Bundles](../../edgeforge-workflow/build-content-bundle.md). Ensure that you + include the `--include-palette-content` flag when building the content bundle to include images for Palette + components. + +- Network access to the Edge host's port where the local UI is exposed. The default port is 5080. + +## Upload Content + +1. Log in to the [local UI](../host-management/access-console.md#log-in-to-local-ui). + +2. From the left **Main Menu**, click **Content**. + +3. Under the upper-right user menu, Click **Actions** > **Upload Content**. + +4. Select your content bundle to upload it to your Edge host. + +## Validate + +1. After the upload is complete, click **Content** on the left **Main Menu** and confirm images in your content bundle + are present in the Edge host. diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/_category_.json b/docs/docs-content/clusters/edge/local-ui/host-management/_category_.json new file mode 100644 index 0000000000..e7e7c54966 --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/host-management/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 40 +} diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/access-console.md b/docs/docs-content/clusters/edge/local-ui/host-management/access-console.md new file mode 100644 index 0000000000..c0381e1435 --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/host-management/access-console.md @@ -0,0 +1,92 @@ +--- +sidebar_label: "Access Local UI" +title: "Access Local UI" +description: "Instructions for accessing the Local UI." +hide_table_of_contents: false +sidebar_position: 32 +tags: ["edge"] +--- + +Local UI allows you to manage Edge hosts in your network locally, upload content such as images and packs, and create +Edge clusters without connections to a Palette installation. + +:::preview + +::: + +This page guides you through how access the console, and log in, and manage your username and password. + +## Log in to Local UI + +### Prerequisites + +- An Edge host installed with Edge Installer 4.3 or later. + +- The Edge host does not have a connection to a Palette instance and the installation is conducted with the + `installationMode` parameter set to `airgap`. For more information, refer to + [Installer Configuration](../../edge-configuration/installer-reference.md). + +- You have completed or skipped the initial configuration of the Edge host. For more information, refer to + [Edge Host Initial Configuration](../../site-deployment/initial-setup.md). + +- Network access to the Edge host's port where the local UI is exposed. The default port is 5080. + +- Credentials to log in to the local UI. Any OS user can be used to log into local UI. + +### Instructions + +1. Ensure the Edge host is powered on. + +2. In your browser, go to `https://HOST_IP:5080`. Replace `HOST_IP` with the IP address of your Edge host. If you have + access to the Edge host terminal, the address of the local UI console is displayed on the terminal screen. If you + have changed the default port of the console, replace `5080` with the local UI port. + +3. You will be prompted to log in. Enter your username and password to log in. + +### Validate + +A successful login directs you to the Edge management console. Displayed is an overview of your Edge host. + +## Log out of Local UI + +### Prerequisites + +- You are logged in to the local UI. + +### Instructions + +1. In your browser, go to `https://HOST_IP:5080`. Replace `HOST_IP` with the IP address of your Edge host. If you have + access to the Edge host terminal, the address of the local UI console is displayed on the terminal screen. If you + have changed the default port of the console, replace `5080` with the local UI port. + +2. From the local UI, navigate to the top right **User Menu**. + +3. Click **Sign out**. + +### Validate + +A successful sign-out takes you back to the login page. You need to enter your credentials to log in again. + +## Change User Password + +### Prerequisites + +- Network access to the Edge host's port where the local UI is exposed. Default is port 5080. + +- Credentials to log in to the local UI. Any OS user can be used to log into the local UI. + +### Instructions + +1. [Log in](#log-in-to-local-ui) to the local UI. + +2. From the local UI, navigate to the top right **User Menu**. + +3. Click **Update password**. + +4. Provide your existing credentials and enter the new password. + +### Validate + +1. [Log out](#log-out-of-local-ui) of the console. + +2. Enter your new credentials to log back in and confirm that the password has been updated. diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/configure-proxy.md b/docs/docs-content/clusters/edge/local-ui/host-management/configure-proxy.md new file mode 100644 index 0000000000..209c0b9628 --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/host-management/configure-proxy.md @@ -0,0 +1,64 @@ +--- +sidebar_label: "Configure HTTP-Proxy in Local UI" +title: "Configure HTTP-Proxy in Local UI" +description: "Instructions for configuring HTTP proxy in Local UI." +hide_table_of_contents: false +sidebar_position: 80 +tags: ["edge"] +--- + +Local UI is only available in a disconnected installations of Palette Edge, and often times the Edge host is in a +restricted network environment such as most corporate networks. In such environments, you often need a proxy to access +external networks such as the internet. + +You can configure your Edge hosts to use an HTTP/HTTPS proxy for secure internet access from the local UI (Local UI). +The proxy server configured through the local UI will be retained even after a +[factory reset](./reset-reboot.md#reset-edge-host-to-factory-default). + +:::preview + +::: + +## Prerequisites + +- An Edge host deployed with Edge Installer 4.3 or later. + +- The Edge host does not have a connection to a Palette instance and the installation is conducted with the + `installationMode` parameter set to `airgap`. For more information, refer to + [Installer Configuration](../../edge-configuration/installer-reference.md). + +- An active HTTP proxy server. + +## Configure HTTP Proxy + +1. Log in to the local UI. You should be directed to the **Edge Host** page after signing in. If not, click on **Edge + Host** from the **Main Menu** to navigate to the page. + +2. On the **Edge Host** page, click on the pencil icon next to **HTTP Proxy**. + +3. Supply the proxy server information. + + | Field | Description | + | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | HTTP Endpoint | The address where the HTTP proxy server is located. It's used to route HTTP traffic through the proxy. | + | HTTPS Endpoint | The address where the HTTPS proxy server is located. It's used to route HTTPS traffic through the proxy. | + | No Proxy | Specifies exceptions to the proxy rules. It lists addresses or domains that should bypass the proxy and connect directly, useful for local or internal network resources. | + | CA Certificates | CA certificates that are used to authenticate the proxy server. | + +4. Click **Confirm**. Updating the HTTP proxy settings causes HTTP/HTTPS services on the Edge host to restart, so you + will not be able to access the console for a short duration . + +## Validate + +1. Log in to your Edge Host via SSH. + +2. Make a curl request from the command-line to any domain that only the proxy server would have access to. For example, + if your Edge deployment is airgapped and does not have access to the internet except through the proxy server, you + can make a curl call to Google. + + ```shell + curl https://www.google.com + ``` + + If you can get HTML code in response containing the Google search home page, the proxy configuration is working as + expected. diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/host-management.md b/docs/docs-content/clusters/edge/local-ui/host-management/host-management.md new file mode 100644 index 0000000000..30f13ddcf7 --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/host-management/host-management.md @@ -0,0 +1,26 @@ +--- +sidebar_label: "Host Management" +title: "Host Management" +description: "Instructions for host management." +hide_table_of_contents: false +sidebar_position: 32 +tags: ["edge"] +--- + +Local UI allows you to manage your Edge host. You can configure use the local UI to shut down, reboot, and reset your +Edge host to factory default. You can also update credentials, update the local UI's branding and configure HTTP proxy +for your Edge host from the L=local UI. + +:::preview + +::: + +Refer to the following resources to learn how to configure your Edge host using the local UI: + +- [Access Local UI](./access-console.md) + +- [Reboot, Shut Down, and Reset Edge Host](./reset-reboot.md) + +- [Configure HTTP Proxy](./configure-proxy.md) + +- [Customize Local UI Theme](./theming.md) diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/reset-reboot.md b/docs/docs-content/clusters/edge/local-ui/host-management/reset-reboot.md new file mode 100644 index 0000000000..c76a7afd23 --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/host-management/reset-reboot.md @@ -0,0 +1,110 @@ +--- +sidebar_label: "Reboot, Shutdown, and Reset Edge Host" +title: "Reboot, Shutdown, and Reset Edge Host" +description: "Instructions for rebooting, shutting down, and resetting Edge Host to factory default." +hide_table_of_contents: false +sidebar_position: 32 +tags: ["edge"] +--- + +You can reboot, shut down and reset an Edge host from the local UI. + +:::preview + +::: + +## Reboot Edge Host + +You can reboot the Edge host from the local UI. Doing so will cause you to temporarily lose access to the local UI while +the Edge host is rebooting. + +### Prerequisite + +- Network access to the Edge device’s IP and port where the local UI is exposed. The default port is 5080. + +- Credentials to log in to the local UI. Any Operating System (OS) user can be used to log into the local UI. + +### Instructions + +1. Log in to the [local UI](./access-console.md#log-in-to-local-ui). + +2. Under the upper-right **User Menu**, click on **Actions** to open the actions drop-down menu. + +3. Click on **Reboot**. + +4. Click **Confirm** to confirm the reboot. + +### Validate + +1. After confirming the reboot, you will be logged out of the current session immediately and the Edge host will reboot + shortly afterwards. + +2. Verify that the Edge host is rebooting by trying to visit the local UI. Confirm that the address is unreachable. + +3. After waiting a few minutes, try to access the local UI again to confirm that the Edge host has rebooted + successfully. + +## Reset Edge Host to Factory Default + +You can reset an Edge host to factory default from the local UI. This restores the Edge host to the state right after +the [initial configuration](../../site-deployment/initial-setup.md) is completed in the Terminal User Interface (TUI). +Reset to factory default removes all workloads, content, and cluster definition from the Edge host. This includes +content bundles that were built into the ISO image during EdgeForge. + +:::info + +If you configured HTTP/HTTPS proxy through the local UI, the proxy setting will be retained after the factory reset. For +more information about HTTP proxy, refer to [Configure HTTP Proxy](configure-proxy.md). + +::: + +### Prerequisite + +- Network access to the Edge device’s IP and port where the local UI is exposed. The default port is 5080. + +- Credentials to log in to the local UI. Any OS user can be used to log into the local UI. + +### Instructions + +1. Log in to the [local UI](./access-console.md#log-in-to-local-ui). + +2. Under the upper-right **User Menu**, click on **Actions** to open the actions drop-down menu. + +3. Click **Reset to factory default**. + +4. Click **Confirm** to confirm. + +### Validate + +1. After confirming, a message displays that the Edge host is scheduled for a reset. Local UI might become unresponsive + for a few minutes afterwards. + +2. After a few minutes, visit the local UI in your browser and log in. Verify that all cluster data and content have + been erased. + +## Shut Down Edge Host + +You can shut down the Edge host from the local UI. + +### Prerequisites + +- Network access to the Edge device’s IP and port where the local UI is exposed. The default port is 5080. + +- Credentials to log in to the local UI. Any OS user can be used to log into local UI. + +### Instructions + +1. Log in to [local UI](./access-console.md#log-in-to-local-ui). + +2. Under the upper-right **User Menu**, click on **Actions** to open the actions **drop-down Menu**. + +3. Click **Shutdown**. + +4. Click **Confirm** to confirm shutting down the Edge host. + +### Validate + +1. After confirming, a message displays that the Edge host will shut down. + +2. Verify that the Edge host has shut down by observing the hardware has stopped. If your Edge host is a Virtual Machine + (VM), observe on the VM platform that the VM is powered off. diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/theming.md b/docs/docs-content/clusters/edge/local-ui/host-management/theming.md new file mode 100644 index 0000000000..24b34d882f --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/host-management/theming.md @@ -0,0 +1,103 @@ +--- +sidebar_label: "Customize Local UI Theme" +title: "Customize Local UI Theme" +description: "Instructions for customizing Local UI theme." +hide_table_of_contents: false +sidebar_position: 100 +tags: ["edge"] +--- + +Palette offers the option to customize the local UI web interface. You can change the color of the sidebar as well as +using your own logo. You can do this before deployment during the EdgeForge process to standardize the look feel of the +console for all Edge hosts of your organization. + +:::preview + +::: + +## Prerequisites + +- The theme customization process prior to deployment is based on the EdgeForge process. We recommend that you + familiarize yourself with [EdgeForge](../../edgeforge-workflow/edgeforge-workflow.md) and the process to build Edge + artifacts. + +- A physical or virtual Linux machine with _AMD64_ (also known as _x86_64_) processor architecture to build the Edge + artifacts. You can issue the following command in the terminal to check your processor architecture. + + ```bash + uname -m + ``` + +- Minimum hardware configuration of the Linux machine: + + - 4 CPU + - 8 GB memory + - 50 GB storage + +- [Git](https://cli.github.com/manual/installation). You can ensure git installation by issuing the `git --version` + command. + +- [Docker Engine](https://docs.docker.com/engine/install/) version 18.09.x or later. You can use the `docker --version` + command to view the existing Docker version. You should have root-level or `sudo` privileges on your Linux machine to + create privileged containers. + +- A [Spectro Cloud](https://console.spectrocloud.com) account. If you have not signed up, you can sign up for a + [free trial](https://www.spectrocloud.com/free-tier/). + +- Palette registration token for pairing Edge hosts with Palette. You will need tenant admin access to Palette to + generate a new registration token. For detailed instructions, refer to the + [Create Registration Token](/clusters/edge/site-deployment/site-installation/create-registration-token) guide. + +## Customize theme during EdgeForge + +1. Clone the **CanvOS** repository. + + ```shell + git clone https://github.com/spectrocloud/CanvOS.git + ``` + +2. Change into the **CanvOS** directory. + + ```shell + cd CanvOS + ``` + +3. Create a directory called **ui.tar** at the path `CanvOS/ui.tar`. + +4. In the directory, create a file named **customizations.json**. + +5. Upload a logo you'd like to use for the local UI to the **ui** directory. All file types are allowed. We recommend + you limit the height of the logo image to between 64 px and 120 px. If you don't upload a logo, the local UI will use + the Spectro Cloud logo. + +6. Populate the file with the following schema: + + ```json + { + "colors": { + "brand": "#4A8FF1", + "sidebar": "#2B323C" + }, + "logo": "/logo.webp" + } + ``` + + The sidebar color controls the color of the sidebar. This is also the color of the background in the local UI login + screen. We suggest you choose a color that contrasts well against your logo as the logo as the color will serve as + the background for your logo. The **brand** color controls the color of buttons and checkboxes in the UI. The + following image displays the default logo, brand, and sidebar color. + + ![A screenshot of the local UI showing the elements controlled by the color properties and the location of the logo](/cluster_edge_emc_theming.webp) + +7. Compress the UI directory to a TAR file. The file must be named **ui.tar**. + +8. Follow the [Build Edge Artifacts](../../edgeforge-workflow/palette-canvos/palette-canvos.md) guide from step 3 + onwards to finish the EdgeForge process. + +### Validate + +1. Use the ISO you produced to install Palette Edge on an Edge device. + +2. Power up the device and follow [Access Local UI](./access-console.md) to access the Edge management console. + +3. Verify that the customizations you made are reflected in the user interface. diff --git a/docs/docs-content/clusters/edge/local-ui/local-ui.md b/docs/docs-content/clusters/edge/local-ui/local-ui.md new file mode 100644 index 0000000000..8eda9688ff --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/local-ui.md @@ -0,0 +1,64 @@ +--- +sidebar_label: "Local UI" +title: "Local UI" +description: "Instructions for Edge Host Management Console." +hide_table_of_contents: false +sidebar_position: 32 +tags: ["edge"] +--- + +Once Palette Edge has been installed on the Edge host and the Edge host has gone through initial configuration, you will +be able to access the local UI. Local UI allows you to manage Edge hosts in your network locally, upload content bundles +containing images, Helm charts, and packs, and create Edge clusters locally in disconnected environments without +connections to a Palette instance. + +:::preview + +::: + +![A diagram illustrating how users and use EdgeForge and the local UI to deploy clusters without a Palette connection](/clusters_edge_emc_workflow.webp) + +:::warning + +Local UI on works for Edge deployment in disconnected environments. A disconnected environment means that the Edge host +does not have a connection to a Palette instance. Do not use the local UI if your cluster has a connection to a Palette +instance. + +::: + +Refer to the follow resources to learn how to use the local UI to manage your disconnected Edge deployment: + +## Get Started + +- Refer to [Access Local UI](./host-management/access-console.md) for guidance on how to access the local UI and update + your credentials. + +- If you already included a content bundle and a cluster definition in your installer ISO, you can create a cluster + using the resources in the ISO directly. Refer to [Create Local Cluster](./cluster-management/create-cluster.md) for + guidance. Refer to [EdgeForge Workflow](../edgeforge-workflow/edgeforge-workflow.md) for guidance on how to include + content bundles and cluster definitions in your ISO. + +- If you did not provide a content bundle or cluster definition, or if you want to provide new content from which to + build clusters, refer to the following guides to upload content bundles and export cluster definitions. + + - [Upload Content Bundles](./cluster-management/upload-content-bundle.md) + + - [Export Cluster Definition](./cluster-management/export-cluster-definition.md) + +## Cluster Management + +- [Upload Content Bundles](./cluster-management/upload-content-bundle.md) + +- [Export Cluster Definition](./cluster-management/export-cluster-definition.md) + +- [Create Local Cluster](./cluster-management/create-cluster.md) + +## Host Management + +- [Access Local UI](./host-management/access-console.md) + +- [Configure HTTP Proxy in Local UI](./host-management/configure-proxy.md) + +- [Reset Edge Host to Factory Default](./host-management/reset-reboot.md) + +- [Customize Local UI Theme](./host-management/theming.md) diff --git a/docs/docs-content/clusters/edge/networking/connect-wifi.md b/docs/docs-content/clusters/edge/networking/connect-wifi.md index 9cec65a755..c1475e3765 100644 --- a/docs/docs-content/clusters/edge/networking/connect-wifi.md +++ b/docs/docs-content/clusters/edge/networking/connect-wifi.md @@ -70,8 +70,9 @@ with the original user data you use to build Edge artifacts and skip that step. ::: -3. Follow the rest of the steps in the guide [Build Edge Artifact](../edgeforge-workflow/palette-canvos.md). When - finished, identify the **palette-edge-installer.iso** file in the **build** folder. +3. Follow the rest of the steps in the guide + [Build Edge Artifact](../edgeforge-workflow/palette-canvos/palette-canvos.md). When finished, identify the + **palette-edge-installer.iso** file in the **build** folder. 4. Plug in your bootable device and flash it with the ISO image. 5. Plug the bootable device into the Edge host and power on the Edge host. When the Edge host powers on, open the boot menu by pressing F10, and select the bootable device as your boot volume. diff --git a/docs/docs-content/clusters/edge/networking/networking.md b/docs/docs-content/clusters/edge/networking/networking.md index b0eb37f52f..922a847201 100644 --- a/docs/docs-content/clusters/edge/networking/networking.md +++ b/docs/docs-content/clusters/edge/networking/networking.md @@ -19,5 +19,4 @@ ensure that you can keep your Edge clusters and their services operational and a - [Publish Cluster Services with Kube-vip](kubevip.md) - [Enable Overlay Network](vxlan-overlay.md) -- [Enable Local Harbor Image Registry](local-registry.md) - [Connect Intel NUC Edge Host to Wifi](./connect-wifi.md) diff --git a/docs/docs-content/clusters/edge/site-deployment/deploy-cluster.md b/docs/docs-content/clusters/edge/site-deployment/deploy-cluster.md index 3830b62b04..2320290300 100644 --- a/docs/docs-content/clusters/edge/site-deployment/deploy-cluster.md +++ b/docs/docs-content/clusters/edge/site-deployment/deploy-cluster.md @@ -76,7 +76,7 @@ To complete this tutorial, you will need the following: - 8 GB memory - 50 GB storage -- [Git](https://cli.github.com/manual/installation). Ensure git installation by issuing the `git --version` command. +- [Git](https://git-scm.com/downloads). Ensure git installation by issuing the `git --version` command. - [Docker Engine](https://docs.docker.com/engine/install/) version 18.09.x or later. You can use the `docker --version` command to view the existing Docker version. You should have root-level or `sudo` privileges on your Linux machine to @@ -184,8 +184,8 @@ View the newly created file to ensure the arguments are defined per your require cat .arg ``` -Refer to the [Build Edge Artifacts](../edgeforge-workflow/palette-canvos.md) guide to learn more about customizing -arguments. +Refer to the [Build Edge Artifacts](../edgeforge-workflow/palette-canvos/palette-canvos.md) guide to learn more about +customizing arguments. ## Create User Data @@ -262,7 +262,7 @@ will fail silently. You can exclude image versions you do not need from the build process by commenting out the lines in the `build-provider-images` parameter in the file **Earthfile** in the **CanvOS** repository. This speeds up build process and reduces the amount of space required for the build process. For an example of excluding a version from build, refer -to [Build Edge Artifacts guide](../edgeforge-workflow/palette-canvos.md). +to [Build Edge Artifacts guide](../edgeforge-workflow/palette-canvos/palette-canvos.md). ::: @@ -367,7 +367,8 @@ docker push ttl.sh/ubuntu:k3s-1.27.5-v4.1.2-demo As a reminder, [ttl.sh](https://ttl.sh/) is a short-lived image registry. If you do not use these provider images in your cluster profile within 24 hours of pushing to _ttl.sh_, they will expire and must be re-pushed. If you want to use a different image registry, refer to the Advanced workflow in the -[Build Edge Artifacts](../edgeforge-workflow/palette-canvos.md) guide to learn how to use another registry. +[Build Edge Artifacts](../edgeforge-workflow/palette-canvos/palette-canvos.md) guide to learn how to use another +registry. ::: @@ -487,7 +488,7 @@ is an explanation of the options and sub-command used below: - The `sh -c "source /edge/vmware/clone_vm_template/setenv.sh && bash /edge/vmware/clone_vm_template/delete-packer-cache.sh"` shell sub-command deletes any pre-existing **packer_cache**. A known - [issue]((https://github.com/hashicorp/packer-plugin-vsphere/issues/55) with the Packer vSphere plugin causes checksum + [issue](https://github.com/hashicorp/packer-plugin-vsphere/issues/55) with the Packer vSphere plugin causes checksum logic to ignore previous builds, and reuse previously created ISO found in the **packer_cache** folder. The delete script removes any existing packer cache to prevent re-using a previously created ISO. @@ -1055,7 +1056,7 @@ In addition, you can use Palette to manage the entire lifecycle of Edge clusters To learn more about Edge, check out the resources below. -- [Build Edge Artifacts](../edgeforge-workflow/palette-canvos.md) +- [Build Edge Artifacts](../edgeforge-workflow/palette-canvos/palette-canvos.md) - [Build Content Bundle](../edgeforge-workflow/build-content-bundle.md) diff --git a/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-custom-registries.md b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-custom-registries.md new file mode 100644 index 0000000000..8cc746d164 --- /dev/null +++ b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-custom-registries.md @@ -0,0 +1,68 @@ +--- +sidebar_label: "Deployment with Custom Image Registries" +title: "Deployment with Custom Image Registries" +description: "Registry options for deploying Edge clusters." +hide_table_of_contents: false +sidebar_position: 60 +tags: ["edge"] +--- + +During Edge cluster deployment, the Palette agent must download the necessary images required by the cluster. The +Palette agent divides the images into two categories in terms of when and from where to download them: + +- Provider images. These images are Kairos-based container images for each supported Operating System (OS) and + Kubernetes combination built during EdgeForge and pushed to an image registry. Provider images are always downloaded + first. + +- All other images. These images are for the network, storage, and application layers of the cluster. + +The Palette agent decides on where to download the images from depending on whether you have specified an external +registry and whether you have enabled a local Harbor registry on your cluster. + +## Provider Image Registry + +Provider images are always downloaded first by the Palette agent. You are required to provide the location of the +provider image in the OS pack of your cluster profile. If an external registry is not specified in the +[user data](../../edgeforge-workflow/prepare-user-data.md) during EdgeForge, provider images will be downloaded from the +provider image registry specified in the OS pack of the cluster profile. + +Palette supports downloading provider images from authenticated registries. If your cluster needs to download provider +images from a authenticated registry, you need to provide the credentials to access the registry in the OS pack of the +cluster profile. For more information, refer to +[Deploy Cluster with a Private Provider Registry](./deploy-private-registry.md). + +## External Registry + +After the provider images are downloaded, the Palette agent proceeds to download all other images required for the +cluster from registries that are specified in each pack's YAML configuration. However, you can specify an _external +registry_ as the registry from which all images used by the cluster will be downloaded, including the provider images. + +When an external registry is provided in the user data, the Palette agent will replace the registry URL of every image +used by the cluster with the external registry. For example, if your OS pack specified that the provider images be +downloaded from `quay.io/kairos/core-ubuntu-20-lts-rke2:v1.25.2-rke2r1`, but in your user data, you have specified an +external registry `10.10.254.254:8000/spectro-images`. The Palette agent will automatically download the image using the +tag `10.10.254.254:8000/spectro-images/core-ubuntu-20-lts-rke2:v1.25.2-rke2r1` instead of looking for the image in the +`quay.io/kairos` registry. + +If you want to use a private image registry for applications on your Edge cluster, you can instruct the Palette agent to +download images from an _authenticated external registry_. You can specify an external registry in the user-data used to +build your Edge Installer ISO. For more information on how to deploy a cluster with an authenticated external registry, +refer to [Deploy Cluster with a Private External Registry](./deploy-external-registry.md). + +## Local Harbor Registry + +A local Harbor registry is a local registry that runs on your cluster. After the initial download of images from other +registries, all images except for infrastructure layer images will be uploaded to the Harbor registry. Subsequently, all +requests for application images from the cluster will be made to the Harbor registry. For more information, refer to +[Enable Local Harbor Image Registry](./local-registry.md). + +## Limitations + +There are limitations to using the local Harbor image registry and authenticated registries. The following table shows +you which combinations are supported. + +| Feature | Can be used with | Cannot be used with | +| ------------------------------- | ------------------------------------------------------------------ | --------------------------------------------------------------- | +| Local Harbor registry | - Authenticated external registry
- Public provider registry | Authenticated provider registry | +| Authenticated external registry | - Local Harbor registry
- Public provider registry | Authenticated provider registry. | +| Authenticated provider registry | N/A | - Authenticated external registry
- Local Harbor registry | diff --git a/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-external-registry.md b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-external-registry.md new file mode 100644 index 0000000000..022fd763f0 --- /dev/null +++ b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-external-registry.md @@ -0,0 +1,126 @@ +--- +sidebar_label: "Deploy Cluster with a Private External Registry" +title: "Deploy Cluster with a Private External Registry" +description: "Instructions for deploying an Edge cluster with a private external registry." +hide_table_of_contents: false +sidebar_position: 20 +tags: ["edge"] +--- + +Palette Edge provides support for downloading images from authenticated external registries. You can instruct the +Palette agent to download images from an authenticated external registry by specifying the address and the credentials +for the registry in the user data used to build your Edge Installer ISO. + +Once you specify an external registry, images for all elements of the cluster are expected to be in the external +registry. This includes the provider images, images for the network and storage layer, and images for all application +layers. All images specified in the cluster profile will have their registry URL replaced by the registry URL of the +external image registry. For example, if your OS pack specified that the provider images be downloaded from +`quay.io/kairos/core-ubuntu-20-lts-rke2:v1.25.2-rke2r1`, but in your user data, you have specified an external registry +`10.10.254.254:8000/spectro-images`. The Palette agent will automatically download the image using the tag +`10.10.254.254:8000/spectro-images/core-ubuntu-20-lts-rke2:v1.25.2-rke2r1` instead of looking for the image in the +`quay.io/kairos` registry. + +:::tip + +You can use a private external registry together with a local Harbor image registry by adding the Harbor Edge-Native +Config pack to your cluster profile. All images for add-on layers of the cluster will be stored in the local Harbor +registry after the initial download, which allows you to reduce the bandwidth use and protect against outages. For more +information, refer to [Enable Local Harbor Registry](./local-registry.md). + +::: + +## Limitations + +- Palette Edge supports basic username/password authentication. Token authentication schemes used by services such as + AWS ECR and Google Artifact Registry are not supported. + +## Prerequisites + +- Specifying the external registry and providing credentials happens during the EdgeForge process. You should become + familiar with EdgeForge before following this guide. Refer to + [Build Edge Artifacts](../../edgeforge-workflow/palette-canvos/palette-canvos.md) to learn how to build Edge Installer + ISO and provider images. + +- A physical or virtual Linux machine with _AMD64_ (also known as _x86_64_) processor architecture to build the Edge + artifacts. You can issue the following command in the terminal to check your processor architecture. + + ```bash + uname -m + ``` + +- Minimum hardware configuration of the Linux machine: + + - 4 CPU + - 8 GB memory + - 50 GB storage + +- [Git](https://git-scm.com/downloads). You can ensure git installation by issuing the `git --version` command. + +- [Docker Engine](https://docs.docker.com/engine/install/) version 18.09.x or later. You can use the `docker --version` + command to view the existing Docker version. + + - You should have root-level or `sudo` privileges on your Linux machine to create privileged containers. + +- A [Palette](https://console.spectrocloud.com) account. If you have not signed up, you can sign up for a + [free trial](https://www.spectrocloud.com/free-tier/). + +- Palette registration token for pairing Edge hosts with Palette. You will need tenant admin access to Palette to + generate a new registration token. For detailed instructions, refer to the + [Create Registration Token](../site-installation/create-registration-token.md) guide. + +- A private external registry that stores all images required by your cluster. + +## Deploy Cluster with a Private External Registry + +1. Check out the [CanvOS](https://github.com/spectrocloud/CanvOS) GitHub repository containing the starter code. + + ```bash + git clone https://github.com/spectrocloud/CanvOS.git + ``` + +2. Change to the **CanvOS/** directory. + + ```bash + cd CanvOS + ``` + +3. In the user data file, provide the URL and the credentials in `stylus.registryCredentials`. The following is an + example: + + ```yaml + #cloud-config + stylus: + registryCredentials: + domain: 10.10.254.254:8000/spectro-images + username: ubuntu + password: ******* + insecure: true + ``` + + Refer to [Installer Configuration](../../edge-configuration/installer-reference.md#external-registry) for a + description of each field. + +4. Follow the rest of the [Build Edge Artifact](../../edgeforge-workflow/palette-canvos/palette-canvos.md) guide and + build the Installer ISO with the user data containing the registry credentials. + +5. Follow the [Perform Site Install](../site-installation/site-installation.md) guide to perform the installation. + +6. Log in to [Palette](https://console.spectrocloud.com). + +7. From the left **Main Menu**, click on **Profiles**. Then select the profile you are using to deploy the cluster. + +8. Go through each layer of the profile and ensure that all images referenced in the profile are present in the external + registry. If you do not want to do this manually image by image, refer to + [Upload Cluster Images to External Registry with Palette Edge CLI](./upload-images-to-registry.md) to learn how to + use the Palette Edge CLI to upload all images in a cluster profile to an external registry. + +9. Follow the [Create Cluster Definition](../site-installation/cluster-deployment.md) guide and deploy your cluster. + +## Validate + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. From the left **Main Menu**, click on **Clusters**. + +3. Verify that the cluster you provisioned is in running status. Since your cluster profile only references images in + the private external registry, you can confirm that the images were downloaded successfully. diff --git a/docs/docs-content/clusters/edge/site-deployment/deploy-private-registry.md b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-private-registry.md similarity index 66% rename from docs/docs-content/clusters/edge/site-deployment/deploy-private-registry.md rename to docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-private-registry.md index 037439edf5..bd47d5cd77 100644 --- a/docs/docs-content/clusters/edge/site-deployment/deploy-private-registry.md +++ b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-private-registry.md @@ -1,20 +1,30 @@ --- -sidebar_label: "Deploy Cluster with a Private Registry" -title: "Deploy Cluster with a Private Registry" -description: "Instructions for creating an Edge Native Cluster Profile" +sidebar_label: "Deploy Cluster with a Private Provider Registry" +title: "Deploy Cluster with a Private Provider Registry" +description: "Instructions for deploying an Edge cluster with a private provider registry." hide_table_of_contents: false -sidebar_position: 60 +sidebar_position: 40 tags: ["edge"] --- -Palette Edge supports authentication with private image registries, which allows your cluster to pull images from a -private registry during deployment. You can configure your cluster to pull images from a private registry for both -cluster creation and cluster updates. To configure a cluster to pull images from a private image registry, provide the -registry URL and the credentials needed to authenticate with the registry in the cluster profile. +Palette Edge supports authentication with private image registries, which allows your cluster to pull provider images +from a private registry during deployment. You can configure your cluster to pull provider images from a private +registry for both cluster creation and cluster updates. + +To configure a cluster to pull images from a private image registry, provide the registry URL and the credentials needed +to authenticate with the registry in the cluster profile. This registry supplies the provider images only. If you want +to use a private registry for images other the provider images, refer to +[Deploy Cluster with Private External Registry](./deploy-external-registry.md). ## Limitations -- A cluster cannot pull images from more than one private registry. +- A cluster cannot pull provider images from more than one private registry. + +- If you have already specified an external registry. the provider registry will be ignored and the provider images will + be pulled from the external registry instead. + +- You cannot use private provider registries for clusters with a local Harbor registry. For more information, refer to + [Enable Local Harbor Registry](./local-registry.md). - If your private registry has TLS enabled, you can only configure a _new_ cluster to use a TLS certificate with a private registry. You cannot configure an existing cluster with a TLS certificate to communicate with your private @@ -30,7 +40,7 @@ registry URL and the credentials needed to authenticate with the registry in the - A private image registry. - A provider image you created in the EdgeForge process stored in your private image registry. For more information, - refer to [Build Artifacts](../edgeforge-workflow/palette-canvos.md). + refer to [Build Artifacts](../../edgeforge-workflow/palette-canvos/palette-canvos.md). ## Enablement @@ -48,8 +58,9 @@ registry URL and the credentials needed to authenticate with the registry in the pack for your OS layer. 5. Update the `system.uri` parameter in the pack editor for your OS layer. Use the custom OS image you created in the - EdgeForge process. Refer to the EdgeForge [Build Images](../edgeforge-workflow/palette-canvos.md) guide if you are - missing a custom OS image. The following is an example configuration using the BYOOS pack with a custom OS image. + EdgeForge process. Refer to the EdgeForge [Build Images](../../edgeforge-workflow/palette-canvos/palette-canvos.md) + guide if you are missing a custom OS image. The following is an example configuration using the BYOOS pack with a + custom OS image. ```yaml pack: @@ -67,17 +78,17 @@ registry URL and the credentials needed to authenticate with the registry in the If you have specified registry credentials in the `registryCredentials` field in the user data file during the EdgeForge process, the credentials provided in the cluster profile will be ignored. For more information, refer to - [EdgeForge - Build Artifacts](../edgeforge-workflow/palette-canvos.md) and - [Installer Configuration](../edge-configuration/installer-reference.md#external-registry). + [EdgeForge - Build Artifacts](../../edgeforge-workflow/palette-canvos/palette-canvos.md) and + [Installer Configuration](../../edge-configuration/installer-reference.md#external-registry). ::: 6. At the root level of YAML for your OS layer, add the `providerCredentials` field to provide the credentials you need to authenticate with your registry. For more information about the `providerCredentials` field, refer to - [Bring Your Own OS (BYOOS)](../../../integrations/byoos.md) pack page. The `providerCredentials.password` field will - be masked when you provide it in the YAML file. You can also use a macro to store your credentials instead of + [Bring Your Own OS (BYOOS)](../../../../integrations/byoos.md) pack page. The `providerCredentials.password` field + will be masked when you provide it in the YAML file. You can also use a macro to store your credentials instead of providing it directly in the YAML file. For more information, refer to - [Macros Support](../../cluster-management/macros.md): + [Macros Support](../../../cluster-management/macros.md): ```yaml {7-8} pack: @@ -108,9 +119,10 @@ registry URL and the credentials needed to authenticate with the registry in the 8. If you already have an active cluster that is using the original version of the cluster profile, update the cluster so that it uses the new version of the cluster profile you just published. For more information about updating - clusters, refer to [Update a Cluster](../../cluster-management/cluster-updates.md). This will trigger a full cluster - repave since it includes an update to the OS layer of the cluster. To learn more about cluster repave behavior, refer - to [Repave Behavior and Configuration](../../cluster-management/node-pool.md#repave-behavior-and-configuration). + clusters, refer to [Update a Cluster](../../../cluster-management/cluster-updates.md). This will trigger a full + cluster repave since it includes an update to the OS layer of the cluster. To learn more about cluster repave + behavior, refer to + [Repave Behavior and Configuration](../../../cluster-management/node-pool.md#repave-behavior-and-configuration). If you don't have an active cluster yet, deploy a new cluster with the profile you just created, and the cluster will pull images from the private registry you specified. diff --git a/docs/docs-content/clusters/edge/networking/local-registry.md b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/local-registry.md similarity index 61% rename from docs/docs-content/clusters/edge/networking/local-registry.md rename to docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/local-registry.md index 04d90c7093..b16ae5f202 100644 --- a/docs/docs-content/clusters/edge/networking/local-registry.md +++ b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/local-registry.md @@ -8,10 +8,22 @@ tags: ["edge"] --- Palette Edge allows you to provision a local Harbor image registry as part of your Edge deployment. When your Edge -cluster is created for the first time, all images downloaded from external registries are stored locally in the Harbor -registry, including your provider images and all packs used by your cluster. Subsequent image pulls from the cluster are -made to the local Harbor registry. This allows your Edge cluster to reboot containers or add new nodes without being -connected to the external network. +cluster is created for the first time, all images from add-on packs downloaded from external registries are stored +locally in the Harbor registry. Subsequent image pulls from the cluster are made to the local Harbor registry. This +allows your Edge cluster to reboot containers or add new nodes without being connected to the external network. + +If you specified the installation mode of the Edge Installer to be `airgap`, any images that were included in the Edge +Installer ISO will also be loaded into the Harbor registry. For more information about building content bundles, refer +to [Build Content Bundle](../../edgeforge-workflow/build-content-bundle.md) and +[Build Edge Artifacts with Content Bundles](../../edgeforge-workflow/palette-canvos/palette-canvos.md). + +If you enable the local Harbor registry on a cluster, the Palette agent will pull all images requested by the cluster +from the Harbor registry. If your cluster uses any image that is not included in your cluster profile, you will need to +instruct the Palette agent to not pull that image from the Harbor registry by disabling this behavior for certain +namespaces. You can do this by giving a namespace the label `stylus.io/imageswap=disable`. For more information, refer +to +[Harbor Edge-Native Config pack](../../../../integrations/harbor-edge.md#enable-image-download-from-outside-of-harbor) +documentation. :::preview @@ -25,10 +37,13 @@ connected to the external network. - Each of your Edge hosts must have at least 4 CPUs and 8 GB of RAM. -- At least 160 GB of persistent storage. The actual amount of storage required depends on the size of your images. + - For single-node clusters, where there is only one Edge host handling both control plane and worker capabilities, + your Edge host must have at least 6 CPUs and 12 GB of RAM. + +- At least 300 GB of persistent storage. The actual amount of storage required depends on the size of your images. - An Edge cluster profile. For information about how to create a cluster profile for Edge, refer to - [Model Edge Cluster Profile](../site-deployment/model-profile.md). + [Model Edge Cluster Profile](../../site-deployment/model-profile.md). ## Enable Local Harbor Registry @@ -44,19 +59,19 @@ connected to the external network. 5. Select the Kubernetes layer of the profile. Under `cluster.config.kube-apiserver-arg`, remove `AlwaysPullImages` from the list item `enable-admission-plugins`: -```yaml {7} -kube-apiserver-arg: - - anonymous-auth=true - - profiling=false - - disable-admission-plugins=AlwaysAdmit - - default-not-ready-toleration-seconds=60 - - default-unreachable-toleration-seconds=60 - - enable-admission-plugins=NamespaceLifecycle,ServiceAccount,NodeRestriction -``` + ```yaml {7} + kube-apiserver-arg: + - anonymous-auth=true + - profiling=false + - disable-admission-plugins=AlwaysAdmit + - default-not-ready-toleration-seconds=60 + - default-unreachable-toleration-seconds=60 + - enable-admission-plugins=NamespaceLifecycle,ServiceAccount,NodeRestriction + ``` 6. Click **Add New Pack** and search for the **Harbor Edge Native Config** pack. Add the pack to your cluster profile. For more information about the pack and its parameters, refer to - [Harbor Edge Native Config pack documentation](../../../integrations/harbor-edge.md). + [Harbor Edge Native Config pack documentation](../../../../integrations/harbor-edge.md). 7. In the `harbor-config.storage` parameter, make sure you allocate enough storage in the `registry` field to store all your images. @@ -87,7 +102,7 @@ kube-apiserver-arg: 6. Type in your credentials to log in to Harbor. The username is always `admin`. The password is what you configured during cluster creation. If you don't know your password, refer to - [Retrieve Harbor Credentials](../../../integrations/harbor-edge.md#retrieve-harbor-credentials) to retrieve your + [Retrieve Harbor Credentials](../../../../integrations/harbor-edge.md#retrieve-harbor-credentials) to retrieve your password. 7. In the **Projects** view, select the **spectro-images** project. diff --git a/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/upload-images-to-registry.md b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/upload-images-to-registry.md new file mode 100644 index 0000000000..8f1aefbb40 --- /dev/null +++ b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/upload-images-to-registry.md @@ -0,0 +1,199 @@ +--- +sidebar_label: "Upload Cluster Images to Registry with Palette Edge CLI" +title: "Upload Cluster Images to Registry with Palette Edge CLI" +description: "Guide to uploading all images required by a cluster to an external registry." +hide_table_of_contents: false +sidebar_position: 70 +tags: ["edge"] +--- + +Palette Edge allows you to deploy a cluster using an external private registry. When you deploy a cluster using an +external registry, all images required by the cluster are expected to be in the registry before deployment starts. + +It can be error-prone to upload the images manually one by one. Therefore, we recommend you use the Palette Edge CLI to +download the images and upload them to the external registry. + +## Prerequisites + +- Linux Machine (Physical or VM) with an AMD64 architecture. + +- Palette API key. Refer to the + [User Authentication](../../../../user-management/authentication/api-key/create-api-key.md) resource to learn how to + create a Palette API key. + +- An Edge Native cluster profile. Refer to [Create Edge Native Cluster Profile](../model-profile.md) guide to learn how + to create an Edge Native cluster profile. You may also have other add-on profiles that you wish to attach to your + cluster. + +- Content tags in your profiles highlight the exact location of container images to be downloaded. + +## Upload Cluster Images to Registry + +1. Download Palette Edge Content CLI and assign the executable bit to the CLI. + + ```shell + VERSION=4.3.0 + wget https://software.spectrocloud.com/stylus/v$VERSION/cli/linux/palette-edge + chmod +x palette-edge + ``` + +2. Log in to [Palette](https://console.spectrocloud.com). + +3. Select the project you want to deploy the Edge host to and copy down the **Project ID**. You can find the project id + at the top right side corner of the landing page below the **User drop-down Menu**. + +4. Navigate to the left **Main Menu** and select **Profiles**. + +5. Click on the cluster profile you want to include in the content bundle. + +6. You can find the cluster profile ID by reviewing the URL of the current page. The cluster profile ID is the last + value in the URL. Repeat this step for all the cluster profiles whose images you want to include in the content + bundle. + +7. If you are downloading images from public image or Helm registries only, skip this step. + + Prepare a JSON file that includes the credentials to your image or Helm registries. + + + + + + For authenticated access to Helm charts, your must provide credentials with the following schema. Use a key at the + root level of the JSON object named "helm" and set its value to a list. The list is a list of credentials for each + Helm chart repository. For each set of credentials, use an object in the list with the keys "endpoint", "username", + and "password". + + ```json + { + "helm": [ + { + "endpoint": , + "username": , + "password": + } + ] + } + ``` + + For example, the following JSON code is a valid set of credentials. + + ```json + { + "helm": [ + { + "endpoint": "harbor.abcd.com", + "username": "admin", + "password": "xxxxxxxx" + } + ] + } + ``` + + + + + + For image registries, you must provide credentials with the following schema. Provide a key at the root level of the + JSON object named "image" and set its value to a list. The list is a list of credentials for each Helm chart + repository. For each set of credentials, use an object in the list with the keys "endpoint", "username", and + "password". + + ```json + { + "image": [ + { + "endpoint": , + "username": , + "password": + } + ] + } + ``` + + For example, the following JSON code provides access to two registries `ttl.sh` and `docker.io` with two + username-password pairs. + + ```json + { + "image": [ + { + "endpoint": "ttl.sh", + "username": "admin", + "password": "Welc0me!123" + }, + { + "endpoint": "docker.io", + "username": "akhileshpvt", + "password": "Lucent122333!" + } + ] + } + ``` + + For Google Container Registry (GCR) access, you need to set the username field to `"_json_key"` and set the password + to an JSON object containing the following fields. + + | Field | Description | + | ----------------------------- | --------------------------------------------------------------------------------------------------- | + | `type` | The type of credential, which is `service_account` for Google Cloud service accounts. | + | `project_id` | The project ID associated with your Google Cloud project. For example, `spectro-images`. | + | `private_key_id` | A unique identifier for the private key associated with the service account. | + | `private_key` | The private key that is used to authenticate to Google Cloud services, encapsulated in a PEM block. | + | `client_email` | The email address associated with the service account, used for authentication. | + | `client_id` | The client ID associated with the service account. | + | `auth_uri` | The URI for the authentication provider, typically Google's OAuth 2.0 server. | + | `token_uri` | The URI for obtaining tokens from Google's OAuth 2.0 server. | + | `auth_provider_x509_cert_url` | The URL of the public x509 certificate for the authentication provider. | + | `client_x509_cert_url` | The URL of the public x509 certificate for the client (service account). | + + For example, the following is a valid set of credentials for a GCR registry. + + ```json + { + "image": [ + { + "endpoint": "gcr.io", + "username": "_json_key", + "password": { + "type": "service_account", + "project_id": "spectro-images", + "private_key_id": "847c09190xxxxxxxxxxxxc4ebc", + "private_key": "-----BEGIN KEY-----MIIEvQIBADA ... -----Shortened for brevity", + "client_email": "xxx.iam.gserviceaccount.com", + "client_id": "115830xxxxxxx340453", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/spectro-images-viewer%40spectro-images.iam.gserviceaccount.com" + } + } + ] + } + ``` + + + + + +8. Issue the following command to download the images as a content bundle. The command produces a ZST file as output. + Replace the `******` after the `--api-key` flag with your Palette API key. Replace `project-ID` with the ID of your + project in Palette, and `profile-ID` with the ID of your profile. + + ```shell + ./palette-edge build --api-key ****** --project-id project-ID --cluster-profile-ids profile-ID \ + --outfile output-file-name --cred-file-path registry-creds.json --include-palette-content + ``` + +9. Issue the following command to upload the images to the external registry. Replace `path-to-content-bundle` with the + path to the content bundle you downloaded in the previous step. Replace `registry-URL` with the URL of your external + registry. Replace `username` and `******` with the username and password used to access the external registry. + + ```shell + ./palette-edge-cli deploy --export path-to-content-bundle --registry registry-URL \ + --username username --password ****** + ``` + +## Validate + +Go to your external registry and verify that all the images referenced in the cluster profile are uploaded to the +external registry. diff --git a/docs/docs-content/clusters/edge/site-deployment/initial-setup.md b/docs/docs-content/clusters/edge/site-deployment/initial-setup.md new file mode 100644 index 0000000000..457737dfed --- /dev/null +++ b/docs/docs-content/clusters/edge/site-deployment/initial-setup.md @@ -0,0 +1,86 @@ +--- +sidebar_label: "Initial Edge Host Configuration" +title: "Initial Edge Host Configuration" +description: "Instructions for configuring the Edge host when booting up the Edge host for the first time." +hide_table_of_contents: false +sidebar_position: 32 +tags: ["edge"] +--- + +When you boot up an Edge host for the first time after installation, if you enabled initial configuration in the user +data, you will be prompted to configure the Edge host and its network environment in a Terminal User Interface (TUI). +This includes the configuration of an OS user, machine hostname, IP address, and DNS server. + +You may already have specified some of these configurations in the **user-data** file in the EdgeForge process or have +supplied them with site-specific **user-data**, and can either keep them as they are or update them during this step. +For more information about EdgeForge and site user data, refer to +[EdgeForge Workflow](../edgeforge-workflow/edgeforge-workflow.md) and +[Apply Site User Data](./site-installation/site-user-data.md). + +:::warning + +If you are upgrading to 4.3 from an older version, the initial configuration does not get triggered. If you want to +perform the setup, you can issue the command `spectro-edge-console` in the terminal to trigger it manually. + +::: + +## Prerequisites + +- An Edge host installed with Edge Installer 4.3 or later. + +- The Edge host must not have an active cluster deployed on it. + +- The Edge installer ISO used to install Palette on the Edge host must + [enable initial configuration](../edge-configuration/installer-reference.md#initial-configuration). + +- A keyboard or another input device connected to the Edge host. + +## Set up Edge Host + +1. Power up the Edge host. Do not make any input and allow Palette to choose the boot option automatically. If this is + the first time you've started the Edge host since installation, you will be automatically directed to the TUI. + + If you are accessing the Edge host with an SSH connection, you can issue the command `spectro-edge-console` to bring + up the TUI. You can also use the same command to bring up the TUI if you have gone through the initial setup in the + TUI and want to change any configuration. However, you can only do this before you have deployed a cluster on the + Edge host. + +2. If you have already configured a user in your **user-data** file in the EdgeForge step, this step will be skipped + automatically. + + If you did not configure a user in your **user-data** file during EdgeForge or provide site user data, a terminal + user interface will display a **Create User** page. This allows you to create an Operating System (OS) user with the + necessary permissions to operate Palette. Enter a username and password to create a new user and press the Enter key + to progress to the next screen. + + :::info + + The user `kairos` always exists in the OS. If you configured the username and password in your user data, you can use + this user to log in to the OS as well as the local UI. However, you cannot create this user during initial + configuration as this user already exists. + + ::: + +3. Next, the terminal will display a console for you to provide hostname and network configurations to the Edge host. + + ![A terminal user interface showing displaying network configuration options](/cluster_edge_site-deployment_installation_initial-setup_tui.webp) + + Check the existing hostname and, optionally, change it to a new one. Use the Tab key or the up and down arrow keys to + switch between fields. When you make a change, press Enter to confirm the change. + +4. In **Network Adapters**, choose a network adapter that the Edge host will use to communicate with Palette. + + By default, the network adapter requests an IP automatically from the DHCP server. Optionally, you can also specify a + static IP. Press Enter to confirm the change. + +5. In **DNS Configuration**, specify the IP address of the primary and secondary name servers. Press Enter to confirm + the change. + +6. After you are satisfied with the configurations, navigate to **Quit** and hit enter to finish configuration. + +## Validate + +1. Shortly after you finish configuration, the terminal screen will display the hostname and network information of your + Edge host. + +2. Verify that all displayed information is consistent with your configurations. diff --git a/docs/docs-content/clusters/edge/site-deployment/model-profile.md b/docs/docs-content/clusters/edge/site-deployment/model-profile.md index 5db54ee732..109a432ca2 100644 --- a/docs/docs-content/clusters/edge/site-deployment/model-profile.md +++ b/docs/docs-content/clusters/edge/site-deployment/model-profile.md @@ -34,7 +34,7 @@ needs. ### Prerequisites - Ensure all required provider images are created and uploaded to the respective registry. Refer to the EdgeForge - [Build Edge Artifacts](../edgeforge-workflow/palette-canvos.md) guide for details. + [Build Edge Artifacts](../edgeforge-workflow/palette-canvos/palette-canvos.md) guide for details. ### Enablement @@ -61,8 +61,8 @@ needs. ![A view of the Kubernetes pack editor with a YAML configuration](/clusters_site-deployment_model-profile_byoos-pack-yaml.webp) 10. Update the `system.uri` parameter in the pack editor. Use the custom OS image you created in the EdgeForge process. - Refer to the EdgeForge [Build Images](../edgeforge-workflow/palette-canvos.md) guide if you are missing a custom OS - image. The following is an example configuration using a custom OS image. + Refer to the EdgeForge [Build Images](../edgeforge-workflow/palette-canvos/palette-canvos.md) guide if you are + missing a custom OS image. The following is an example configuration using a custom OS image. ```yaml pack: diff --git a/docs/docs-content/clusters/edge/site-deployment/site-deployment.md b/docs/docs-content/clusters/edge/site-deployment/site-deployment.md index 4e311e0a11..ca81f3d272 100644 --- a/docs/docs-content/clusters/edge/site-deployment/site-deployment.md +++ b/docs/docs-content/clusters/edge/site-deployment/site-deployment.md @@ -45,3 +45,5 @@ by people with different roles. The Palette Edge lifecycle is explained in detai - [Register Edge Host](site-installation/edge-host-registration.md) - [Create Cluster Definition](site-installation/cluster-deployment.md) + +- [Deployment with Custom Registries](./deploy-custom-registries/deploy-custom-registries.md) diff --git a/docs/docs-content/clusters/edge/site-deployment/site-installation/edge-host-registration.md b/docs/docs-content/clusters/edge/site-deployment/site-installation/edge-host-registration.md index 94a4c7e4ca..e4b60d4c88 100644 --- a/docs/docs-content/clusters/edge/site-deployment/site-installation/edge-host-registration.md +++ b/docs/docs-content/clusters/edge/site-deployment/site-installation/edge-host-registration.md @@ -8,12 +8,12 @@ tags: ["edge"] --- To use an Edge host with a host cluster, you must first register it with Palette. A registration token in the user data -is required to complete the registration process. You have three options to register the Edge host with Palette. +is required to complete the registration process. You have the following options to register the Edge host with Palette. | **Method** | **Description** | **Set up Effort** | | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | -| Auto Registration | Edge hosts can automatically register with Palette by using a _Registration Token_. This method requires you to specify the registration token in the user data. | Low | -| Manual Registration | You can manually enter a unique Edge host ID into Palette. | Low | +| Auto Registration | Edge hosts can automatically register with Palette through a _Registration Token_. This method requires you to specify the registration token in the user data. | Low | +| Manual Registration | You can manually enter a unique Edge host ID in Palette. | Low | | QR Code | Scan a QR code that takes you to a web application that registers the Edge host with Palette. This method is considered advanced with the benefit of simplifying the Edge host registration without needing a tenant token or a manual entry. | High | :::warning @@ -35,8 +35,6 @@ By default, devices automatically register during the site installation process is present. Set the parameter `disableAutoRegister` to `true` in the Edge Installer configuration to disable auto registration and require manual device registration. -
- ```yaml stylus: site: @@ -44,16 +42,12 @@ stylus: disableAutoRegister: true ``` -
- Select the registration method that best fits your organizational needs and review the steps to get started. - [Auto Registration](#auto-registration) - [Manual Registration](#manual-registration) -- [QR Code Registration](#qr-code-registration) - ### Auto Registration You can automate the registration process by using registration tokens. diff --git a/docs/docs-content/clusters/edge/site-deployment/site-installation/site-user-data.md b/docs/docs-content/clusters/edge/site-deployment/site-installation/site-user-data.md index 9c7d1c34d3..9154e8280b 100644 --- a/docs/docs-content/clusters/edge/site-deployment/site-installation/site-user-data.md +++ b/docs/docs-content/clusters/edge/site-deployment/site-installation/site-user-data.md @@ -27,7 +27,7 @@ to a bootable device, such as a USB stick. 1. Create a file called **user-data** that contains the additional configurations you want to override or inject. Ensure that the file starts with a line that only contains `#cloud-config`. Only include configurations you'd like to add or override. There is no need to include user data that was already present when the ISO image was build in - the [Build Edge Artifacts](../../edgeforge-workflow/palette-canvos.md) step. + the [Build Edge Artifacts](../../edgeforge-workflow/palette-canvos/palette-canvos.md) step. ```shell touch user-data diff --git a/docs/docs-content/clusters/edge/site-deployment/stage.md b/docs/docs-content/clusters/edge/site-deployment/stage.md index 8dd7eaf208..1398d2955d 100644 --- a/docs/docs-content/clusters/edge/site-deployment/stage.md +++ b/docs/docs-content/clusters/edge/site-deployment/stage.md @@ -54,7 +54,7 @@ The following items are optional and not required but may apply to your use case additional configurations after the Edge host is powered on at the physical site. - USB disk containing the content bundle ISO. You can avoid this by creating a custom installer. Refer to the - [Build Edge Artifacts](../edgeforge-workflow/palette-canvos.md) guide. + [Build Edge Artifacts](../edgeforge-workflow/palette-canvos/palette-canvos.md) guide. ### Installer Handoff @@ -84,8 +84,8 @@ vCenter environment, you will convert the VMDK to a VM template, and export it o ### Prerequisites -- Edge Installer ISO file. Check out the [build images](../edgeforge-workflow/palette-canvos.md) guide to learn how to - create an Edge Installer image or use the default Edge Installer image. +- Edge Installer ISO file. Check out the [build images](../edgeforge-workflow/palette-canvos/palette-canvos.md) guide to + learn how to create an Edge Installer image or use the default Edge Installer image. - vCenter environment with sufficient resources and access privileges to complete the following actions: - Upload files to a datastore. diff --git a/docs/docs-content/clusters/edge/third-party-integrations/tailscale.md b/docs/docs-content/clusters/edge/third-party-integrations/tailscale.md index fffa7281fd..85c2a081d4 100644 --- a/docs/docs-content/clusters/edge/third-party-integrations/tailscale.md +++ b/docs/docs-content/clusters/edge/third-party-integrations/tailscale.md @@ -38,8 +38,8 @@ experience problems with Kubernetes. - An external volume that can be flashed with the Edge installer ISO. For example, a USB drive. - This how-to uses the EdgeForge workflow to build artifacts used to provision Edge hosts. Review - [EdgeForge Workflow](../edgeforge-workflow/palette-canvos.md) to become familiar with how to build EdgeForge - artifacts. + [EdgeForge Workflow](../edgeforge-workflow/palette-canvos/palette-canvos.md) to become familiar with how to build + EdgeForge artifacts. ## Use Tailscale to Remotely Connect to Your Edge Cluster @@ -87,7 +87,7 @@ experience problems with Kubernetes. 3. Review the **.arg.template** file containing the customizable arguments and create an **.arg** file. Below is a command you can use to create an example **.arg** file. For more information, refer to the - [Build Edge Artifacts](../edgeforge-workflow/palette-canvos.md) guide. + [Build Edge Artifacts](../edgeforge-workflow/palette-canvos/palette-canvos.md) guide. ```bash cat << EOF > .arg @@ -195,7 +195,7 @@ experience problems with Kubernetes. ``` 8. Afterward, push the provider images to an image registry. For more information, refer to - [Build Edge Artifacts](../edgeforge-workflow/palette-canvos.md). + [Build Edge Artifacts](../edgeforge-workflow/palette-canvos/palette-canvos.md). 9. Flash your external volume with the Edge installer ISO image. You can use [balena etcher](https://etcher.balena.io/) or any other tool of your choice to flash your volume. diff --git a/docs/docs-content/clusters/edge/upgrade-behavior.md b/docs/docs-content/clusters/edge/upgrade-behavior.md new file mode 100644 index 0000000000..fb20a7e4cc --- /dev/null +++ b/docs/docs-content/clusters/edge/upgrade-behavior.md @@ -0,0 +1,105 @@ +--- +sidebar_label: "Edge Cluster Upgrade Behavior" +title: "Edge Cluster Upgrade Behavior" +description: "Learn about how Palette Edge responds to upgrades of the cluster profile." +hide_table_of_contents: false +sidebar_position: 80 +tags: ["edge", "architecture"] +--- + +When you update an active Edge cluster's profile, Palette will upgrade the active cluster to the latest version of the +profile. Depending on the nature of the change, implementing an upgrade might involve repaving a cluster, rebooting a +cluster, restarting services, or doing nothing. For more information about cluster repaves, refer to +[Repave Behavior and Configurations](../cluster-management/node-pool.md#repave-behavior-and-configuration). For more +information about how to update a cluster profile, refer to +[Update a Cluster](../cluster-management/cluster-updates.md). + +:::warning + +- If a cluster's Kubernetes service is down, updates to the cluster's profile will not get applied to the cluster. You + must fix the issue impacting the Kubernetes service first. Once the Kubernetes service is back to being operational, + the Palette agent will apply the updates from the cluster profile to the cluster. + +::: + +## Known Issues + +- For RKE2 clusters, updates to the `stages.*` section in the Operating System (OS) and the Kubernetes pack of the + cluster profile will trigger a repave instead of a reboot. The only exception is changes to the `stages.reconcile.*` + section, which will behave as expected and trigger a configuration reload. + +## Upgrade Behaviors + +A cluster could respond to an upgrade in several ways. The table below lists the potential upgrade behaviors you could +encounter. + +| Upgrade Behavior | Description | +| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Repave | Repaves all nodes in the cluster, starting with the control plane. | +| Reboot | Reboots all nodes in the cluster, starting with the control plane. | +| Service restart | Restarts specific services in all nodes in the cluster, starting with the control plane. | +| Configuration reload | Updates the configurations without needing to restart services or the node. This is only triggered when you update `stage.reconcile.*` in the Operating System (OS) layer. | +| No operations (No-op) | Acknowledges the update request but does nothing. | + +## Upgrade Behavior by Change Location + +Updates in the OS or Kubernetes layers can trigger different upgrade behaviors depending on the exact values changed. + +### OS Layer + +| Repave | Reboot | Service Restart | No-op | +| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| - `options.system.uri` | - `stages.rootfs.*`
- `stages.initramfs.*`
- `stages.boot.*`
- `stages.fs.*`
- `stages.network.*`
- `stages.after-install.*`
- `stages.after-install-chroot.*`
- `stages.after-upgrade.*`
- `stages.after-upgrade-chroot.*`
- `stages.after-reset.*`
- `stages.after-reset-chroot.*`
- `stages.before-install.*`
- `stages.before-upgrade.*`
- `stages.before-reset.*`
| None. | - `pack.*`
- `providerCredentials.*`
- `options.system.registry`
- `options.system.repo`
- `options.system.k8sDistribution`
- `options.system.osName`
- `options.system.peVersion`
- `options.system.customTag`
- `options.system.osVersion`
| + +:::warning + +Changes to any other parameters that are used by the `options.system.uri` parameter will also trigger a cluster repave. +For example, if your `options.system.uri` parameter is +`{{ .spectro.pack.edge-native-byoi.options.system.registry }}/{{ .spectro.pack.edge-native-byoi.options.system.repo }}:{{ .spectro.pack.edge-native-byoi.options.system.k8sDistribution }}`, +changes to `.spectro.pack.edge-native-byoi.options.system.registry` will trigger a cluster repave because it changes the +`options.system.uri` parameter. + +::: + +### Kubernetes Layer + + + +| Repave | Reboot | Service Restart | No-op | +|--------|--------|-----------------|-------| +| None. | - `stages.rootfs.*`
- `stages.initramfs.*`
- `stages.boot.*`
- `stages.fs.*`
- `stages.network.*`
- `stages.after-install.*`
- `stages.after-install-chroot.*`
- `stages.after-upgrade.*`
- `stages.after-upgrade-chroot.*`
- `stages.after-reset.*`
- `stages.after-reset-chroot.*`
- `stages.before-install.*`
- `stages.before-upgrade.*`
- `stages.before-reset.*`
| - `cluster.*`
| - `clientConfig.*`
- `pack.*` | + +
+ + +| Repave | Reboot | Service Restart | No-op | +|--------|--------|-----------------|-------| +| None. | - `stages.rootfs.*`
- `stages.initramfs.*`
- `stages.boot.*`
- `stages.fs.*`
- `stages.network.*`
- `stages.after-install.*`
- `stages.after-install-chroot.*`
- `stages.after-upgrade.*`
- `stages.after-upgrade-chroot.*`
- `stages.after-reset.*`
- `stages.after-reset-chroot.*`
- `stages.before-install.*`
- `stages.before-upgrade.*`
- `stages.before-reset.*`
| - `cluster.*`
| - `clientConfig.*`
- `pack.*` | + +
+ + +| Repave | Reboot | Service Restart | No-op | +|--------|--------|-----------------|-------| +| None. | - `stages.rootfs.*`
- `stages.initramfs.*`
- `stages.boot.*`
- `stages.fs.*`
- `stages.network.*`
- `stages.after-install.*`
- `stages.after-install-chroot.*`
- `stages.after-upgrade.*`
- `stages.after-upgrade-chroot.*`
- `stages.after-reset.*`
- `stages.after-reset-chroot.*`
- `stages.before-install.*`
- `stages.before-upgrade.*`
- `stages.before-reset.*`
| - `cluster.*`
| - `clientConfig.*`
- `pack.*` | + +
+ +
+ +## Network Layer + +Changes made to the Container Network Interface (CNI) pack typically do not result in cluster repave or reboot, and can +be applied by restarting the related networking services. + +:::warning + +Do not change to a different CNI pack after provisioning a cluster. You can make changes to the existing CNI pack, but +if you want to use a different CNI pack altogether, we recommend you create another cluster. + +::: + +## Storage Layer + +Changes made to the storage layer typically do not result in cluster repave or reboot and can be applied by restarting +the related storage services. diff --git a/docs/docs-content/clusters/pcg/deploy-app-pcg.md b/docs/docs-content/clusters/pcg/deploy-app-pcg.md new file mode 100644 index 0000000000..db2caed565 --- /dev/null +++ b/docs/docs-content/clusters/pcg/deploy-app-pcg.md @@ -0,0 +1,644 @@ +--- +sidebar_label: "Deploy App Workloads with a PCG" +title: "Deploy App Workloads with a PCG" +description: + "Learn how to deploy a Private Cloud Gateway (PCG) to connect your data center or private cloud environment to + Palette. This tutorial teaches you how to launch a PCG, create a data center cluster, and deploy a demo application." +hide_table_of_contents: false +toc_min_heading_level: 2 +toc_max_heading_level: 2 +sidebar_position: 50 +tags: ["pcg"] +--- + +Palette Private Cloud Gateway (PCG) is a crucial infrastructure support component that acts as a bridge between your +private cloud environment or data center and Palette. + +A PCG is required in environments lacking direct network access to Palette. For example, many infrastructure +environments reside within private networks that restrict external connections, preventing internal devices and +resources from reaching Palette directly. + +Upon installation, the PCG initiates a connection from inside the private network to Palette, serving as an endpoint for +Palette to communicate with the infrastructure environment. The PCG continuously polls Palette for instructions to +either deploy or delete Kubernetes clusters within the environment. This connection uses a secure communication channel +that is encrypted using the Transport Layer Security (TLS) protocol. Once a cluster is deployed, the PCG is no longer +involved in the communication between Palette and the deployed cluster. The cluster then communicates directly with +Palette through the Palette agent available within each cluster, which originates all network requests outbound toward +Palette. Refer to the [PCG Architecture](./architecture.md) section for more information. + +A PCG comprises a cluster of nodes and can be deployed using two methods. The first method uses the Palette CLI to +deploy a PCG in one of the three supported infrastructure environments; MAAS, OpenStack, or VMware vSphere. The other +method manually deploys a PCG [onto an existing Kubernetes cluster](./deploy-pcg-k8s.md). + +In this tutorial, you will deploy a VMware PCG using Palette CLI. Next, you will learn how to deploy a VMware cluster +with a sample Kubernetes application called +[Hello Universe](https://github.com/spectrocloud/hello-universe#hello-universe), utilizing either the Palette dashboard +or Terraform. + +The following diagram illustrates the components that will be deployed in this tutorial and how they communicate with +each other. + +![An architecture diagram of PCG](/clusters_pcg_deploy-app-pcg_pcg-diagram.webp) + +## Prerequisites + +To complete this tutorial, you will need the following prerequisites in place. + + - A Palette account with [tenant admin](../../tenant-settings/tenant-settings.md) access. + - A Palette API key. Refer to the [Create API Key](../../user-management/authentication/api-key/create-api-key.md) page for instructions on how to create an API key. + - A [VMware vSphere](https://docs.vmware.com/en/VMware-vSphere/index.html) user account with the [required permissions](../data-center/vmware/permissions.md). + - A Linux x86-64 machine with access to a terminal and Internet, as well as connection to both Palette and VMware vSphere. + - An SSH key pair. Use the [Create and Upload an SSH Key](../cluster-management/ssh-keys.md) guide to learn how to create an SSH key and upload it to Palette. + - The following IP address requirements must be met in your VMware vSphere environment: + - One IP address available for the single-node PCG deployment. Refer to the [PCG Sizing](./manage-pcg/scale-pcg-nodes.md) section for more information on sizing. + - One IP address reserved for cluster repave operations. + - One IP address for the Virtual IP (VIP). + - DNS must be able to resolve the domain `api.spectrocloud.com`. + - NTP server must be reachable from the PCG. + - The following minimum resources must be available in your VMware vSphere environment: + - CPU: 4 cores. + - Memory: 4 GiB. + - Storage: 60 GiB. + +
+ + :::info + + In production environments, we recommend deploying a three-node PCG, each node with 8 cores of CPU, 8 GiB of memory, and 100 GiB of storage. + + ::: + + - Ensure the following software is installed and available on your Linux machine. + - [Palette CLI](../../palette-cli/install-palette-cli.md). + - [Docker](https://docs.docker.com/desktop). + - [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/#installation). + - [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). + - [Terraform CLI](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) v1.4.0 or greater, if you choose to follow along with the Terraform workflow. + +## Authenticate with Palette + +The initial step to deploy a PCG using Palette CLI involves authenticating with your Palette environment using the +[`palette login`](../../palette-cli/commands/login.md) command. + +In your terminal, execute the following command. + +```bash +palette login +``` + +Once issued, you will be prompted for several parameters to complete the authentication. The table below outlines the +required parameters along with the values that will be utilized in this tutorial. If a parameter is specific to your +environment and Palette account, such as your Palette API key, ensure to input the value according to your environment. +Check out the [Deploy a PCG to VMware vSphere](../pcg/deploy-pcg/vmware.md) guide for more information. option. + +| **Parameter** | **Value** | **Environment-Specific** | +| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | +| **Spectro Cloud Console** | `https://console.spectrocloud.com`. If using a self-hosted instance of Palette, enter the URL for that instance. | No | +| **Allow Insecure Connection** | `Y`. Enabling this option bypasses x509 CA verification. In production environments, enter `Y` if you are using a self-hosted Palette or VerteX instance with self-signed TLS certificates and need to provide a file path to the instance CA. Otherwise, enter `N`. | No | +| **Spectro Cloud API Key** | Enter your Palette API Key. | Yes | +| **Spectro Cloud Organization** | Select your Palette Organization name. | Yes | +| **Spectro Cloud Project** | `None (TenantAdmin)` | No | +| **Acknowledge** | Accept the login banner message. [Login banner](../../tenant-settings/login-banner.md) messages are only displayed if the tenant admin enabled a login banner. | Yes | + +After accepting the login banner message, you will receive the following output confirming you have successfully +authenticated with Palette. + +```text hideClipboard +Welcome to Spectro Cloud Palette +``` + +The video below demonstrates Palette's authentication process. Ensure you utilize values specific to your environment, +such as the correct Palette URL. Contact your Palette administrator for the correct URL if you use a self-hosted Palette +or VerteX instance. + + + +## Deploy a PCG with Palette CLI + +After authenticating with Palette, you can proceed with the PCG creation process. Issue the command below to start the +PCG installation. + +```bash +palette pcg install +``` + +The `palette pcg install` command will prompt you for information regarding your PCG cluster, vSphere environment, and +resource configurations. The following tables display the required parameters along with the values that will be used in +this tutorial. Enter the provided values when prompted. If a parameter is specific to your environment, such as your +vSphere endpoint, enter the corresponding value according to your environment. For detailed information about each +parameter, refer to the [Deploy a PCG to VMware vSphere](../pcg/deploy-pcg/vmware.md) guide. + +:::info + +The PCG to be deployed in this tutorial is intended for educational purposes only and is not recommended for production +environments. + +::: + +1. **PCG General Information** + + Configure the PCG general information, including the **Cloud Type** and **Private Cloud Gateway Name**, as shown in + the table below. + + | **Parameter** | **Value** | **Environment-Specific** | + | :--------------------------------------------------- | ------------------ | ------------------------ | + | **Management Plane Type** | `Palette` | No | + | **Enable Ubuntu Pro (required for production)** | `N` | No | + | **Select an image registry type** | `Default` | No | + | **Cloud Type** | `VMware vSphere` | No | + | **Private Cloud Gateway Name** | `gateway-tutorial` | No | + | **Share PCG Cloud Account across platform Projects** | `Y` | No | + +2. **Environment Configuration** + + Enter the environment configuration information, such as the **Pod CIDR** and **Service IP Range** according to the + table below. + + | **Parameter** | **Value** | **Environment-Specific** | + | :------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------ | + | **HTTPS Proxy** | Skip. | No | + | **HTTP Proxy** | Skip. | No | + | **Pod CIDR** | `172.16.0.0/20`. The pod IP addresses should be unique and not overlap with any machine IPs in the environment. | No | + | **Service IP Range** | `10.155.0.0/24`. The service IP addresses should be unique and not overlap with any machine IPs in the environment. | No | + +3. **vSphere Account Information** + + Enter the information specific to your vSphere account. + + | **Parameter** | **Value** | **Environment-Specific** | + | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------ | + | **vSphere Endpoint** | Your vSphere endpoint. You can specify a Full Qualified Domain Name (FQDN) or an IP address. Make sure you specify the endpoint without the HTTP scheme `https://` or `http://`. Example: `vcenter.mycompany.com`. | Yes | + | **vSphere Username** | Your vSphere account username. | Yes | + | **vSphere Password** | Your vSphere account password. | Yes | + | **Allow Insecure Connection (Bypass x509 Verification)** | `Y`. Enabling this option bypasses x509 CA verification. In production environments, enter `N` if using a custom registry with self-signed SSL certificates. Otherwise, enter `Y`. | No | + +4. **vSphere Cluster Configuration** + + Enter the PCG cluster configuration information. For example, specify the vSphere **Resource Pool** to be targeted by + the PCG cluster. + + | **Parameter** | **Value** | **Environment-Specific** | + | -------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------ | + | **Datacenter** | The vSphere data center to target when deploying the PCG cluster. | Yes | + | **Folder** | The vSphere folder to target when deploying the PCG cluster. | Yes | + | **Network** | The port group to which the PCG cluster will be connected. | Yes | + | **Resource Pool** | The vSphere resource pool to target when deploying the PCG cluster. | Yes | + | **Cluster** | The vSphere compute cluster to use for the PCG deployment. | Yes | + | **Select specific Datastore or use a VM Storage Policy** | `Datastore` | No | + | **Datastore** | The vSphere datastore to use for the PCG deployment. | Yes | + | **Add another Fault Domain** | `N` | No | + | **NTP Servers** | Skip. | No | + | **SSH Public Keys** | Provide a public OpenSSH key to be used to connect to the PCG cluster. | Yes | + +5. **PCG Cluster Size** + + This tutorial will deploy a one-node PCG with dynamic IP placement (DDNS). If needed, you can convert a single-node + PCG to a multi-node PCG to provide additional capacity. Refer to the + [Increase PCG Node Count](./manage-pcg/scale-pcg-nodes.md) guide for more information. + + | **Parameter** | **Value** | **Environment-Specific** | + | ------------------- | ---------------------------------------------------------------------------- | ------------------------ | + | **Number of Nodes** | `1` | No | + | **Placement Type** | `DDNS` | No | + | **Search domains** | Comma-separated list of DNS search domains. For example, `spectrocloud.dev`. | Yes | + +6. **Cluster Settings** + + Set the parameter **Patch OS on boot** to `N`, meaning the OS of the PCG hosts will not be patched on the first boot. + + | **Parameter** | **Value** | **Environment-Specific** | + | -------------------- | --------- | ------------------------ | + | **Patch OS on boot** | `N` | No | + +7. **vSphere Machine Configuration** + + Set the size of the PCG as small (**S**) as this PCG will not be used in production environments. + + | **Parameter** | **Value** | **Environment-Specific** | + | ------------- | --------------------------------------------- | ------------------------ | + | **S** | `4 CPU, 4 GB of Memory, and 60 GB of Storage` | No | + +8. **Node Affinity Configuration Information** + + Set **Node Affinity** to `N`, indicating no affinity between Palette pods and control plane nodes. + + | **Parameter** | **Value** | **Environment-Specific** | + | ----------------- | --------- | ------------------------ | + | **Node Affinity** | `N` | No | + +After answering the prompts of the `pcg install` command, a new PCG configuration file is generated, and its location is +displayed on the console. + +```text hideClipboard +==== PCG config saved ==== Location: /home/ubuntu/.palette/pcg/pcg-20240313152521/pcg.yaml +``` + +Next, Palette CLI will create a local [kind](https://kind.sigs.k8s.io/) cluster that will be used to bootstrap the PCG +cluster deployment in your VMware environment. Once installed, the PCG registers itself with Palette and creates a +VMware cloud account with the same name as the PCG. + +The following recording demonstrates the `pcg install` command with the `--config-only` flag. When using this flag, a +reusable configuration file named **pcg.yaml** is created under the path **.palette/pcg**. You can then utilize this +file to install a PCG with predefined values using the command `pcg install` with the `--config-file` flag. Refer to the +[Palette CLI PCG Command](../../palette-cli/commands/pcg.md) page for further information about the command. + + + +
+
+ +You can monitor the PCG cluster creation by logging into Palette and switching to the **Tenant Admin** scope. Next, +click on **Tenant Settings** from the left **Main Menu** and select **Private Cloud Gateways**. Then, click on the PCG +cluster you just created and check the deployment progress under the **Events** tab. + +![PCG Events page.](/clusters_pcg_deploy-app-pcg_pcg-events.webp) + +You can also track the PCG deployment progress from your terminal. Depending on the PCG size and infrastructure +environment, the deployment might take up to 30 minutes. Upon completion, the local kind cluster is automatically +deleted from your machine. + +![Palette CLI PCG deployment](/clusters_pcg_deploy-app-pcg_pcg-cli.webp) + +Next, log in to Palette as a tenant admin. Navigate to the left **Main Menu** and select **Tenant Settings**. Click on +**Private Cloud Gateways** from the **Tenant Settings Menu** and select the PCG you just created. Ensure that the PCG +cluster status is **Running** and **Healthy** before proceeding. + +![PCG Overview page.](/clusters_pcg_deploy-app-pcg_pcg-health.webp) + +## Create a Cluster Profile and Deploy a Cluster + +Once you have successfully deployed the PCG, proceed to create a cluster profile with the +[Hello Universe](https://github.com/spectrocloud/hello-universe) application and use it to deploy a VMware cluster. You +can use the Palette dashboard or Terraform. + + + + + +### Create a Cluster Profile + +Log in to Palette and select **Profiles** from the left **Main Menu** to access the cluster profile page. Click on the +**Add Cluster Profile** button and follow the wizard to create a new cluster profile. + +**Basic Information** + +Complete the **Basic Information** section with the values provided below. + +| **Field** | **Value** | +| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Name | `pcg-tutorial-profile` | +| Version | `1.0.0` | +| Description | Cluster profile as part of the Deploy App Workloads with a PCG tutorial. | +| Type | Full | +| Tags | `spectro-cloud-education`, `app:hello-universe`, `terraform_managed:false`, `repository:spectrocloud:tutorials`, `tutorial:DEPLOY_APP_WORKLOADS_WITH_A_PCG` | + +Click on **Next** to continue. + +**Cloud Type** + +In the **Cloud Type** section, select VMware as the infrastructure provider, then click **Next** to proceed. + +**Profile Layers** + +Add the following core infrastructure layers displayed to your profile. + +| Pack Name | Version | Layer | +| ------------------ | ------- | ---------------- | +| ubuntu-vsphere LTS | 22.4.x | Operating System | +| kubernetes | 1.28.x | Kubernetes | +| cni-calico | 3.26.x | Network | +| csi-vsphere-csi | 3.0.x | Storage | + +After adding each layer, click on the **Next Layer** button. Once the storage layer is added, click **Confirm** to +complete the core infrastructure stack. + +Next, click on the **Add New Pack** button to include add-on layers to your cluster profile. + +Add the **MetalLB (Helm)** pack to your profile. The [MetalLB](../../integrations/metallb.md) pack provides a +load-balancer implementation for your Kubernetes cluster, as VMware does not offer a load balancer solution natively. +The load balancer is required to help the _LoadBalancer_ service specified in the Hello Universe application manifest +obtain an IP address, so that you can access the application from your browser. + +| Pack Name | Version | Layer | +| --------------- | ------- | ------------- | +| lb-metallb-helm | 0.13.x | Load Balancer | + +Now, under **Pack Details**, click on **Values** and replace the predefined `192.168.10.0/24` IP CIDR listed below the +**addresses** line with a valid IP address or IP range from your VMware environment to be assigned to your load +balancer. Next, click **Confirm & Create** to add the MetalLB pack. + +![Metallb Helm-based pack.](/clusters_pcg_deploy-app-pcg_metallb-pack.webp) + +Finally, click again on the **Add New Pack** button to add the Hello Universe pack. + +| Pack Name | Version | Layer | +| -------------- | ------- | ----------- | +| hello-universe | 1.1.x | App Service | + +Click on the **Confirm & Create** button and then click **Next**. + +**Review** + +Review the selected cluster layers and configurations. Click on **Finish Configuration** to complete the cluster profile +creation. + +![Cluster profile review page.](/clusters_pcg_deploy-app-pcg_cluster-profile.webp) + +### Deploy a VMware Cluster + +Navigate to the left **Main Menu** and select **Profiles**. Locate and click on the cluster profile you previously +created. Next, click on the **Deploy** button and confirm by clicking **OK** to start the cluster deployment using the +selected cluster profile. + +![Cluster profile page.](/clusters_pcg_deploy-app-pcg_deploy-profile.webp) + +**Basic Information** + +Ensure the following values are set for the **Basic Information** section. + +| **Field** | **Value** | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Cluster name | `pcg-tutorial-cluster` | +| Description | Cluster as part of the Deploy App Workloads with a PCG tutorial. | +| Tags | `spectro-cloud-education`, `app:hello-universe`, `terraform_managed:false`, `repository:spectrocloud:tutorials`, `tutorial:DEPLOY_APP_WORKLOADS_WITH_A_PCG` | +| Type of cluster | Datacenter | +| Cloud Account | Select the VMware cloud account that was registered with Palette during the PCG creation. The cloud account has the same name as the PCG. In this tutorial, the cloud account is called `gateway-tutorial`. | + +**Parameters** + +The **Parameters** section displays all the layers in the cluster profile and allows you to modify profile +configurations if needed. Proceed by clicking **Next**. + +**Cluster Configuration** + +In the **Cluster Config** section, provide specific information about your VMware vSphere environment. First, select the +**Datacenter** and **Deployment Folder** where the cluster nodes will be launched. Next, select the **Image Template +Folder** to which the Spectro templates are imported, and choose **DHCP** as the **Network Type**. Finally, provide the +**SSH key** for accessing the cluster nodes. Proceed by clicking **Next** to advance to the **Nodes Configuration** +section. + +**Nodes Configuration** + +Provide the details for the nodes of the control plane and worker pools. + +| **Field** | **Control Plane Pool** | **Worker Pool** | +| --------------------------- | ---------------------- | --------------- | +| Node pool name | control-plane-pool | worker-pool | +| Number of nodes in the pool | `1` | `1` | +| Allow worker capability | No | Not applicable | +| Enable Autoscaler | Not applicable | No | +| Rolling update | Not applicable | Expand First | + +Keep the **Cloud Configuration** settings the same for both pools, with **CPU** set to 4 cores, **memory** allocated at +8 GB, and **disk** space at 60 GB. Next, populate the **Compute cluster**, **Resource Pool**, **Datastore**, and +**Network** fields according to your VMware vSphere environment. Click **Next** to proceed. + +**Settings** + +The **Settings** section offers advanced options for OS patching, scheduled scans, scheduled backups, and cluster role +binding. Utilize the default values, and click on the **Validate** button. + +**Review** + +The **Review** section allows you to review the cluster configuration before deploying the cluster. Click on **Finish +Configuration** to start the cluster deployment, which may take up to 20 minutes. + +![Cluster review page.](/clusters_pcg_deploy-app-pcg_cluster-review.webp) + +Now, navigate to the left **Main Menu** and click on **Clusters**. While the deployment is in progress, Palette displays +the cluster status as **Provisioning**. You can view detailed cluster information, including deployment status and event +logs, by selecting your cluster. + +![Palette's Clusters page.](/clusters_pcg_deploy-app-pcg_cluster-provisioning.webp) + + + + + +### Set Up the Tutorial Environment + +Open a terminal window and clone the Spectro Cloud [Tutorials](https://github.com/spectrocloud/tutorials) repository +from GitHub using the command below. + +```bash +git clone https://github.com/spectrocloud/tutorials.git +``` + +Navigate to the **/terraform/vmware-cluster-deployment-tf** directory, which contains the Terraform code for this +tutorial. + +```bash +cd terraform/vmware-cluster-deployment-tf +``` + +Next, copy your Palette API key and export it as an environment variable with the command below. Replace +`YourAPIKeyHere` with your API key. + +```bash +export SPECTROCLOUD_APIKEY=YourAPIKeyHere +``` + +### Create a Cluster Profile and Deploy a VMware Cluster + +Before proceeding, we recommend that you explore all the Terraform files present in the directory. Below is a high-level +overview of each file. + +- **profile.tf** - Configuration for the `spectrocloud_cluster_profile` resource. The following layers will be added to + the profile. + + | Pack Name | Version | Layer | + | ------------------ | ------- | ---------------- | + | ubuntu-vsphere LTS | 22.4.x | Operating System | + | kubernetes | 1.28.x | Kubernetes | + | cni-calico | 3.26.x | Network | + | csi-vsphere-csi | 3.0.x | Storage | + | lb-metallb-helm | 0.13.x | Load Balancer | + | hello-universe | 1.1.x | App Service | + + The [MetalLB](../../integrations/metallb.md) pack provides a load-balancer implementation for your Kubernetes cluster, + as VMware does not offer a load balancer solution natively. The load balancer is required to help the _LoadBalancer_ + service specified in the Hello Universe application manifest obtain an IP address, so that you can access the + application on your browser. + +- **cluster.tf** - Configuration for the `spectrocloud_cluster_vsphere` resource. + +- **data.tf** - Configuration for the resources to retrieve data from Palette dynamically. + +- **inputs.tf** - Variables used in the tutorial, such as the PCG name, SSH key, and vSphere endpoint. + +- **outputs.tf** - Output variables that display information to the terminal once the resources are created. For + example, upon cluster deployment, the location of the SSH key and the command to SSH into your cluster nodes are + displayed in the terminal. + +- **provider.tf** - Terraform providers configuration. + +- **ssh-key.tf** - Resources to generate an SSH key pair in case the user does not provide one. + +- **ippool.tf** - This file contains the resources required for static IP placement deployments. You will note that the + resource `spectrocloud_privatecloudgateway_ippool` is currently commented out as this tutorial uses dynamic IP + placement. + +- **terraform.tfvars** - Variable definitions required for the cluster deployment. + +Open the **terraform.tfvars** file in the editor of your choice and provide the values for the variables according to +the table below. + +| Variable Name | Description | Required | +| -------------------- | ----------------------------------------------------------------------------------------------------------- | -------- | +| `metallb_ip` | Provide a valid IP address or IP range from your VMware environment to be assigned to your load balancer. | Yes | +| `pcg_name` | Provide the name of the PCG that will be used to deploy the VMware cluster. | Yes | +| `datacenter_name` | Provide the name of the vSphere data center to target when deploying the VMware cluster. | Yes | +| `folder_name` | Provide the name of the vSphere folder to target when deploying the VMware cluster. | Yes | +| `search_domain` | Provide the name of the network search domain of your vSphere environment. For example, `spectrocloud.dev`. | Yes | +| `vsphere_cluster` | Provide the vSphere compute cluster to use for the VMware cluster deployment. | Yes | +| `datastore_name` | Provide the vSphere datastore name to use for the VMware cluster deployment. | Yes | +| `network_name` | Provide the vSphere network name to use for the VMware cluster deployment. | Yes | +| `resource_pool_name` | Provide the vSphere resource pool to target when deploying the VMware cluster. | Yes | +| `ssh_key` | Provide the path to your public SSH key. If not provided, a new key pair will be created. | No | +| `ssh_key_private` | Provide the path to your private SSH key. If not provided, a new key pair will be created. | No | + +When you are ready making the required changes, initialize Terraform with the command presented below. + +```bash +terraform init +``` + +The `init` command will download the plugins and providers defined in the **provider.tf** file. + +Next, issue the `terraform plan` command to preview the resources that Terraform will create. + +```bash +terraform plan +``` + +The output displays the resources that Terraform will create in an actual implementation, including the cluster profile, +VMware vSphere cluster, and a new SSH key pair unless an existing key pair was specified. + +```text hideClipboard +# Output condensed for readability +Plan: 5 to add, 0 to change, 0 to destroy. +``` + +Issue the `terraform apply` command to deploy the resources to your VMware vSphere environment. + +```bash +terraform apply -auto-approve +``` + +It can take up to 20 minutes to complete the cluster deployment process. Once completed, the following output will be +displayed. + +```text hideClipboard +# Output condensed for readability +Apply complete! Resources: 5 added, 0 to changed, 0 to destroyed. +``` + +Log in to Palette, navigate to the left **Main Menu**, and click on **Clusters**. While the deployment is in progress, +Palette displays the cluster status as **Provisioning**. + +![Palette's Clusters page.](/clusters_pcg_deploy-app-pcg_cluster-provisioning.webp) + +You can select the **pcg-tutorial-cluster** to explore deployment status and event logs. + + + + + +## Validate + +Once the cluster creation process has finished, log in to Palette, navigate to the left **Main Menu**, and click on +**Clusters**. Select the **pcg-tutorial-cluster** to display the cluster's **Overview** page. Once the cluster status +displays **Running** and **Healthy**, you can access the application through the exposed service URL along with the +displayed port number. + +![Healthy VMware cluster](/clusters_pcg_deploy-app-pcg_cluster-health.webp) + +Click on the URL for port **:8080** to access the Hello Universe application landing page. + +![Hello Universe application](/clusters_pcg_deploy-app-pcg_hello-universe.webp) + +Once you have completed the steps and accessed the application, you have successfully deployed your first application to +a VMware cluster managed by Palette. + +## Clean Up + +The following steps will guide you to clean up your environment after completing the tutorial. Follow the steps below to +delete the PCG, the cluster profile, and the VMware cluster. + +### Delete the Cluster Profile and Cluster + + + + + +In Palette, navigate to the left **Main Menu**, click on **Clusters** and select the `pcg-tutorial-cluster` to access +its details page. Next, click on the **Settings** button to expand the **drop-down Menu**, then select the **Delete +Cluster**. Confirm the deletion by entering the cluster name when prompted. + +![Delete Palette cluster](/clusters_pcg_deploy-app-pcg_cluster-delete.webp) + +The cluster status will change to **Deleting**, and the deletion process may take up to 15 minutes. + +Once the cluster is deleted, proceed to delete the cluster profile. On the left **Main Menu**, click on **Profiles**, +and select the profile `pcg-tutorial-profile`. Next, click on the **three-dot Menu**, select **Delete**, and confirm the +selection to remove the cluster profile. + + + + + +In your terminal, issue the `terraform destroy` command within the **/terraform/vmware-cluster-deployment-tf** directory +to remove all the resources that were created by Terraform. + +```bash +terraform destroy --auto-approve +``` + +Deleting the resources may take up to 15 minutes. Upon completion, you should receive an output similar to the provided +below. + +```text hideClipboard +# Output condensed for readability +Destroy complete! Resources: 5 destroyed. +``` + + + + + +### Delete the PCG + +After deleting your VMware cluster and cluster profile, proceed with the PCG deletion. Log in to Palette as a tenant +admin, navigate to the left **Main Menu** and select **Tenant Settings**. Next, from the **Tenant Settings Menu**, click +on **Private Cloud Gateways**. Identify the PCG you want to delete, click on the **Three-Dot Menu** at the end of the +PCG row, and select **Delete**. Click **OK** to confirm the PCG deletion. + +![Delete PCG image](/clusters_pcg_deploy-app-pcg_pcg-delete.webp) + +Palette will delete the PCG and the Palette services deployed on the PCG node. However, the underlying infrastructure +resources, such as the virtual machine, must be removed manually from VMware vSphere. + +Log in to your VMware vSphere server and select the VM representing the PCG node named `gateway-tutorial-cp`. Click on +the **Three-Dot Actions** button, select **Power**, and **Power Off** to power off the machine. Once the machine is +powered off, click on the **Three-Dot Actions** button again and select **Delete from Disk** to remove the machine from +your VMware vSphere environment. + +![Delete VMware VM](/clusters_pcg_deploy-app-pcg_vmware-delete.webp) + +## Wrap-Up + +In this tutorial, you learned how to deploy a VMware PCG using the Palette CLI. Then, you used the PCG to support the +deployment of a Kubernetes cluster with a sample application to your VMware vSphere environment. Next, you accessed the +Hello Universe application landing page through the exposed service URL. + +A PCG is a powerful component that enables Palette to communicate with private clouds or data center environments +residing in restricted networks that don't allow inbound connections from external sources. The PCG acts as an endpoint +and continuously polls Palette for instructions. With a PCG, you can deploy Palette clusters and support their lifecycle +in environments like VMware vSphere without the need to configure complex firewall rules or expose public endpoints. + +We encourage you to check out the reference resources below to learn more about PCGs. + +- [Private Cloud Gateway](./pcg.md) +- [PCG Architecture](architecture.md) +- [Deploy a PCG to VMware vSphere](./deploy-pcg/vmware.md) +- [Manage PCG](./manage-pcg/manage-pcg.md) diff --git a/docs/docs-content/clusters/pcg/manage-pcg/add-dns-mapping.md b/docs/docs-content/clusters/pcg/manage-pcg/add-dns-mapping.md new file mode 100644 index 0000000000..f6455d08db --- /dev/null +++ b/docs/docs-content/clusters/pcg/manage-pcg/add-dns-mapping.md @@ -0,0 +1,68 @@ +--- +sidebar_label: "Add DNS Mapping" +title: "Add DNS Mapping" +description: "Learn how to add DNS mapping for a Private Cloud Gateway (PCG) deployed in a VMware vSphere environment." +hide_table_of_contents: false +sidebar_position: 15 +tags: ["pcg"] +--- + +If your VMware vSphere environment is configured with Dynamic Host Configuration Protocol (DHCP), you can add a Dynamic +Name Server (DNS) mapping to the Private Cloud Gateway (PCG) to resolve the hostnames of the nodes in the PCG. You can +also use the DNS mapping ensure nodes are alocated to the correct datacenter, cluster and network. + +You can add multiple DNS mappings to a PCG to support different datacenters and networks in your VMware vSphere +environment. + +## Prerequisites + +- A PCG is installed, active, and in a healthy state. Refer to [Deploy a PCG](../deploy-pcg/deploy-pcg.md) for + instructions on how to install a PCG. + +- Access to the VMware vSphere environment. + +- Tenant administrator access. + +## Add DNS Mapping + +1. Log in to [Palette](https://console.spectrocloud.com) as a tenant administrator. + +2. Navigate to the left **Main Menu** and select **Tenant Settings**. + +3. Select **Private Cloud Gateways** from the **Tenant Settings Menu**. + +4. Click on the PCG for which you want to create a node pool. + +5. From the PCG details page, click on the **DNS Mapping** tab. + +6. Select **Add New DNS Mapping**. + +7. Fill out the form. Refer to the table below to learn more about each input option. + + | Field | Description | + | ------------------- | ----------------------------------------------------------- | + | **Search Domain** | The domain name to allocate nodes to and resolve hostnames. | + | **Datacenter** | The vSphere datacenter to which the DNS mapping applies. | + | **Compute Cluster** | The vSphere cluster to which the DNS mapping applies. | + | **Network** | The vSphere network to which the DNS mapping applies. | + +8. Click **Confirm** to add the DNS mapping. + +## Validate + +Use the following steps to validate that the DNS mapping was created successfully. + +1. Log in to [Palette](https://console.spectrocloud.com) as a tenant administrator. + +2. Navigate to the left **Main Menu** and select **Tenant Settings**. + +3. Select **Private Cloud Gateways** from the **Tenant Settings Menu** + +4. Click on the PCG for which you created a node pool. + +5. From the PCG details page, click on the **DNS Mapping** tab. + +6. The new DNS mapping should be listed in the **Search Domain** section. + +To use the new DNS mapping, you will need to create a cluster and select DHCP as the network type. Select the DNS +mapping when configuring the cluster control plane and worker nodes. diff --git a/docs/docs-content/clusters/pcg/manage-pcg/pcg-upgrade.md b/docs/docs-content/clusters/pcg/manage-pcg/pcg-upgrade.md index 8a6c6f9f11..aaf48db587 100644 --- a/docs/docs-content/clusters/pcg/manage-pcg/pcg-upgrade.md +++ b/docs/docs-content/clusters/pcg/manage-pcg/pcg-upgrade.md @@ -28,10 +28,10 @@ cluster profile updates after upgrading your self-hosted Palette instance to a n The table below outlines a high-level overview of the upgrade process for a PCG and each of its components. -| Component | User Action Required? | Expected PCG Downtime? | Supported PCG Type? | Description | -| --------------- | --------------------- | ---------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Palette Agent | No | No | All | Automatically updated unless platform updates or cluster updates are paused. Refer to the [Pause Platform Upgrades](../../cluster-management/platform-settings/pause-platform-upgrades.md) to learn more about pausing updates. | -| Cluster Profile | Yes | Potentially | Only PCG clusters installed through Palette CLI | Manually approve the cluster profile update to apply the latest cluster profile changes. Not all Palette version updates introduce cluster profile changes. PCG clusters installed on an existing Kubernetes cluster is not eligble for cluster profile updates. Refer to the [Cluster Profile Updates](#cluster-profile-updates) to learn more. | +| Component | User Action Required? | Expected PCG Downtime? | Supported PCG Type? | Description | +| --------------- | --------------------- | ---------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Palette Agent | No | No | All | Automatically updated unless platform updates or cluster updates are paused. Refer to the [Pause Platform Upgrades](../../cluster-management/platform-settings/pause-platform-upgrades.md) to learn more about pausing updates. | +| Cluster Profile | Yes | Potentially | Only PCG clusters installed through Palette CLI | Manually approve the cluster profile update to apply the latest cluster profile changes. Not all Palette version updates introduce cluster profile changes. PCG clusters installed on an existing Kubernetes cluster is not eligible for cluster profile updates. Refer to the [Cluster Profile Updates](#cluster-profile-updates) to learn more. | Review the following sections to learn more about the upgrade process for a PCG. diff --git a/docs/docs-content/clusters/pcg/pcg.md b/docs/docs-content/clusters/pcg/pcg.md index 1ae665a254..d4da350293 100644 --- a/docs/docs-content/clusters/pcg/pcg.md +++ b/docs/docs-content/clusters/pcg/pcg.md @@ -40,3 +40,5 @@ existing Kubernetes cluster. Refer to the table below to learn more about the su - [Deploy a PCG to an Existing Kubernetes Cluster](./deploy-pcg-k8s.md) - [Manage a PCG](./manage-pcg/manage-pcg.md) + +- [Deploy App Workloads with a PCG](./deploy-app-pcg.md) diff --git a/docs/docs-content/clusters/public-cloud/aws/create-cluster.md b/docs/docs-content/clusters/public-cloud/aws/create-cluster.md index 140a7e4377..4f7455ecbf 100644 --- a/docs/docs-content/clusters/public-cloud/aws/create-cluster.md +++ b/docs/docs-content/clusters/public-cloud/aws/create-cluster.md @@ -59,25 +59,32 @@ The following prerequisites must be met before deploying a cluster to AWS: Use the following steps to provision a new AWS cluster: -1. Log in to [Palette](https://console.spectrocloud.com) and ensure you are in the correct project scope. +1. Log in to [Palette](https://console.spectrocloud.com). + +2. Ensure you are in the correct project scope. -2. Navigate to the left **Main Menu** and click on **Clusters** +3. From the left **Main Menu** select **Clusters**, and click **Add New Cluster**. -3. Click on **Add New Cluster** +4. In **Public Clouds**, under **Infrastructure Provider**, select **AWS IaaS**. -4. You will receive a prompt asking you if you want to deploy a new cluster or import an existing cluster. Click on - **Deploy New Cluster** +5. In the bottom-right corner, click **Start AWS IaaS Configuration**. -5. Select **AWS** and click on **Start AWS Configuration** +6. Fill out the following basic information and click **Next**. -6. Populate the wizard page with the following information: name, description, tags and select AWS account. Tags on a - cluster are propagated to the VMs deployed to the computing environments. Click on **Next** after you have filled out - all the required information. + | **Field** | **Description** | + | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Cluster Name** | A custom name for the cluster. | + | **Description** | Use the description to provide context about the cluster. | + | **Tags** | Assign any desired cluster tags. Tags on a cluster are propagated to the Virtual Machines (VMs) deployed to the target environments. Example: `region:us-east-1a` or `zone:vpc-private-us-east-1a`. | + | **Cloud Account** | If you already added your AWS account in Palette, select it from the **drop-down Menu**. Otherwise, click **Add New Account** and add your AWS account information. | -7. Select a cluster profile. Click on **Next**. + To learn how to add an AWS account, review the [Add an AWS Account to Palette](add-aws-accounts.md) guide. -8. Review and customize pack parameters, as desired. By default, parameters for all packs are set with values, defined - in the cluster profile. +7. Click **Add Cluster Profile**, select a cluster profile and click **Next**. Palette displays the cluster profile + layers. + +8. Review the profile layers and customize parameters as desired in the YAML files that display when you select a layer. + All pack parameters contain default values from the cluster profile. 9. Provide the AWS cloud account and placement information. @@ -102,8 +109,8 @@ Use the following steps to provision a new AWS cluster: configuration. This is the section where you can specify the availability zones (AZ), instance types, - [instance cost type](architecture.md#spot-instances), disk size, and the number of nodes. Click on **Next** after - you have completed configuring the node pool. The minimum number of CPUs and amount of memory depend on your cluster + [instance cost type](architecture.md#spot-instances), disk size, and the number of nodes. Click **Next** after you + have completed configuring the node pool. The minimum number of CPUs and amount of memory depend on your cluster profile, but in general you need at least 4 CPUs and 4 GB of memory both in the control plane pool and across all worker pools. @@ -140,13 +147,15 @@ Use the following steps to provision a new AWS cluster: [security groups](https://docs.aws.amazon.com/vpc/latest/userguide/security-groups.html) to apply to the worker group nodes. Use the **Additional Security Groups (Optional) drop-down Menu** to select additional security groups. -14. Click on **Next**. +14. Click **Next**. + +15. Configure the patching schedule, security scans, backup settings, and set up Role Based Access Control (RBAC). + Review the cluster settings and make changes if needed. -15. The settings page is where you can configure the patching schedule, security scans, backup settings, and set up Role - Based Access Control (RBAC). Review the cluster settings and make changes if needed. Click on **Validate**. +16. Click **Validate** to continue. -16. Review the settings summary and click on **Finish Configuration** to deploy the cluster. Provisioning IaaS clusters - can take 15 - 30 minutes depending on the cluster profile and the node pool configuration. +17. Review the summary and click **Finish Configuration** to deploy the cluster. Provisioning IaaS clusters can take + 15 - 30 minutes depending on the cluster profile and the node pool configuration. The cluster details page of the cluster contains the status and details of the deployment. Use this page to track the deployment progress. @@ -157,10 +166,10 @@ You can validate that your cluster is up and available by reviewing the cluster 1. Log in to [Palette](https://console.spectrocloud.com). -2. Navigate to the left **Main Menu** and click on **Clusters**. +2. Navigate to the left **Main Menu** and click **Clusters**. -3. The **Clusters** page contains a list of the available clusters Palette manages. Click on the row for the cluster you - wish to review its details page. +3. The **Clusters** page contains a list of the available clusters Palette manages. Click on the cluster you want to + review. 4. From the cluster details page, verify the **Cluster Status** field displays **Running**. diff --git a/docs/docs-content/clusters/public-cloud/aws/eks.md b/docs/docs-content/clusters/public-cloud/aws/eks.md index 12c401daf5..41af05a8d1 100644 --- a/docs/docs-content/clusters/public-cloud/aws/eks.md +++ b/docs/docs-content/clusters/public-cloud/aws/eks.md @@ -64,41 +64,39 @@ an AWS account. This section guides you on how to create an EKS cluster in AWS t ::: -Use the following steps to deploy an EKS cluster on AWS. +## Deploy an AWS EKS Cluster 1. Log in to [Palette](https://console.spectrocloud.com/). 2. Ensure you are in the correct project scope. -3. From the left **Main Menu** select **Clusters**, and click on the **Add New Cluster** button. +3. From the left **Main Menu** select **Clusters**, and click **Add New Cluster**. -4. Select **Deploy New Cluster** on the next page Palette displays. This will allow you to deploy a cluster using your - own cloud account. +4. In **Public Clouds**, under **Managed Kubernetes**, select **AWS EKS**. -5. Select **AWS** and click on the **Start AWS Configuration** button. +5. In the bottom-right corner, click **Start AWS EKS Configuration**. -6. Fill out the following basic information, and click **Next** to continue. +6. Fill out the following basic information and click **Next**. | **Field** | **Description** | | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Cluster Name** | A custom name for the cluster. | | **Description** | Use the description to provide context about the cluster. | | **Tags** | Assign any desired cluster tags. Tags on a cluster are propagated to the Virtual Machines (VMs) deployed to the target environments. Example: `region:us-east-1a` or `zone:vpc-private-us-east-1a`. | - | **Cloud Account** | If you already added your AWS account in Palette, select it from the **drop-down Menu**. Otherwise, click on **Add New Account** and add your AWS account information. | + | **Cloud Account** | If you already added your AWS account in Palette, select it from the **drop-down Menu**. Otherwise, click **Add New Account** and add your AWS account information. | To learn how to add an AWS account, review the [Add an AWS Account to Palette](add-aws-accounts.md) guide. -7. Select **EKS** listed under **Managed Kubernetes**. +7. Click **Add Cluster Profile**, select a cluster profile and click **Next**. Palette displays the cluster profile + layers. -8. Select the EKS cluster profile you created and click on **Next**. Palette displays the cluster profile layers. - -9. Review the profile layers and customize parameters as desired in the YAML files that display when you select a layer. +8. Review the profile layers and customize parameters as desired in the YAML files that display when you select a layer. You can configure custom OpenID Connect (OIDC) for EKS clusters at the Kubernetes layer. Check out [Access EKS Cluster](#access-eks-cluster) if you need more guidance. -10. Click on **Next** to continue. +9. Click **Next** to continue. -11. Provide the following cluster configuration information and click on **Next** to continue. +10. Provide the following cluster configuration information and click **Next** to continue. | **Parameter** | **Description** | | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -118,7 +116,7 @@ Use the following steps to deploy an EKS cluster on AWS. ::: -12. Provide the following node pool and cloud configuration information. If you will be using Fargate profiles, you can +11. Provide the following node pool and cloud configuration information. If you will be using Fargate profiles, you can add them here. #### Node Configuration Settings @@ -159,26 +157,26 @@ Use the following steps to deploy an EKS cluster on AWS. ::: -13. Click on **Next** to continue. +12. Click **Next** to continue. -14. Specify your preferred **OS Patching Schedule** for EKS-managed machines. +13. Specify your preferred **OS Patching Schedule** for EKS-managed machines. -15. Enable any scan options you want Palette to perform, and select a scan schedule. Palette provides support for +14. Enable any scan options you want Palette to perform, and select a scan schedule. Palette provides support for Kubernetes configuration security, penetration testing, and conformance testing. -16. Schedule any backups you want Palette to perform. Review +15. Schedule any backups you want Palette to perform. Review [Backup and Restore](../../cluster-management/backup-restore/backup-restore.md) for more information. -17. RBAC configuration is required when you configure custom OIDC. You must map a set of users or groups to a Kubernetes +16. RBAC configuration is required when you configure custom OIDC. You must map a set of users or groups to a Kubernetes RBAC role. To learn how to map a Kubernetes role to users and groups, refer to [Create Role Bindings](../../cluster-management/cluster-rbac.md#create-role-bindings). Refer to [Use RBAC with OIDC](../../../integrations/kubernetes.md#use-rbac-with-oidc) for an example. -18. Click on the **Validate** button and review the cluster configuration and settings summary. +17. Click **Validate** and review the cluster configuration and settings summary. -19. Click **Finish Configuration** to deploy the cluster. +18. Click **Finish Configuration** to deploy the cluster. -The cluster details page of the cluster contains the status and details of the deployment. Use this page to track the +The displayed cluster details page contains the status and details of the deployment. Use this page to track the deployment progress. :::info diff --git a/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md b/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md index d4b0f1ca9a..57e58d867e 100644 --- a/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md +++ b/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md @@ -59,25 +59,25 @@ Use the following steps to deploy an Azure cluster. 2. Ensure you are in the correct project scope. -3. From the left **Main Menu** select **Clusters**, and click on the **Add New Cluster** button. +3. From the left **Main Menu**, select **Clusters** and click **Add New Cluster**. -4. Select **Deploy New Cluster** on the next page that Palette displays. This will allow you to deploy a cluster using - your own cloud account. +4. In **Public Clouds**, under **Infrastructure Provider**, select **Azure IaaS**. -5. Select **Azure** and click on the **Start Azure Configuration** button. +5. In the bottom-right corner, click **Start Azure IaaS Configuration**. -6. Fill out the following basic information, and click **Next** to continue. +6. Fill out the following basic information and click **Next**. -| **Field** | **Description** | -| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Cluster Name** | A custom name for the cluster. | -| **Description** | Use the description to provide context about the cluster. | -| **Tags** | Assign any desired cluster tags. Tags on a cluster are propagated to the Virtual Machines (VMs) deployed to the target environments. Example: `region:us-west` | -| **Cloud Account** | If you already added your Azure account in Palette, select it from the **drop-down Menu**. Otherwise, click on **Add New Account** and add your Azure account information. | + | **Field** | **Description** | + | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Cluster Name** | A custom name for the cluster. | + | **Description** | Use the description to provide context about the cluster. | + | **Tags** | Assign any desired cluster tags. Tags on a cluster are propagated to the Virtual Machines (VMs) deployed to the target environments. Example: `region:us-west`. | + | **Cloud Account** | If you already added your Azure account in Palette, select it from the **drop-down Menu**. Otherwise, click **Add New Account** and add your Azure account information. | -7. Select the Azure cluster profile you created, and click on **Next**. Palette displays the cluster profile layers. +7. Select the Azure cluster profile you created and click **Next**. Palette displays the cluster profile layers. 8. Review the profile layers and customize parameters as desired in the YAML files that display when you select a layer. + You can configure custom OpenID Connect (OIDC) for Azure clusters at the Kubernetes layer. Check out [Configure OIDC Identity Provider](../../../integrations/kubernetes.md#configure-oidc-identity-provider) for more information. @@ -106,88 +106,89 @@ Use the following steps to deploy an Azure cluster. ::: -| **Parameter** | **Description** | -| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Subscription** | Use the **drop-down Menu** to select the subscription that will be used to access Azure services. | -| **Region** | Use the **drop-down Menu** to choose the Azure region where you would like to provision the cluster. | -| **Resource Group** | Select the name of the resource group that contains the Azure resources you will be accessing. | -| **Storage Account** | Optionally, if you have a custom storage account available, you can use the **drop-down Menu** to select the storage account name. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | -| **Storage Container** | Optionally, if you will be using a custom storage container, use the **drop-down Menu** to select it. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | -| **SSH Key** | The public SSH key for connecting to the nodes. SSH key pairs must be pre-configured in your Azure environment. The key you select is inserted into the provisioned VMs. For more information, review Microsoft's [Supported SSH key formats](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/mac-create-ssh-keys#supported-ssh-key-formats). | -| **Static Placement** | By default, Palette uses dynamic placement. This creates a new VNet for clusters with two subnets in different Availability Zones (AZs). Palette places resources in these clusters, manages the resources, and deletes them when the corresponding cluster is deleted.

If you want to place resources into a pre-existing VNet, enable the **Static Placement** option, and fill out the input values listed in the [Static Placement](#static-placement-settings) table below. | - -#### Static Placement Settings - -Each subnet allows you to specify the CIDR range and a security group. - -| **Parameter** | **Description** | -| -------------------------- | ----------------------------------------------------------- | -| **Network Resource Group** | The logical container for grouping related Azure resources. | -| **Virtual Network** | Select the VNet. | -| **CIDR Block** | Select the IP address CIDR range. | -| **Security Group Name** | Select the security group name. | -| **Control Plane Subnet** | Select the control plane subnet. | -| **Worker Subnet** | Select the worker network. | + | **Parameter** | **Description** | + | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Subscription** | Use the **drop-down Menu** to select the subscription that will be used to access Azure services. | + | **Region** | Use the **drop-down Menu** to choose the Azure region where you would like to provision the cluster. | + | **Resource Group** | Select the name of the resource group that contains the Azure resources you will be accessing. | + | **Storage Account** | Optionally, if you have a custom storage account available, you can use the **drop-down Menu** to select the storage account name. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | + | **Storage Container** | Optionally, if you will be using a custom storage container, use the **drop-down Menu** to select it. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | + | **SSH Key** | The public SSH key for connecting to the nodes. SSH key pairs must be pre-configured in your Azure environment. The key you select is inserted into the provisioned VMs. For more information, review Microsoft's [Supported SSH key formats](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/mac-create-ssh-keys#supported-ssh-key-formats). | + | **Static Placement** | By default, Palette uses dynamic placement. This creates a new VNet for clusters with two subnets in different Availability Zones (AZs). Palette places resources in these clusters, manages the resources, and deletes them when the corresponding cluster is deleted.

If you want to place resources into a pre-existing VNet, enable the **Static Placement** option, and fill out the input values listed in the [Static Placement](#static-placement-settings) table below. | + + #### Static Placement Settings + + Each subnet allows you to specify the CIDR range and a security group. + + | **Parameter** | **Description** | + | -------------------------- | ----------------------------------------------------------- | + | **Network Resource Group** | The logical container for grouping related Azure resources. | + | **Virtual Network** | Select the VNet. | + | **CIDR Block** | Select the IP address CIDR range. | + | **Security Group Name** | Select the security group name. | + | **Control Plane Subnet** | Select the control plane subnet. | + | **Worker Subnet** | Select the worker network. | 11. Click **Next** to continue. 12. Provide the following node pool and cloud configuration information. To learn more about node pools, review the [Node Pool](../../cluster-management/node-pool.md) guide. -:::info + :::info -By default, a control plane pool and one worker node pool are configured. You can add new worker pools to customize -certain worker nodes for specialized workloads. For example, the default worker pool can be configured with the -Standard_D2_v2 instance types for general-purpose workloads, and another worker pool with instance type -Standard_NC12s_v3 can be configured for Graphics Processing Unit (GPU) workloads. + By default, a control plane pool and one worker node pool are configured. You can add new worker pools to customize + certain worker nodes for specialized workloads. For example, the default worker pool can be configured with the + Standard_D2_v2 instance types for general-purpose workloads, and another worker pool with instance type + Standard_NC12s_v3 can be configured for Graphics Processing Unit (GPU) workloads. -::: + ::: -#### Control Plane Pool Configuration Settings + #### Control Plane Pool Configuration Settings -| **Parameter** | **Description** | -| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **Node pool name** | A descriptive name for the node pool. | -| **Number of nodes in the pool** | Specify the number of nodes in the control plane pool. | -| **Allow worker capability** | Select this option to allow workloads to be provisioned on control plane nodes. | -| **Additional Labels** | You can add optional labels to nodes in key-value format. To learn more, review [Apply Labels to Nodes](../../cluster-management/taints.md#labels). Example: `environment:production`. | -| **Taints** | You can apply optional taint labels to a node pool during cluster creation or edit taint labels on an existing cluster. Review the [Node Pool](../../cluster-management/node-pool.md) management page and [Apply Taints to Nodes](../../cluster-management/taints.md#apply-taints-to-nodes) page to learn more. Toggle the **Taint** button to create a taint label. When tainting is enabled, you need to provide a custom key-value pair. Use the **drop-down Menu** to choose one of the following **Effect** options:
**NoSchedule** - Pods are not scheduled onto nodes with this taint.
**PreferNoSchedule** - Kubernetes attempts to avoid scheduling pods onto nodes with this taint, but scheduling is not prohibited.
**NoExecute** - Existing pods on nodes with this taint are evicted. | + | **Parameter** | **Description** | + | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | **Node pool name** | A descriptive name for the node pool. | + | **Number of nodes in the pool** | Specify the number of nodes in the control plane pool. | + | **Allow worker capability** | Select this option to allow workloads to be provisioned on control plane nodes. | + | **Additional Labels** | You can add optional labels to nodes in key-value format. To learn more, review [Apply Labels to Nodes](../../cluster-management/taints.md#labels). Example: `environment:production`. | + | **Taints** | You can apply optional taint labels to a node pool during cluster creation or edit taint labels on an existing cluster. Review the [Node Pool](../../cluster-management/node-pool.md) management page and [Apply Taints to Nodes](../../cluster-management/taints.md#apply-taints-to-nodes) page to learn more. Toggle the **Taint** button to create a taint label. When tainting is enabled, you need to provide a custom key-value pair. Use the **drop-down Menu** to choose one of the following **Effect** options:
**NoSchedule** - Pods are not scheduled onto nodes with this taint.
**PreferNoSchedule** - Kubernetes attempts to avoid scheduling pods onto nodes with this taint, but scheduling is not prohibited.
**NoExecute** - Existing pods on nodes with this taint are evicted. | -#### Cloud Configuration Settings for Control Plane Pool + #### Cloud Configuration Settings for Control Plane Pool -| **Parameter** | **Description** | -| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Instance Type** | Select the instance type to use for all nodes in the node pool. | -| **Managed disk** | Choose a storage option. For more information, refer to Microsoft's [Storage Account Overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-overview) reference. For information about Solid State Drive (SSD) disks, refer to [Standard SSD Disks for Azure Virtual Machine Workloads](https://azure.microsoft.com/en-us/blog/preview-standard-ssd-disks-for-azure-virtual-machine-workloads/) reference | -| **Disk size** | You can choose disk size based on your requirements. The default size is 60. | + | **Parameter** | **Description** | + | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Instance Type** | Select the instance type to use for all nodes in the node pool. | + | **Managed disk** | Choose a storage option. For more information, refer to Microsoft's [Storage Account Overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-overview) reference. For information about Solid State Drive (SSD) disks, refer to [Standard SSD Disks for Azure Virtual Machine Workloads](https://azure.microsoft.com/en-us/blog/preview-standard-ssd-disks-for-azure-virtual-machine-workloads/) reference | + | **Disk size** | You can choose disk size based on your requirements. The default size is 60. | -You can select **Remove** at right to remove the worker node if all you want is the control plane node. + You can select **Remove** at right to remove the worker node if all you want is the control plane node. -#### Worker Pool Configuration Settings + #### Worker Pool Configuration Settings - |**Parameter**| **Description**| - |-------------|----------------| - |**Node pool name** | A descriptive name for the node pool.| - |**Number of nodes in the pool** | Specify the number of nodes in the worker pool.| - |**Node repave interval** | Optionally, you can specify the preferred time interval for Palette to perform a rolling upgrade on nodes when it detects a change in the Kubeadm configuration file. | - |**Rolling update** | These options allow you to control the sequence of operations during a node pool update. Choose the **Expand first** option to add new nodes with updated configurations to the node pool before the existing nodes are removed. Choose **Contract first** to remove existing nodes from the node pool before the new nodes with updated configurations are added. | - |**Additional Labels** | You can add optional labels to nodes in key-value format. For more information about applying labels, review [Apply Labels to Nodes](../../cluster-management/taints.md#apply-labels-to-nodes). Example: `environment:production`. | - |**Taints** | You can apply optional taint labels to a node pool during cluster creation or edit taint labels on an existing cluster. To learn more, review the [Node Pool](../../cluster-management/node-pool.md) management page and [Apply Taints to Nodes](../../cluster-management/taints.md#apply-taints-to-nodes) page. Toggle the **Taint** button to create a taint label. When tainting is enabled, you need to provide a custom key-value pair. Use the **drop-down Menu** to choose one of the following **Effect** options:
**NoSchedule** - Pods are not scheduled onto nodes with this taint.
**PreferNoSchedule** - Kubernetes attempts to avoid scheduling pods onto nodes with this taint, but scheduling is not prohibited.
**NoExecute** - Existing pods on nodes with this taint are evicted.| + | **Parameter** | **Description** | + | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Node pool name** | A descriptive name for the node pool. | + | **Number of nodes in the pool** | Specify the number of nodes in the worker pool. | + | **Node repave interval** | Optionally, you can specify the preferred time interval for Palette to perform a rolling upgrade on nodes when it detects a change in the Kubeadm configuration file. | + | **Rolling update** | These options allow you to control the sequence of operations during a node pool update. Choose the **Expand first** option to add new nodes with updated configurations to the node pool before the existing nodes are removed. Choose **Contract first** to remove existing nodes from the node pool before the new nodes with updated configurations are added. | + | **Additional Labels** | You can add optional labels to nodes in key-value format. For more information about applying labels, review [Apply Labels to Nodes](../../cluster-management/taints.md#apply-labels-to-nodes). Example: `environment:production`. | + | **Taints** | You can apply optional taint labels to a node pool during cluster creation or edit taint labels on an existing cluster. To learn more, review the [Node Pool](../../cluster-management/node-pool.md) management page and [Apply Taints to Nodes](../../cluster-management/taints.md#apply-taints-to-nodes) page. Toggle the **Taint** button to create a taint label. When tainting is enabled, you need to provide a custom key-value pair. Use the **drop-down Menu** to choose one of the following **Effect** options:
**NoSchedule** - Pods are not scheduled onto nodes with this taint.
**PreferNoSchedule** - Kubernetes attempts to avoid scheduling pods onto nodes with this taint, but scheduling is not prohibited.
**NoExecute** - Existing pods on nodes with this taint are evicted. | #### Cloud Configuration Settings for Worker Pool - You can copy cloud configuration settings from the control plane pool, but be aware that the instance type might not get copied if it does not have accessible availability zones. + You can copy cloud configuration settings from the control plane pool, but be aware that the instance type might not + get copied if it does not have accessible availability zones. - |**Parameter**| **Description**| - |-------------|----------------| - |**Instance Type** | Select the instance type to use for all nodes in the node pool.| - |**Managed disk** | Choose a storage option. For more information, refer to Microsoft's [Storage Account Overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-overview) reference. For information about Solid State Drive (SSD) disks, refer to [Standard SSD Disks for Azure Virtual Machine Workloads](https://azure.microsoft.com/en-us/blog/preview-standard-ssd-disks-for-azure-virtual-machine-workloads/) reference. | - |**Disk size** | You can choose disk size based on your requirements. The default size is 60. | - |**Availability zones** | The Availability Zones from which to select available servers for deployment. If you select multiple zones, Palette will deploy servers evenly across them as long as sufficient servers are available to do so. | + | **Parameter** | **Description** | + | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | **Instance Type** | Select the instance type to use for all nodes in the node pool. | + | **Managed disk** | Choose a storage option. For more information, refer to Microsoft's [Storage Account Overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-overview) reference. For information about Solid State Drive (SSD) disks, refer to [Standard SSD Disks for Azure Virtual Machine Workloads](https://azure.microsoft.com/en-us/blog/preview-standard-ssd-disks-for-azure-virtual-machine-workloads/) reference. | + | **Disk size** | You can choose disk size based on your requirements. The default size is 60. | + | **Availability zones** | The Availability Zones from which to select available servers for deployment. If you select multiple zones, Palette will deploy servers evenly across them as long as sufficient servers are available to do so. | 13. Click **Next** to continue. -14. Specify your preferred **OS Patching Schedule** for EKS-managed machines. +14. Specify your preferred **OS Patching Schedule**. 15. Enable any scan options you want Palette to perform, and select a scan schedule. Palette provides support for Kubernetes configuration security, penetration testing, and conformance testing. @@ -200,7 +201,7 @@ You can select **Remove** at right to remove the worker node if all you want is [Create Role Bindings](../../cluster-management/cluster-rbac.md#create-role-bindings). Refer to [Use RBAC with OIDC](../../../integrations/kubernetes.md#use-rbac-with-oidc) for an example. -18. Click on the **Validate** button and review the cluster configuration and settings summary. +18. Click **Validate** and review the cluster configuration and settings summary. 19. Click **Finish Configuration** to deploy the cluster. Provisioning Azure clusters can take several minutes. @@ -218,8 +219,8 @@ You can validate your cluster is up and in **Running** state. 2. Ensure you are in the correct project scope. -3. From the left **Main Menu** select **Clusters**. The **Clusters** page displays a list of all available clusters that - Palette manages. +3. From the left **Main Menu**, select **Clusters**. The **Clusters** page displays a list of all available clusters + that Palette manages. 4. Select the cluster you deployed to review its details page. Ensure the **Cluster Status** field contains the value **Running**. diff --git a/docs/docs-content/clusters/public-cloud/gcp/create-gcp-gke-cluster.md b/docs/docs-content/clusters/public-cloud/gcp/create-gcp-gke-cluster.md index aee189e8d1..f235bb5dec 100644 --- a/docs/docs-content/clusters/public-cloud/gcp/create-gcp-gke-cluster.md +++ b/docs/docs-content/clusters/public-cloud/gcp/create-gcp-gke-cluster.md @@ -14,8 +14,6 @@ to create a Kubernetes cluster that is deployed to GKE and that Palette manages. Ensure the following requirements are met before you attempt to deploy a cluster to GCP. -
- - Access to a GCP cloud account. - You have added a GCP account in Palette. Review @@ -37,49 +35,52 @@ Ensure the following requirements are met before you attempt to deploy a cluster ## Deploy a GKE Cluster -1. Log in to [Palette](https://console.spectrocloud.com) and ensure you are in the correct project scope. +1. Log in to [Palette](https://console.spectrocloud.com/). -2. Navigate to the left **Main Menu** and click on **Clusters**. +2. Ensure you are in the correct project scope. -3. Click on **Add New Cluster**. +3. From the left **Main Menu** select **Clusters**, and click **Add New Cluster**. -4. A prompt displays to either deploy or import a new cluster. Click on **Deploy New Cluster**. +4. In **Public Clouds**, under **Managed Kubernetes**, select **GCP GKE**. -5. Select **GCP** and click on **Start GCP Configuration**. +5. In the bottom-right corner, click **Start GCP GKE Configuration**. -6. Populate the wizard page with the cluster name, description, and tags. Tags assigned to a cluster are propagated to - the VMs deployed to the computing environments. +6. Fill out the following basic information and click **Next**. -7. Select a GCP account, and click on **Next**. + | **Field** | **Description** | + | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Cluster Name** | A custom name for the cluster. | + | **Description** | Use the description to provide context about the cluster. | + | **Tags** | Assign any desired cluster tags. Tags on a cluster are propagated to the Virtual Machines (VMs) deployed to the computing environments. Example: `region:us-central1` or `zone:us-central1-a`. | + | **Cloud Account** | If you already added your GCP account in Palette, select it from the **drop-down Menu**. Otherwise, click **Add New Account** and add your GCP account information. | -8. Select the **Managed Kubernetes** row and select one of your GKE cluster profiles. Click on **Next**. +7. Click **Add Cluster Profile**, select a cluster profile, and click **Next**. Palette displays the cluster profile + layers. -9. Review and customize pack parameters as desired. By default, parameters for all packs are set with values defined in - the cluster profile. Click on **Next** to continue. +8. Review the profile layers and customize parameters as desired in the YAML files that display when you select a layer. + By default, the pack parameters contain values from the cluster profile. -10. Fill out the following parameters, and click on **Next** when you are done. +9. Click **Next** to continue. -
+10. Fill out the following parameters, and click **Next** when you are done. -| Parameter | Description | -| ----------- | ------------------------------------------------------------- | -| **Project** | The project to which the cluster belongs. | -| **Region** | Choose the desired GCP region in which to deploy the cluster. | + | Parameter | Description | + | ----------- | ------------------------------------------------------------- | + | **Project** | The project to which the cluster belongs. | + | **Region** | Choose the desired GCP region in which to deploy the cluster. | 11. The Node configuration page is where you can specify the availability zones (AZ), instance types, disk size, and the number of nodes. Configure the worker node pool. The minimum number of CPUs and amount of memory depend on your cluster profile, but in general you need at least 4 CPUs and 4 GB of memory both in the control plane pool and across all worker pools. -
- -:::info + :::info -You can add new worker pools to customize specific worker nodes to run specialized workloads. For example, the default -worker pool may be configured with the c2.standard-4 instance types for general-purpose workloads. You can configure -another worker pool with instance type g2-standard-4 to run GPU workloads. + You can add new worker pools to customize specific worker nodes to run specialized workloads. For example, the + default worker pool may be configured with the c2.standard-4 instance types for general-purpose workloads. You can + configure another worker pool with instance type g2-standard-4 to run GPU workloads. -::: + ::: 12. An optional taint label can be applied to a node pool during the cluster creation. You can edit the taint label on existing clusters. Review the [Node Pool](../../cluster-management/node-pool.md) management page to learn more. @@ -88,11 +89,11 @@ another worker pool with instance type g2-standard-4 to run GPU workloads. 13. Enable or disable node pool taints. If tainting is enabled, then you need to provide values for the following parameters. - | **Parameter** | **Description** | - | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Key** | Custom key for the taint. | - | **Value** | Custom value for the taint key. | - | **Effect** | Choose the preferred pod scheduling effect from the **drop-down Menu**. Review the [Effect Table](create-gcp-iaas-cluster#effect-table) below for more details. | + | **Parameter** | **Description** | + | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | + | **Key** | Custom key for the taint. | + | **Value** | Custom value for the taint key. | + | **Effect** | Choose the preferred pod scheduling effect from the **drop-down Menu**. Review the [Effect Table](#effect-table) below for more details. | #### Effect Table @@ -102,13 +103,13 @@ another worker pool with instance type g2-standard-4 to run GPU workloads. | **PreferNoSchedule** | The system will avoid placing a non-tolerant pod to the tainted node but is not guaranteed. | | **NoExecute** | New pods will not be scheduled on the node, and existing pods on the node will be evicted if they do not tolerate the taint. | -14. Click on **Next** after configuring the node pool. +14. Click **Next** after configuring the node pool. 15. The **Settings** page is where you can configure the patching schedule, security scans, backup settings, and set up - Role Based Access Control (RBAC). Review cluster settings and make changes if needed. Click on **Validate**. + Role Based Access Control (RBAC). Review cluster settings and make changes if needed. Click **Validate**. -16. Review the settings summary and click on **Finish Configuration** to deploy the cluster. Be aware that provisioning - GKE clusters can take 15 - 30 minutes depending on the cluster profile and the node pool configuration. +16. Review the settings summary and click **Finish Configuration** to deploy the cluster. Be aware that provisioning GKE + clusters can take 15 - 30 minutes depending on the cluster profile and the node pool configuration. You can monitor cluster deployment progress on the cluster details page. @@ -118,7 +119,7 @@ You can validate that your cluster is up and available by reviewing the cluster 1. Log in to [Palette](https://console.spectrocloud.com). -2. Navigate to the left **Main Menu** and click on **Clusters**. +2. Navigate to the left **Main Menu** and click **Clusters**. 3. The **Clusters** page lists the available clusters that Palette manages. Select your cluster to view its details page. diff --git a/docs/docs-content/clusters/public-cloud/gcp/create-gcp-iaas-cluster.md b/docs/docs-content/clusters/public-cloud/gcp/create-gcp-iaas-cluster.md index d0fd65e331..c0f9c415d5 100644 --- a/docs/docs-content/clusters/public-cloud/gcp/create-gcp-iaas-cluster.md +++ b/docs/docs-content/clusters/public-cloud/gcp/create-gcp-iaas-cluster.md @@ -38,72 +38,73 @@ Ensure the following requirements are met before you attempt to deploy a cluster ## Deploy a GCP Cluster -1. Log in to [Palette](https://console.spectrocloud.com) and ensure you are in the correct project scope. - -2. Navigate to the left **Main Menu** and click on **Clusters**. +1. Log in to [Palette](https://console.spectrocloud.com). -3. Click on **Add New Cluster**. +2. Ensure you are in the correct project scope. -4. A prompt displays to either deploy or import a new cluster. Click on **Deploy New Cluster**. +3. From the left **Main Menu** select **Clusters**, and click **Add New Cluster**. -5. Select **GCP** and click on **Start GCP Configuration**. +4. In **Public Clouds**, under **Infrastructure Provider**, select **GCP IaaS**. -6. Populate the wizard page with the cluster name, description, and tags. Tags assigned to a cluster are propagated to - the VMs deployed to the computing environments. +5. In the bottom-right corner, click **Start GCP IaaS Configuration**. -7. Select a GCP account, and Click on **Next**. +6. Fill out the following basic information and click **Next**. -8. Select the **Infrastructure Provider** row and click on one of your GCP cluster profiles. Click on **Next**. + | **Field** | **Description** | + | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Cluster Name** | A custom name for the cluster. | + | **Description** | Use the description to provide context about the cluster. | + | **Tags** | Assign any desired cluster tags. Tags on a cluster are propagated to the Virtual Machines (VMs) deployed to the computing environments. Example: `region:us-central1` or `zone:us-central1-a`. | + | **Cloud Account** | If you already added your GCP account in Palette, select it from the **drop-down Menu**. Otherwise, click **Add New Account** and add your GCP account information. | -9. Review and customize pack parameters as desired. By default, parameters for all packs are set with values defined in - the cluster profile. Click on **Next** to continue. +7. Click **Add Cluster Profile**, select a cluster profile, and click **Next**. Palette displays the cluster profile + layers. -10. Fill out the following parameters and click on **Next** when you are done. +8. Review the profile layers and customize parameters as desired in the YAML files that display when you select a layer. + By default, the pack parameters contain values from the cluster profile. -
+9. Fill out the following parameters and click **Next** when you are done. -| Parameter | Description | -| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Project** | The project to which the cluster belongs. | -| **Region** | Choose the desired GCP region to deploy the cluster. | -| **SSH Key** | Choose the desired SSH key. Refer to the [SSH Keys](../../cluster-management/ssh-keys.md) guide to learn how to create an SSH key and upload the public key to Palette. | -| **Static Placement** | Check the **Static Placement** box to deploy resources into a pre-existing VPC. Review the [Static Placement](create-gcp-iaas-cluster.md#static-placement) table below to learn more about the required input fields. | + | **Parameter** | **Description** | + | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Project** | The project to which the cluster belongs. | + | **Region** | Choose the desired GCP region to deploy the cluster. | + | **SSH Key** | Choose the desired SSH key. Refer to the [SSH Keys](../../cluster-management/ssh-keys.md) guide to learn how to create an SSH key and upload the public key to Palette. | + | **Static Placement** | Check the **Static Placement** box to deploy resources into a pre-existing VPC. Review the [Static Placement](#static-placement) table below to learn more about the required input fields. | -#### Static Placement + #### Static Placement -| Parameter | Description | -| --------------------------------------------------------------------------------------- | ----------- | -| **Virtual Network**: Select the virtual network from the **drop-down Menu**. | -| **Control plane subnet**: Select the control plane network from the **drop-down Menu**. | -| **Worker Network**: Select the worker network from the **drop-down Menu**. | + | **Parameter** | **Description** | + | --------------------------------------------------------------------------------------- | --------------- | + | **Virtual Network**: Select the virtual network from the **drop-down Menu**. | + | **Control plane subnet**: Select the control plane network from the **drop-down Menu**. | + | **Worker Network**: Select the worker network from the **drop-down Menu**. | -11. The Node configuration page is where you can specify the availability zones (AZ), instance types, disk size, and the +10. The Node configuration page is where you can specify the Availability Zones (AZ), instance types, disk size, and the number of nodes. Configure the control plane and worker node pools. A control plane and a worker node pool are configured by default. The minimum number of CPUs and amount of memory depend on your cluster profile, but in general you need at least 4 CPUs and 4 GB of memory both in the control plane pool and across all worker pools. -
- -:::info + :::info -You can add new worker pools to customize specific worker nodes to run specialized workloads. For example, the default -worker pool may be configured with the c2.standard-4 instance types for general-purpose workloads. You can configure -another worker pool with instance type g2-standard-4 to leverage GPU workloads. + You can add new worker pools to customize specific worker nodes to run specialized workloads. For example, the + default worker pool may be configured with the c2.standard-4 instance types for general-purpose workloads. You can + configure another worker pool with instance type g2-standard-4 to leverage GPU workloads. -::: + ::: -12. An optional taint label can be applied to a node pool during the cluster creation. You can edit the taint label on +11. An optional taint label can be applied to a node pool during the cluster creation. You can edit the taint label on existing clusters. Review the [Node Pool](../../cluster-management/node-pool.md) management page to learn more. Toggle the **Taint** button to create a label. -13. Enable or disable node pool taints. If tainting is enabled, then you need to provide values for the following +12. Enable or disable node pool taints. If tainting is enabled, then you need to provide values for the following parameters. - | **Parameter** | **Description** | - | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Key** | Custom key for the taint. | - | **Value** | Custom value for the taint key. | - | **Effect** | Choose the preferred pod scheduling effect from the drop-down Menu. Review the [Effect Table](create-gcp-iaas-cluster#effect-table) below for more details. | + | **Parameter** | **Description** | + | ------------- | ------------------------------------------------------------------------------------------------------------------------------------ | + | **Key** | Custom key for the taint. | + | **Value** | Custom value for the taint key. | + | **Effect** | Choose the preferred pod scheduling effect from the drop-down Menu. Review the [Effect Table](#effect-table) below for more details. | #### Effect Table @@ -113,12 +114,12 @@ another worker pool with instance type g2-standard-4 to leverage GPU workloads. | **PreferNoSchedule** | The system will avoid placing a non-tolerant pod on the tainted node but is not guaranteed. | | **NoExecute** | New pods will not be scheduled on the node, and existing pods on the node will be evicted if they do not tolerate the taint. | -14. Click on **Next** after configuring the node pool. +13. Click **Next** after configuring the node pool. -15. The settings page is where you can configure the patching schedule, security scans, backup settings, and set up Role - Based Access Control (RBAC). Review the cluster settings and make changes if needed. Click on **Validate**. +14. The settings page is where you can configure the patching schedule, security scans, backup settings, and set up Role + Based Access Control (RBAC). Review the cluster settings and make changes if needed. Click **Validate**. -16. Review the settings summary and click on **Finish Configuration** to deploy the cluster. Be aware that provisioning +15. Review the settings summary and click **Finish Configuration** to deploy the cluster. Be aware that provisioning IaaS clusters can take approximately 15 - 30 min depending on the cluster profile and the node pool configuration. You can monitor cluster deployment progress on the cluster details page. @@ -129,7 +130,7 @@ You can validate that your cluster is up and available by reviewing the cluster 1. Log in to [Palette](https://console.spectrocloud.com). -2. Navigate to the left **Main Menu** and click on **Clusters**. +2. Navigate to the left **Main Menu** and click **Clusters**. 3. The **Clusters** page lists the available clusters that Palette manages. Select your cluster to review its details. diff --git a/docs/docs-content/clusters/public-cloud/gcp/required-permissions.md b/docs/docs-content/clusters/public-cloud/gcp/required-permissions.md index 4bdc24c3be..e18b68dc0e 100644 --- a/docs/docs-content/clusters/public-cloud/gcp/required-permissions.md +++ b/docs/docs-content/clusters/public-cloud/gcp/required-permissions.md @@ -13,7 +13,7 @@ Ensure the following Google Cloud Platform (GCP) API services are enabled in you - [Cloud Resource Manager API](https://cloud.google.com/resource-manager/reference/rest) - [Compute Engine API](https://cloud.google.com/compute/docs/reference/rest/v1) -- [Kubernetes Engine API](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1) +- [Kubernetes Engine API](https://cloud.google.com/kubernetes-engine/docs/reference/rest) :::tip diff --git a/docs/docs-content/clusters/public-cloud/tke.md b/docs/docs-content/clusters/public-cloud/tke.md index 8cc0dff271..dc3bdcd71f 100644 --- a/docs/docs-content/clusters/public-cloud/tke.md +++ b/docs/docs-content/clusters/public-cloud/tke.md @@ -10,14 +10,14 @@ sidebar_position: 40 Palette supports the deployment of tenant workloads with Tencent Kubernetes Engine (TKE). The following are the detailing of the Tencent TKE cluster provisioning through Palette: -1. Palette enables the effortless deployment and management of containerized applications with fully managed TKE. +- Palette enables the effortless deployment and management of containerized applications with fully managed TKE. -2. TKE is fully compatible with the native Kubernetes APIs and extends Kubernetes plugins such as CBS and CLB on the - Tencent Cloud. +- TKE is fully compatible with the native Kubernetes APIs and extends Kubernetes plugins such as CBS and CLB on the + Tencent Cloud. -3. The Palette-supported TKE architecture is represented diagrammatically as below: +- The Palette-supported TKE architecture is represented diagrammatically as below: - ![tencent-diagram.webp](/tencent-diagram.webp) + ![tencent-diagram.webp](/tencent-diagram.webp) ## Prerequisites @@ -137,9 +137,7 @@ detailing of the Tencent TKE cluster provisioning through Palette: ## Create a Tencent Cloud Account -Create a Tencent Cloud account in Palette from the Tenant Admin or Project Admin scope. To create the cloud account: - -1. Log in to the Palette and from the **Tenant Admin Settings**, select the **Cloud Accounts** tab. +1. Log in to Palette and from the **Tenant Admin Settings**, select the **Cloud Accounts** tab. 2. Click **+ Tencent Account** to open the cloud account creation wizard and fill in the following details: @@ -154,29 +152,35 @@ Create a Tencent Cloud account in Palette from the Tenant Admin or Project Admin 4. Click **Confirm** button to complete the cloud account create wizard. -**Note**: The cloud account can be created during the first step of cluster creation when you fill in the basic -information by clicking the **+** next to **Cloud Account**. - ## Deploy a Tencent Cluster -The following steps need to be performed to provision a new TKS cluster: +1. Log in to [Palette](https://console.spectrocloud.com/). + +2. Ensure you are in the correct project scope. + +3. From the left **Main Menu** select **Clusters**, and click **Add New Cluster**. -1. Provide the basic cluster information such as: +4. In **Public Clouds**, under **Managed Kubernetes**, select **TKE**. - - **Name**, **Description**, and **Tags**. Tags on a cluster are propagated to the VMs deployed on the cloud or data - center environments. - - Select the desired [Tencent cloud account](#create-a-tencent-cloud-account). The Tencent credentials must be - pre-configured in the Project/Tenant Admin settings. +5. In the bottom-right corner, click **Start TKE Configuration**. - **Note**: The cloud account can be created during the cluster creation by clicking **+** next to the **Cloud - Account**.
+6. Fill out the following basic information and click **Next**. -2. Select the cluster profile created for Tencent Cloud. The profile definition will be used as the cluster deployment - template. + | **Field** | **Description** | + | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Cluster Name** | A custom name for the cluster. | + | **Description** | Use the description to provide context about the cluster. | + | **Tags** | Assign any desired cluster tags. Tags on a cluster are propagated to the Virtual Machines (VMs) deployed to the computing environments. Example: `region:ap-guangzhou` or `zone:ap-guangzhou-2`. | + | **Cloud Account** | If you already [added your Tencent Cloud account](#create-a-tencent-cloud-account) in Palette, select it from the **drop-down Menu**. Otherwise, click **Add New Account** and add your Tencent Cloud account information. | -3. Review and override pack parameters as desired. By default, parameters for all packs are set with values defined in - the cluster profile. While configuring the Operating System layer of the TKE cluster profile, configure the value of - the OS pack file with any one of the following images: +7. Click **Add Cluster Profile**, select a cluster profile, and click **Next**. Palette displays the cluster profile + layers. + +8. Review the profile layers and customize parameters as desired in the YAML files that display when you select a layer. + By default, the pack parameters contain values from the cluster profile. + +9. While configuring the Operating System layer of the TKE cluster profile, configure the value of the OS pack file with + any one of the following images: ```yaml "OsName": "centos7.6.0_x64" @@ -212,53 +216,54 @@ The following steps need to be performed to provision a new TKS cluster: ::: -4. Provide the Tencent Cloud account and placement information: +10. Click **Next** to continue. - | **Parameter** | **Description** | - | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | - | **Cloud Account** | Select the desired cloud account. | - | **Tencent Cloud Accounts** | The Tencent credentials need to be pre-configured in the **Project**/**Tenant Admin** settings. | - | | **Note**: The cloud account can be created during this step of
cluster creation by clicking **+** next to the **Cloud Account**. | - | **Region** | Choose the desired Tencent region where you
would like the clusters to be provisioned. | - | **SSH Key Pair Name** | Choose the desired SSH keypair. You must preconfigure SSH key pairs on TKS for the desired regions. The selected key is inserted into the provisioned VMs. | - | **VPCID** | The ID of the Virtual Private Cloud (VPC) that the stack is to be launched into. The VPC must be in the specified region. All cluster instances will be launched into this VPC. | - | **Cluster Endpoint Access** | Select Public, or Private & Public, based on how you want to establish the communication with the endpoint for the managed Kubernetes API server and your cluster. | - | **Public Security Group** | A security group to controls the traffic that is allowed to reach and leave the resources that it is associated with. For example, after you associate a security group with the cluster, it controls the inbound and outbound traffic to the cluster. | +11. Provide the Tencent Cloud account and placement information: - :::info + | **Parameter** | **Description** | + | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | **Cloud Account** | Select the desired cloud account. | + | **Tencent Cloud Accounts** | The Tencent credentials need to be pre-configured in the **Project**/**Tenant Admin** settings. | + | | **Note**: The cloud account can be created during this step of
cluster creation by clicking **+** next to the **Cloud Account**. | + | **Region** | Choose the desired Tencent region where you
would like the clusters to be provisioned. | + | **SSH Key Pair Name** | Choose the desired SSH keypair. You must preconfigure SSH key pairs on TKS for the desired regions. The selected key is inserted into the provisioned VMs. | + | **VPCID** | The ID of the Virtual Private Cloud (VPC) that the stack is to be launched into. The VPC must be in the specified region. All cluster instances will be launched into this VPC. | + | **Cluster Endpoint Access** | Select Public, or Private & Public, based on how you want to establish the communication with the endpoint for the managed Kubernetes API server and your cluster. | + | **Public Security Group** | A security group to controls the traffic that is allowed to reach and leave the resources that it is associated with. For example, after you associate a security group with the cluster, it controls the inbound and outbound traffic to the cluster. | - Palette encourages its uses to go with the Public Cluster endpoint access as of now. Other options will be supported - in the near future. + :::info - ::: + We recommend going with the Public Cluster endpoint access as of now. + + ::: -5. Public Access CIDRs - To enable access restrictions. +12. Configure **Public Access CIDRs** to enable access restrictions. -6. Update Worker Pools in parallel - Patch updates to all Worker Pools simultaneously. +13. Enable the update of Worker Pools in parallel to patch updates to all Worker Pools simultaneously. -7. Configure one or more worker node pools. A single worker node will be configured by default. To learn more about the - configuration options, review the [Node Pool](../cluster-management/node-pool.md) documentation page. Click on - **Next** when you are done with node pool configurations. +14. Configure one or more worker node pools. A single worker node will be configured by default. To learn more about the + configuration options, review the [Node Pool](../cluster-management/node-pool.md) documentation page. Click **Next** + when you are done with node pool configurations. -8. Review settings and deploy the cluster. Provisioning status with details of ongoing provisioning tasks is available - to track progress. +15. Review settings and deploy the cluster. Provisioning status with details of ongoing provisioning tasks is available + to track progress. -# Delete a Tencent Cluster +## Delete a Tencent Cluster The deletion of a Tencent cluster results in the removal of all Virtual Machines and associated Storage Disks created for the cluster. The following tasks need to be performed to delete a Tencent cluster: 1. Ensure you are in the correct project scope. -2. Navigate to the left **Main Menu** and click on **Clusters** +2. Navigate to the left **Main Menu** and click **Clusters** 3. Click on the cluster that you want to remove. -4. Click on the **Settings** drop-down menu. +4. Click the **Settings** drop-down menu. -5. Click on **Delete Cluster** +5. Click **Delete Cluster** -6. Type in the name of the cluster and click on **OK** +6. Type in the name of the cluster and click **OK** The cluster status is updated to **Deleting** while cluster resources are being deleted. Once all resources are successfully deleted, the cluster status is updated to **Deleted** and is removed from the list of clusters. diff --git a/docs/docs-content/component.md b/docs/docs-content/component.md index 803890122f..ad1f316dfd 100644 --- a/docs/docs-content/component.md +++ b/docs/docs-content/component.md @@ -16,16 +16,18 @@ This page lists the version details of various Palette components and their resp | Palette Release | Recommended CLI Version | | --------------- | ----------------------- | -| Release 4.2.2 | 4.2.0 | -| Release 4.1.0 | 4.1.0 | -| Release 4.0.0 | 4.0.0 | -| Release 3.4.0 | 3.4.0 | -| Release 3.3.0 | 3.3.0 | +| Release 4.3.0 | v4.3.4 | +| Release 4.2.2 | v4.2.0 | +| Release 4.1.0 | v4.1.0 | +| Release 4.0.0 | v4.0.0 | +| Release 3.4.0 | v3.4.0 | +| Release 3.3.0 | v3.3.0 | ## Palette Edge CLI Versions | Palette Release | CLI Version | | --------------- | ----------- | +| Release 4.3.0 | v4.3.2 | | Release 4.2.3 | v4.2.0 | | Release 4.1.0 | v4.1.2 | | Release 4.0.0 | v4.0.0 | diff --git a/docs/docs-content/devx/services/service-listings/mysql.md b/docs/docs-content/devx/services/service-listings/mysql.md index 59705f2ab4..514e503f84 100644 --- a/docs/docs-content/devx/services/service-listings/mysql.md +++ b/docs/docs-content/devx/services/service-listings/mysql.md @@ -10,10 +10,9 @@ logoUrl: "https://registry.dev.spectrocloud.com/v1/mysql-operator/blobs/sha256:2 tags: ["devx", "app mode", "pde", "databases"] --- -[MySQL](https://www.mysql.com/) is an open-source relational database management system commonly used in web -applications and other software that requires a database. It is known for its reliability, ease of use, and flexibility. -MySQL is covered under the GNU license and uses structured query language (SQL) to manage data with the following -properties: +[MySQL](https://mysql.com/) is an open-source relational database management system commonly used in web applications +and other software that requires a database. It is known for its reliability, ease of use, and flexibility. MySQL is +covered under the GNU license and uses structured query language (SQL) to manage data with the following properties: - Creates a database for storing and manipulating data and defining the relationship of each table. @@ -120,17 +119,14 @@ kubectl get secret app-tarfful-mysql-2-user \ #### Output ```shell hideClipboard -,U31nQ@T2tN4uM +**************** ``` ## Next Steps You can add MySQL to your application profile and start integrating MySQL with your applications. To learn more about -integrating MySQL with your applications, check out the [MySQL](https://redis.io/docs/manual/) documentation from -Oracle. +integrating MySQL with your applications, check out the [MySQL](https://dev.mysql.com/doc/) documentation from Oracle. ## Resources - [MySQL Documentation](https://dev.mysql.com/doc/) - -- [MySQL Tutorial](https://dev.mysql.com/doc/refman/8.0/en/tutorial.html) diff --git a/docs/docs-content/devx/services/service-listings/vault.md b/docs/docs-content/devx/services/service-listings/vault.md index e7427c4c32..4226305d95 100644 --- a/docs/docs-content/devx/services/service-listings/vault.md +++ b/docs/docs-content/devx/services/service-listings/vault.md @@ -23,7 +23,7 @@ Vault also tracks who has accessed which secrets and when, making it easier to m govern access to secrets, automate application delivery, and consume secrets programmatically. Vault is deployed behind the scenes through the use of the -[Bank-Vaults Vault Operator Helm Chart](https://github.com/banzaicloud/bank-vaults/tree/main/charts/vault-operator). +[Bank-Vaults Vault Operator Helm Chart](https://github.com/bank-vaults/bank-vaults).
@@ -131,8 +131,8 @@ You can validate the Vault instance deployed successfully by using the following kubectl port-forward $(kubectl get pods --selector app.kubernetes.io/name=vault --all-namespaces --output jsonpath='{.items[0].metadata.name}') 8200:8200 --namespace $VAULT_NAMESPACE ``` -10. Open your browser and visit [https://localhost:8200/ui](https://localhost:8200/ui) to access the Vault UI. You will - receive a warning due to the usage of a self-signed certificate but you can ignore this warning. +10. Open your browser and visit `https://localhost:8200/ui` to access the Vault UI. You will receive a warning due to + the usage of a self-signed certificate but you can ignore this warning. To acquire the Vault root token, review the [Vault Credentials](#vault-credentials) section. @@ -201,4 +201,4 @@ integrating Vault with your applications, check out the - [HashiCorp Vault Tutorial](https://developer.hashicorp.com/vault/tutorials) -- [Bank-Vaults Vault Operator Helm Chart](https://github.com/banzaicloud/bank-vaults/tree/main/charts/vault-operator) +- [Bank-Vaults Vault Operator Helm Chart](https://github.com/bank-vaults/vault-helm-chart) diff --git a/docs/docs-content/enterprise-version/enterprise-version.md b/docs/docs-content/enterprise-version/enterprise-version.md index 9e0740c69f..37c9c6b0f9 100644 --- a/docs/docs-content/enterprise-version/enterprise-version.md +++ b/docs/docs-content/enterprise-version/enterprise-version.md @@ -43,6 +43,6 @@ required to get started with self-hosted Palette. - [System Management](system-management/system-management.md) -- [Upgrade Notes](upgrade.md) +- [Upgrade Notes](upgrade/upgrade.md) - [Enterprise Install Troubleshooting](../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/enterprise-version/install-palette/airgap/airgap.md b/docs/docs-content/enterprise-version/install-palette/airgap/airgap.md index 9700f67f32..3137b7d9ad 100644 --- a/docs/docs-content/enterprise-version/install-palette/airgap/airgap.md +++ b/docs/docs-content/enterprise-version/install-palette/airgap/airgap.md @@ -1,7 +1,7 @@ --- -sidebar_label: "Airgap" -title: "Airgap" -description: "Learn about Palette in an airgap environment and how to install Palette in an airgap environment." +sidebar_label: "Airgap Resources" +title: "Airgap Resources" +description: "Airgap installation resources for Palette." icon: "" sidebar_position: 10 hide_table_of_contents: false @@ -55,13 +55,11 @@ following diagram outlines the major pre-install steps for an airgap installatio To get started with an airgap Palette installation, check out the respective platform guide. -- [Kubernetes Airgap Instructions](kubernetes-airgap-instructions.md) +- [Kubernetes Airgap Instructions](../install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md) -- [VMware vSphere Airgap Instructions](vmware-vsphere-airgap-instructions.md) +- [VMware vSphere Airgap Instructions](../install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions.md) -Each platform guide provides detailed instructions on how to complete the pre-install steps. We also recommend you -review the [Checklist](checklist.md) to ensure you have completed all the required steps before deploying the airgap -Palette installation. +Each platform guide provides detailed instructions on how to complete the pre-install steps. ## Supported Platforms @@ -76,10 +74,4 @@ The following table outlines the platforms supported for airgap VerteX installat ## Resources -- [Kubernetes Airgap Instructions](kubernetes-airgap-instructions.md) - -- [VMware vSphere Airgap Instructions](vmware-vsphere-airgap-instructions.md) - -- [Checklist](checklist.md) - -- [Additional Packs](supplemental-packs.md) +- [Additional Packs](../airgap/supplemental-packs.md) diff --git a/docs/docs-content/enterprise-version/install-palette/airgap/kubernetes-airgap-instructions.md b/docs/docs-content/enterprise-version/install-palette/airgap/kubernetes-airgap-instructions.md deleted file mode 100644 index c17e757d12..0000000000 --- a/docs/docs-content/enterprise-version/install-palette/airgap/kubernetes-airgap-instructions.md +++ /dev/null @@ -1,363 +0,0 @@ ---- -sidebar_label: "Kubernetes Airgap Instructions" -title: "Kubernetes Airgap Instructions" -description: "Learn how to install Palette in an air gap environment." -icon: "" -hide_table_of_contents: false -sidebar_position: 20 -tags: ["self-hosted", "enterprise", "airgap", "kubernetes"] -keywords: ["self-hosted", "enterprise"] ---- - -![Overview diagram of the pre-install steps eager-load](/enterprise-version_air-gap-repo_overview-order-diagram-focus.webp) - -This guide provides instructions to prepare your airgap environment for a Palette installation by completing the -required preparatory steps 1 through 4 shown in the diagram. The respective installation guides for each platform cover -the remaining installation process. - -## Prepare Airgap Installation - -Use the following steps to prepare your airgap environment for a Palette installation. - -:::tip - -Carefully review the [prerequisites](#prerequisites) section before proceeding. This will save you time and frustration. -Each prerequisite listed is required for a successful installation. - -::: - -## Prerequisites - -- An x86 Linux jumpbox or bastion host with connectivity to the target platform where you are installing Palette. - -- 30 GB of disk space available for the airgap setup binary and temporary files. The uncompressed airgap content is - approximately 20 GB. - -- An OCI registry such as [Harbor](https://goharbor.io/) or [AWS ECR](https://aws.amazon.com/ecr/) to store Palette - images and packages. The OCI registry must be accessible from the Kubernetes cluster. We have verified the - installation against Harbor and AWS ECR. Other OCI registries may work but have not been tested. - - :::warning - - Ensure the OCI registries are set up with HTTPS. AWS ECR is enabled with HTTPS by default. Harbor requires you to - enable HTTPS. If you are using Harbor, you must enable HTTPS to authenticate with the registry. Refer to the - [Harbor](https://goharbor.io/docs/2.9.0/install-config/configure-https) documentation for guidance. - - ::: - -- An HTTP file server to host the Palette manifest. The file server must be accessible from the target environment where - Palette will be installed. Below is a list of common file servers: - - - [Apache HTTP Server](https://httpd.apache.org/) - - - [Nginx](https://www.nginx.com/) - - - [Caddy](https://caddyserver.com/) - - :::warning - - Take the necessary steps to secure your file server and ensure it can automatically recover from a failure. The file - server is a critical component of the airgap installation and must be available post-install for Palette to function - properly. - - ::: - -- To interact with the OCI registry, you must have the following tools installed and available. - - - [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) - Required for AWS ECR. - - [Oras](https://oras.land/docs/installation.html) CLI v1.0.0 - This version is explicitly required for the setup - script. - - [zip](https://linux.die.net/man/3/zip) - Required for the setup script. - - [unzip](https://linux.die.net/man/1/unzip) - or equivalent for extracting the manifest content from the airgap setup - binary. - - [jq](https://jqlang.github.io/jq/download/) - Command-line JSON processor installed and available. - - [Docker](https://docs.docker.com/get-docker/) - The airgap setup binary requires Docker to be installed and - available. - -## Instructions - -Complete the following steps before deploying the airgap Palette installation. - -1. Log in to the OCI registry where you will host the Palette images and packages. - -2. Create a repository with the name `spectro-packs` and ensure the repository is private. This repository will host the - Palette Packs. - - - Refer to the [Create Projects](https://goharbor.io/docs/2.0.0/working-with-projects/create-projects/) guide for - information about creating a repository in Harbor. - - Refer to the [Create a repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) - guide for information about creating a repository in AWS ECR. - -3. In your OCI registry, create another repository with the name `spectro-images` and ensure the repository is public. - The public repositry will host the images required by Palette. - -4. Log in to the Linux environment where you will download the airgap binaries and complete the remaining steps, - including the Palette installation. - -5. Authenticate with your OCI registry and acquire credentials to both repositories you created earlier. You will need - these credentials when deploying the airgap Palette installation. - - - - -Use `oras` to log in to your OCI registry. Replace the values below with your environment configuration values. Check -out the [oras login](https://oras.land/docs/commands/oras_login) documentation for information about additional CLI -flags and examples. - -```shell -oras login X.X.X.X --user 'yourUserNameHere' --password 'yourPasswordHere' -``` - -If you are using a Harbor registry with a self-signed certificate, you will need to add the `--insecure` flag to the -`oras` command. - -```shell -oras login X.X.X.X --insecure --user 'yourUserNameHere' --password 'yourPasswordHere' -``` - - - - -You can acquire the AWS ECR authentication command from the AWS ECR console. From the ECR repository details page, click -on the **View push commands** button to access the command. Refer to the -[AWS ECR Authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) -documentation for more information. - -Below is the command you will use to authenticate to AWS ECR. The output of the `aws` command is passed to `oras` to -authenticate with the ECR registry. Replace the values below with your environment configuration values. - -```shell -aws ecr get-login-password --region xxxxx | oras login --username AWS --password-stdin 1234567890.dkr.ecr.us-east-1.amazonaws.com -``` - -For the public image repository, use the `docker` CLI instead of using `oras`. Replace the values below with your -environment configuration values. - -```shell -aws ecr-public get-login-password --region xxxxx | docker login --username AWS --password-stdin public.ecr.aws/xxxxxxx -``` - - - - -:::tip - -Be aware of the timeout period for the authentication token. The process of uploading images and packages to the OCI -registry can take a approximately an hour. If the authentication token expires, you will need to re-authenticate to the -OCI registry and restart the upload process. - -::: - ---- - -6. The airgap setup binary requires a set of environment variables to be available and populated. Depending on what OCI - registry you are using, the environment variables will be different. Select the OCI registry you are using and - populate the environment variables accordingly. - - - - -
- - - `OCI_IMAGE_REGISTRY`: The IP address or domain name of the OCI registry. - - `OCI_PACK_BASE`: The namespace or repository name that hosts the Palette packs. - - `OCI_PACK_REGISTRY`: The IP address or domain name of the OCI registry. - - `OCI_IMAGE_BASE`: The namespace or repository name that hosts the Palette images. - - ```shell - export OCI_IMAGE_REGISTRY= - export OCI_PACK_BASE=spectro-packs - export OCI_PACK_REGISTRY= - export OCI_IMAGE_BASE=spectro-images - ``` - - Example - - ```shell hideClipboard - export OCI_IMAGE_REGISTRY=example.internal.com - export OCI_PACK_BASE=spectro-packs - export OCI_PACK_REGISTRY=10.10.100.48 - export OCI_IMAGE_BASE=spectro-images - ``` - -
- - -
- - - `ECR_IMAGE_REGISTRY`: The IP address or domain name of the public OCI registry for images. - - `ECR_IMAGE_BASE`: The namespace or repository name that hosts the Palette images. - - `ECR_IMAGE_REGISTRY_REGION`: The AWS region where the ECR registry is located. - - `ECR_PACK_BASE`: The namespace or repository name that hosts the Palette packs. - - `ECR_PACK_REGISTRY`: The IP address or domain name of the OCI registry. - - `ECR_PACK_REGISTRY_REGION`: The AWS region where the ECR registry is located. - - ```shell - export ECR_IMAGE_REGISTRY= - export ECR_IMAGE_BASE=spectro-images - export ECR_IMAGE_REGISTRY_REGION=us-east-1 - export ECR_PACK_REGISTRY= - export ECR_PACK_BASE=spectro-packs - export ECR_PACK_REGISTRY_REGION=us-east-1 - ``` - - Example - - ```shell hideClipboard - export ECR_IMAGE_REGISTRY=public.ecr.aws/1234567890 - export ECR_IMAGE_BASE=spectro-images - export ECR_IMAGE_REGISTRY_REGION=us-east-1 - export ECR_PACK_REGISTRY=123456789.dkr.ecr.us-east-1.amazonaws.com - export ECR_PACK_BASE=spectro-packs - export ECR_PACK_REGISTRY_REGION=us-east-1 - ``` - -
-
- ---- - -7. Download the airgap setup binary. Our support team will provide you with the proper version and the necessary - credentials. Replace the commands below with the recommended version and credentials provided by our support team. - -```shell -VERSION=X.X.X -``` - -```shell -curl --user XXXXX:YYYYYYY https://software-private.spectrocloud.com/airgap/$VERSION/airgap-v$VERSION.bin \ ---output airgap-v$VERSION.bin -``` - -8. Update the airgap setup binary permissions to allow execution. Replace the file name below with the name of the - airgap setup binary you downloaded. - -```shell -chmod +x airgap-v$VERSION.bin -``` - -9. Start the airgap setup binary. Replace the file name below with the name of the airgap setup binary you downloaded. - -```shell -./airgap-v$VERSION.bin -``` - -Upon completion, a success message will be displayed. The output in the example below is condensed for brevity. - - ```shell hideClipboard {10} - Verifying archive integrity... 100% MD5 checksums are OK. All good. - Uncompressing Airgap Setup - Version 4.0.17 100% - Setting up Packs - - Pushing Pack cni-calico:3.25.1 - ... - Setting up Images - - Pushing image docker.io/kindest/kindnetd:v20230227-15197099 - - Pushing image gcr.io/cloud-provider-vsphere/cpi/release/manager:v1.22.8 - ..... - Preparing Manifests Archive - Manifests are available in /tmp/spectro-manifests-1696971110.zip. Extract the archive to a file server to serve as a Spectro Cloud Repository - Setup Completed - ``` - -:::info - -If you encounter an error during the airgap setup process, verify the required environment variables are set and -populated correctly. If you are still having issues, reach out to our support team for assistance. - -::: - -10. Move the manifest file located in your temporary directory to the location of your file server. Unzip the manifest - file to a folder accessible by the file server. Replace the file name below with the name of the manifest file - provided to you by the airgap setup. - - ```shell - unzip spectro-manifests-XXXXXXXXXXXX.zip -d /target/folder - ``` - - :::tip - - If you want to get started quickly with a file server, install - [Caddy](https://caddyserver.com/docs/quick-starts/static-files) or use Python3's - [http sever](https://docs.python.org/3/library/http.server.html) and issue one of the following commands in the - folder where you unzipped the manifest content. Each command will start a file server on port 2015. - - ```shell - caddy file-server --listen :2015 --browse - ``` - - ```shell - python3 -m http.server 2015 - ``` - - We do not recommend serving the manifest content over HTTP, but it is an option if you want to get started quickly. - For production workloads, enable HTTPS on your file server. - - ::: - -11. Review the additional packs available for download. The supplemental packs are optional and not required for a - successful installation. However, to create cluster profiles you may require several of the packs available for - download. Refer to the [Additional Packs](supplemental-packs.md) resource for a list of available packs. - -12. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the - upload process. - -In the example below, the `airgap-pack-aws-alb-2.5.1.bin` binary is downloaded and started. - -```shell -chmod +x airgap-pack-aws-alb-2.5.1.bin && \ -./airgap-pack-aws-alb-2.5.1.bin -``` - -```shell hideClipboard - Verifying archive integrity... 100% MD5 checksums are OK. All good. - Uncompressing Airgap Pack - aws-alb Version 4.0.17 100% - Setting up Packs - - Pushing Pack aws-alb:2.5.1 - Setting up Images - Setup Completed -``` - -13. Repeat step 12 for each pack you want to install. - -You have now completed the preparation steps for an airgap installation. Check out the [Validate](#validate) section to -ensure the airgap setup process completed successfully. - -## Validate - -Use the following steps to validate the airgap setup process completed successfully. - -1. Log in to your OCI registry and verify the Palette images and packs are available. - -2. Verify the manifest file is accessible from the file server. The manifest file is required for the Palette - installation process. The screenshot below is an example of a file server hosting the unzipped manifest content. The - example shows Caddy as the file server. - -![Example of a file server hosting the unzipped manifest content](/enterprise-version_airgap_airgap-instructions_file-server-caddy.webp) - -3. Ensure your file server is accessible from the environment in which you are installing Palette. Use the following - command to verify the file server can access the manifest content. Replace the hostname or IP address below with your - file server hostname or IP address. - -```shell -curl http://:/roar/nickfury/versions.yaml -``` - -```yaml hideClipboard -versions: - - version: "3.3" - filepath: "/roar/nickfury/3.3/version.yaml" - patchVersionsFilepath: "/roar/nickfury/3.3/versions.yaml" - - version: "3.4" - filepath: "/roar/nickfury/3.4/version.yaml" - patchVersionsFilepath: "/roar/nickfury/3.4/versions.yaml" - - version: "4.0" - filepath: "/roar/nickfury/4.0/version.yaml" - patchVersionsFilepath: "/roar/nickfury/4.0/versions.yaml" -``` - -## Next Steps - -You are now ready to deploy the airgap Palette installation. You will specify your OCI registry and file server during -the installation process. Refer to the -[Kubernetes Install Instructions](../install-on-kubernetes/install-on-kubernetes.md) guide for detailed guidance on -installing Palette. diff --git a/docs/docs-content/enterprise-version/install-palette/airgap/supplemental-packs.md b/docs/docs-content/enterprise-version/install-palette/airgap/supplemental-packs.md index 22ce5f9ed7..c5c75d6130 100644 --- a/docs/docs-content/enterprise-version/install-palette/airgap/supplemental-packs.md +++ b/docs/docs-content/enterprise-version/install-palette/airgap/supplemental-packs.md @@ -11,61 +11,96 @@ keywords: ["self-hosted", "enterprise"] Review the following table to determine which pack binaries you need to download and upload to your OCI registry. -| **File Name** | **Download URL** | -| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -| `airgap-pack-argo-cd-5.46.8.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-argo-cd-5.46.8.bin | -| `airgap-pack-aws-alb-2.5.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-aws-alb-2.5.1.bin | -| `airgap-pack-aws-cluster-autoscaler-1.26.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-aws-cluster-autoscaler-1.26.3.bin | -| `airgap-pack-cni-calico-3.25.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-calico-3.25.1.bin | -| `airgap-pack-cni-calico-3.26.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-calico-3.26.0.bin | -| `airgap-pack-cni-cilium-oss-1.13.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-cilium-oss-1.13.3.bin | -| `airgap-pack-cni-cilium-oss-1.14.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-cilium-oss-1.14.1.bin | -| `airgap-pack-csi-aws-ebs-1.20.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-aws-ebs-1.20.0.bin | -| `airgap-pack-csi-longhorn-1.4.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-longhorn-1.4.1.bin | -| `airgap-pack-csi-longhorn-addon-1.4.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-longhorn-addon-1.4.1.bin | -| `airgap-pack-csi-rook-ceph-1.10.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-1.10.10.bin | -| `airgap-pack-csi-rook-ceph-addon-1.10.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-addon-1.10.10.bin | -| `airgap-pack-csi-rook-ceph-helm-1.11.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-helm-1.11.9.bin | -| `airgap-pack-csi-rook-ceph-helm-addon-1.11.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-helm-addon-1.11.9.bin | -| `airgap-pack-csi-vsphere-csi-3.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-vsphere-csi-3.0.0.bin | -| `airgap-pack-csi-vsphere-csi-3.0.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-vsphere-csi-3.0.2.bin | -| `airgap-pack-edge-k3s-1.24.6.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.24.6.bin | -| `airgap-pack-edge-k3s-1.25.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.25.0.bin | -| `airgap-pack-edge-k3s-1.25.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.25.2.bin | -| `airgap-pack-edge-k3s-1.26.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.26.4.bin | -| `airgap-pack-edge-k3s-1.27.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.27.2.bin | -| `airgap-pack-edge-k8s-1.24.6.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.24.6.bin | -| `airgap-pack-edge-k8s-1.25.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.25.2.bin | -| `airgap-pack-edge-k8s-1.26.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.26.4.bin | -| `airgap-pack-edge-k8s-1.27.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.27.2.bin | -| `airgap-pack-edge-native-byoi-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-native-byoi-1.0.0.bin | -| `airgap-pack-edge-rke2-1.25.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.25.0.bin | -| `airgap-pack-edge-rke2-1.25.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.25.2.bin | -| `airgap-pack-edge-rke2-1.26.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.26.4.bin | -| `airgap-pack-edge-rke2-1.27.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.27.2.bin | -| `airgap-pack-generic-byoi-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-generic-byoi-1.0.0.bin | -| `airgap-pack-image-swap-1.5.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-image-swap-1.5.1.bin | -| `airgap-pack-image-swap-1.5.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-image-swap-1.5.2.bin | -| `airgap-pack-k8s-dashboard-2.7.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-k8s-dashboard-2.7.0.bin | -| `airgap-pack-kubernetes-1.25.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.25.10.bin | -| `airgap-pack-kubernetes-1.25.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.25.9.bin | -| `airgap-pack-kubernetes-1.26.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.26.4.bin | -| `airgap-pack-kubernetes-1.26.5.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.26.5.bin | -| `airgap-pack-kubernetes-1.27.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.27.1.bin | -| `airgap-pack-lb-metallb-helm-0.13.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-lb-metallb-helm-0.13.10.bin | -| `airgap-pack-nginx-1.8.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-nginx-1.8.1.bin | -| `airgap-pack-nginx-1.9.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-nginx-1.9.4.bin | -| `airgap-pack-nvidia-gpu-operator-22.9.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-nvidia-gpu-operator-22.9.0.bin | -| `airgap-pack-prometheus-operator-46.4.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-prometheus-operator-46.4.0.bin | -| `airgap-pack-spectro-grafana-dashboards-4.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-grafana-dashboards-4.0.0.bin | -| `airgap-pack-spectro-k8s-dashboard-2.7.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-k8s-dashboard-2.7.1.bin | -| `airgap-pack-spectro-namespace-labeler-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-namespace-labeler-1.0.0.bin | -| `airgap-pack-spectro-proxy-1.4.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-proxy-1.4.1.bin | -| `airgap-pack-ubuntu-aws-20.04.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-ubuntu-aws-20.04.bin | -| `airgap-pack-ubuntu-aws-22.04.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-ubuntu-aws-22.04.bin | -| `airgap-pack-ubuntu-vsphere-20.04.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-ubuntu-vsphere-20.04.bin | -| `airgap-pack-ubuntu-vsphere-22.04.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-ubuntu-vsphere-22.04.bin | -| `airgap-pack-vault-0.24.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-vault-0.24.1.bin | +| **File Name** | **Download URL** | +| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | +| `airgap-pack-argo-cd-5.46.8.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-argo-cd-5.46.8.bin | +| `airgap-pack-cni-calico-3.25.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-calico-3.25.1.bin | +| `airgap-pack-cni-calico-3.26.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-calico-3.26.0.bin | +| `airgap-pack-cni-calico-3.27.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-calico-3.27.0.bin | +| `airgap-pack-cni-calico-azure-3.27.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-calico-azure-3.27.0.bin | +| `airgap-pack-cni-cilium-oss-1.13.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-cilium-oss-1.13.3.bin | +| `airgap-pack-cni-cilium-oss-1.14.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-cilium-oss-1.14.1.bin | +| `airgap-pack-cni-cilium-oss-1.14.7.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-cilium-oss-1.14.7.bin | +| `airgap-pack-cni-cilium-oss-1.15.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-cilium-oss-1.15.1.bin | +| `airgap-pack-csi-aws-ebs-1.20.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-aws-ebs-1.20.0.bin | +| `airgap-pack-csi-aws-ebs-1.26.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-aws-ebs-1.26.1.bin | +| `airgap-pack-csi-local-path-provisioner-0.0.25.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-local-path-provisioner-0.0.25.bin | +| `airgap-pack-csi-longhorn-1.4.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-longhorn-1.4.1.bin | +| `airgap-pack-csi-longhorn-1.5.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-longhorn-1.5.1.bin | +| `airgap-pack-csi-longhorn-1.6.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-longhorn-1.6.0.bin | +| `airgap-pack-csi-longhorn-addon-1.4.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-longhorn-addon-1.4.1.bin | +| `airgap-pack-csi-longhorn-addon-1.5.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-longhorn-addon-1.5.1.bin | +| `airgap-pack-csi-longhorn-addon-1.6.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-longhorn-addon-1.6.0.bin | +| `airgap-pack-csi-rook-ceph-1.10.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-1.10.10.bin | +| `airgap-pack-csi-rook-ceph-1.13.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-1.13.1.bin | +| `airgap-pack-csi-rook-ceph-addon-1.10.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-addon-1.10.10.bin | +| `airgap-pack-csi-rook-ceph-addon-1.13.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-addon-1.13.1.bin | +| `airgap-pack-csi-rook-ceph-helm-1.11.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-helm-1.11.9.bin | +| `airgap-pack-csi-rook-ceph-helm-addon-1.11.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-helm-addon-1.11.9.bin | +| `airgap-pack-csi-vsphere-csi-3.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-vsphere-csi-3.0.0.bin | +| `airgap-pack-csi-vsphere-csi-3.0.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-vsphere-csi-3.0.2.bin | +| `airgap-pack-csi-vsphere-csi-3.1.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-vsphere-csi-3.1.0.bin | +| `airgap-pack-csi-vsphere-csi-3.1.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-vsphere-csi-3.1.2.bin | +| `airgap-pack-custom_os-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-custom_os-1.0.0.bin | +| `airgap-pack-edge-k3s-1.26.12.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.26.12.bin | +| `airgap-pack-edge-k3s-1.26.14.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.26.14.bin | +| `airgap-pack-edge-k3s-1.26.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.26.4.bin | +| `airgap-pack-edge-k3s-1.27.11.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.27.11.bin | +| `airgap-pack-edge-k3s-1.27.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.27.2.bin | +| `airgap-pack-edge-k3s-1.28.7.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.28.7.bin | +| `airgap-pack-edge-k3s-1.29.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.29.0.bin | +| `airgap-pack-edge-k3s-1.29.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.29.2.bin | +| `airgap-pack-edge-k8s-1.26.12.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.26.12.bin | +| `airgap-pack-edge-k8s-1.26.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.26.4.bin | +| `airgap-pack-edge-k8s-1.27.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.27.2.bin | +| `airgap-pack-edge-k8s-1.27.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.27.9.bin | +| `airgap-pack-edge-k8s-1.28.5.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.28.5.bin | +| `airgap-pack-edge-k8s-1.29.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.29.0.bin | +| `airgap-pack-edge-native-byoi-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-native-byoi-1.0.0.bin | +| `airgap-pack-edge-rke2-1.25.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.25.2.bin | +| `airgap-pack-edge-rke2-1.26.12.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.26.12.bin | +| `airgap-pack-edge-rke2-1.26.14.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.26.14.bin | +| `airgap-pack-edge-rke2-1.26.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.26.4.bin | +| `airgap-pack-edge-rke2-1.27.11.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.27.11.bin | +| `airgap-pack-edge-rke2-1.27.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.27.2.bin | +| `airgap-pack-edge-rke2-1.27.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.27.9.bin | +| `airgap-pack-edge-rke2-1.28.5.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.28.5.bin | +| `airgap-pack-edge-rke2-1.28.7.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.28.7.bin | +| `airgap-pack-edge-rke2-1.29.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.29.0.bin | +| `airgap-pack-edge-rke2-1.29.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.29.3.bin | +| `airgap-pack-generic-byoi-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-generic-byoi-1.0.0.bin | +| `airgap-pack-kubernetes-1.26.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.26.10.bin | +| `airgap-pack-kubernetes-1.26.12.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.26.12.bin | +| `airgap-pack-kubernetes-1.26.15.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.26.15.bin | +| `airgap-pack-kubernetes-1.26.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.26.4.bin | +| `airgap-pack-kubernetes-1.27.11.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.27.11.bin | +| `airgap-pack-kubernetes-1.27.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.27.1.bin | +| `airgap-pack-kubernetes-1.27.7.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.27.7.bin | +| `airgap-pack-kubernetes-1.27.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.27.9.bin | +| `airgap-pack-kubernetes-1.28.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.28.2.bin | +| `airgap-pack-kubernetes-1.28.5.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.28.5.bin | +| `airgap-pack-kubernetes-1.29.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.29.0.bin | +| `airgap-pack-kubernetes-custom-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-custom-1.0.0.bin | +| `airgap-pack-kubernetes-rke2-1.26.11-rke2r1-build20231115.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.26.11-rke2r1-build20231115.bin | +| `airgap-pack-kubernetes-rke2-1.26.12-rke2r1-build20231220.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.26.12-rke2r1-build20231220.bin | +| `airgap-pack-kubernetes-rke2-1.27.8-rke2r1-build20231115.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.27.8-rke2r1-build20231115.bin | +| `airgap-pack-kubernetes-rke2-1.27.9-rke2r1-build20231220.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.27.9-rke2r1-build20231220.bin | +| `airgap-pack-kubernetes-rke2-1.28.4-rke2r1-build20231115.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.28.4-rke2r1-build20231115.bin | +| `airgap-pack-kubernetes-rke2-1.28.5-rke2r1-build20231220.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.28.5-rke2r1-build20231220.bin | +| `airgap-pack-lb-metallb-helm-0.13.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-lb-metallb-helm-0.13.10.bin | +| `airgap-pack-lb-metallb-helm-0.13.12.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-lb-metallb-helm-0.13.12.bin | +| `airgap-pack-nutanix-csi-2.6.6.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-nutanix-csi-2.6.6.bin | +| `airgap-pack-prometheus-operator-46.4.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-prometheus-operator-46.4.0.bin | +| `airgap-pack-prometheus-operator-55.8.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-prometheus-operator-55.8.3.bin | +| `airgap-pack-spectro-grafana-dashboards-4.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-grafana-dashboards-4.0.0.bin | +| `airgap-pack-spectro-k8s-dashboard-2.7.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-k8s-dashboard-2.7.1.bin | +| `airgap-pack-spectro-proxy-1.4.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-proxy-1.4.1.bin | +| `airgap-pack-spectro-proxy-1.4.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-proxy-1.4.2.bin | +| `airgap-pack-spectro-proxy-1.5.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-proxy-1.5.1.bin | +| `airgap-pack-spectro-proxy-1.5.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-proxy-1.5.2.bin | +| `airgap-pack-thirdparty-4.3.5.bin` | https://software-private.spectrocloud.com/airgap/thirdparty/airgap-thirdparty-4.3.5.bin | +| `airgap-pack-ubuntu-vsphere-22.04.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-ubuntu-vsphere-22.04.bin | +| `airgap-pack-vault-0.27.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-vault-0.27.0.bin | ## Download Instructions @@ -74,16 +109,62 @@ our support team to [obtain the credentials](../../enterprise-version.md#access- how to download the `airgap-pack-aws-alb-2.5.1.bin` binary. ```bash -curl --user XXXXX:YYYYY https://software-private.spectrocloud.com/airgap/packs/airgap-pack-aws-alb-2.5.1.bin \ - --output airgap-pack-aws-alb-2.5.1.bin +curl --user XXXXX:YYYYY https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-aws-ebs-1.26.1.bin \ + --output airgap-pack-csi-aws-ebs-1.26.1.bin ``` + + + +```bash +curl --user 'XXXX:YYYY' \ +https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-aws-ebs-1.26.1.bin \ +--output airgap-pack-csi-aws-ebs-1.26.1.bin +``` + +Once the download is complete, issue the following command to start the binary and the upload process. Replace the +binary name with the one you downloaded. + +```bash +chmod +x airgap-pack-csi-aws-ebs-1.26.1.bin && \ +./airgap-pack-csi-aws-ebs-1.26.1.bin +``` + + + + + +```shell +wget --user='XXXX' --password='YYYY' \ +--output-document=airgap-pack-csi-aws-ebs-1.26.1.bin \ +https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-aws-ebs-1.26.1.bin +``` + +Once the download is complete, issue the following command to start the binary and the upload process. Replace the +binary name with the one you downloaded. + +```bash +chmod +x airgap-pack-csi-aws-ebs-1.26.1.bin && \ +./airgap-pack-csi-aws-ebs-1.26.1.bin +``` + + + + :::info All binaries require the OCI environment variables to be set and for the registry credentials to be available. ::: +## Conformance Capabilities + +In an airgap installation, you need to upload the conformance packs to the self-hosted OCI registry. The conformance +binary contains the packs required to use the [Compliance Scan](../../../clusters/cluster-management/compliance-scan.md) +capabilities. The conformance binary can be found in the pack table above. The binary has the prefix +`airgap-thirdparty-`. Follow the [Usage Instructions](#usage-instructions) to upload the conformance packs to the OCI +registry. + ## Additional OVAs The following table lists additional OVAs you may need depending on the Kubernetes version and distribution you want to @@ -94,12 +175,17 @@ use for the workload clusters. | Kubernetes 1.26.4 | u-2204-0-k-1264-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-1264-0.ova` | | Kubernetes 1.26.5 | u-2204-0-k-1265-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-1265-0.ova` | | Kubernetes 1.26.10 | u-2204-0-k-12610-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12610-0.ova` | +| Kubernetes 1.26.12 | u-2204-0-k-12612-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12612-0.ova` | | Kubernetes 1.27.1 | u-2204-0-k-1271-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-1271-0.ova` | | Kubernetes 1.27.2 | u-2204-0-k-1272-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-1272-0.ova` | | Kubernetes 1.28.2 | u-2204-0-k-1282-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-1282-0.ova` | +| Kubernetes 1.29.0 | u-2204-0-k-1290-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-1290-0.ova` | | RKE2 1.26.11 | u-2204-0-k-rke2-12611-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-rke2-12611-0.ova` | +| RKE2 1.26.12 | u-2204-0-k-rke2-12612-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-rke2-12612-0.ova` | | RKE2 1.27.8 | u-2204-0-k-rke2-1278-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-rke2-1278-0.ova` | +| RKE2 1.27.9 | u-2204-0-k-rke2-1279-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-rke2-1279-0.ova` | | RKE2 1.28.4 | u-2204-0-k-rke2-1284-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-rke2-1284-0.ova` | +| RKE2 1.28.5 | u-2204-0-k-rke2-1285-0 | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-rke2-1285-0.ova` | ### Usage Instructions diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/_category_.json b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/_category_.json new file mode 100644 index 0000000000..455b8e4969 --- /dev/null +++ b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/airgap-install.md b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/airgap-install.md new file mode 100644 index 0000000000..d88010c869 --- /dev/null +++ b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/airgap-install.md @@ -0,0 +1,65 @@ +--- +sidebar_label: "Airgap Installation" +title: "Airgap Installation" +description: "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm Chart." +icon: "" +hide_table_of_contents: false +sidebar_position: 0 +tags: ["self-hosted", "enterprise", "airgap"] +keywords: ["self-hosted", "enterprise"] +--- + +You can install self-hosted Palette in an airgap Kubernetes environment. An airgap environment lacks direct access to +the internet and is intended for environments with strict security requirements. + +The installation process for an airgap environment is different due to the lack of internet access. Before the primary +Palette installation steps, you must download the following artifacts: + +- Palette platform manifests and required platform packages. + +- Container images for core platform components and third-party dependencies. + +- Palette packs. + +The other significant change is that Palette's default public OCI registry is not used. Instead, a private OCI registry +is utilized to store images and packs. + +## Overview + +Before you can install Palette in an airgap environment, you must first set up your environment as outlined in the +following diagram. + +![An architecture diagram outlining the five different installation phases](/enterprise-version_air-gap-repo_overview-order-diagram.webp) + +1. In an environment with internet access, download the airgap setup binary from the URL provided by our support team. + The airgap setup binary is a self-extracting archive that contains the Palette platform manifests, images, and + required packs. The airgap setup binary is a single-use binary for uploading Palette images and packs to your OCI + registry. You will not use the airgap setup binary again after the initial installation. + +2. Move the airgap setup binary to the airgap environment. The airgap setup binary is used to extract the manifest + content and upload the required images and packs to your private OCI registry. Start the airgap setup binary in a + Linux Virtual Machine (VM). + +3. The airgap script will push the required images and packs to your private OCI registry. + +4. Extract the manifest content from the airgap setup binary. The manifest content must be hosted on a web server that + is accessible from the airgap environment. You can use the same Linux VM from step two to host the manifest content + or use a different web server. + +5. Install Palette using the Kubernetes Helm chart. + +## Get Started + +To get started with the airgap Palette installation, review the [Environment Setup](./kubernetes-airgap-instructions.md) +page. The environment setup guide provides detailed instructions on how to prepare your airgap environment. After you +have completed the environment setup, you can proceed with the [Install Palette](./install.md) guide. + +## Resources + +- [Environment Setup](kubernetes-airgap-instructions.md) + +- [Install Palette](./install.md) + +- [Checklist](checklist.md) + +- [Additional Packs](../../airgap/supplemental-packs.md) diff --git a/docs/docs-content/enterprise-version/install-palette/airgap/checklist.md b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist.md similarity index 70% rename from docs/docs-content/enterprise-version/install-palette/airgap/checklist.md rename to docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist.md index 26f7ecdba2..8bc6f5ec83 100644 --- a/docs/docs-content/enterprise-version/install-palette/airgap/checklist.md +++ b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist.md @@ -1,11 +1,11 @@ --- sidebar_label: "Checklist" -title: "Checklist" +title: "Airgap Installation Checklist" description: "An airgap installation of Palette requires a few steps to be completed before the installation can begin. This checklist will help you prepare for the installation." icon: "" -sidebar_position: 40 +sidebar_position: 10 hide_table_of_contents: false tags: ["palette", "self-hosted", "airgap"] keywords: ["self-hosted", "enterprise"] @@ -14,10 +14,6 @@ keywords: ["self-hosted", "enterprise"] Use the following checklist to ensure you have completed all the required steps before deploying the airgap Palette installation. - - - - - [ ] `oras` CLI v1.0.0 is installed and available. - [ ] `aws` CLI v2 or greater CLI is installed and available. @@ -47,22 +43,3 @@ installation. - [ ] Ensure the manifest content is hosted on an HTTP file server accessible from the environment to which you are installing Palette. - - - - - -- [ ] Create a vSphere VM and Template folder named `spectro-templates`. - -- [ ] Import the Operating System and Kubernetes distribution OVA required for the installation and place the OVA in the - `spectro-templates` folder. - -- [ ] Append the `r_` prefix and remove the `.ova` suffix from the OVA name after the import. - -- [ ] Start the airgap setup binary and verify the setup is completed successfully. - -- [ ] Review the list of [pack binaries](./supplemental-packs.md) to download and upload to your OCI registry. - - - - diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/install.md b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/install.md new file mode 100644 index 0000000000..c73e92bccd --- /dev/null +++ b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/install.md @@ -0,0 +1,877 @@ +--- +sidebar_label: "Install Palette" +title: "Install Airgap Self-Hosted Palette" +description: "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm Chart." +icon: "" +hide_table_of_contents: false +sidebar_position: 30 +tags: ["self-hosted", "enterprise", "airgap"] +keywords: ["self-hosted", "enterprise"] +--- + +You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes cluster in your airgap production +environment. + +This installation method is common in secure environments with restricted network access that prohibits using Palette +SaaS. Review our [architecture diagrams](../../../../architecture/networking-ports.md) to ensure your Kubernetes cluster +has the necessary network connectivity for self-hosted Palette to operate successfully. + +:::warning + +Complete the [Environment Setup](./kubernetes-airgap-instructions.md) steps before proceeding with the installation. + +::: + +## Prerequisites + +- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) is installed and available. + +- [Helm](https://helm.sh/docs/intro/install/) is installed and available. + +- Access to the target Kubernetes cluster's kubeconfig file. You must be able to interact with the cluster using + `kubectl` commands and have sufficient permissions to install Palette. We recommend using a role with `cluster-admin` + permissions to install Palette. + +- Ensure `unzip` or a similar extraction utility is installed on your system. + +- The Kubernetes cluster must be set up on a supported version of Kubernetes, which includes versions v1.25 to v1.27. + +- Ensure the Kubernetes cluster does not have Cert Manager installed. Palette requires a unique Cert Manager + configuration to be installed as part of the installation process. If Cert Manager is already installed, you must + uninstall it before installing Palette. + +- The Kubernetes cluster must have a Container Storage Interface (CSI) installed and configured. Palette requires a CSI + to store persistent data. You may install any CSI that is compatible with your Kubernetes cluster. + +- We recommended the following resources for Palette. Refer to the + [Palette size guidelines](../../install-palette.md#size-guidelines) for additional sizing information. + + - 8 CPUs per node. + + - 16 GB Memory per node. + + - 100 GB Disk Space per node. + - A Container Storage Interface (CSI) for persistent data. + + - A minimum of three worker nodes or three untainted control plane nodes. + +- The following network ports must be accessible for Palette to operate successfully. + + - TCP/443: Inbound and outbound to and from the Palette management cluster. + + - TCP/6443: Outbound traffic from the Palette management cluster to the deployed clusters' Kubernetes API server. + +- Ensure you have an SSL certificate that matches the domain name you will assign to Palette. You will need this to + enable HTTPS encryption for Palette. Reach out to your network administrator or security team to obtain the SSL + certificate. You need the following files: + + - x509 SSL certificate file in the base64 format. + + - x509 SSL certificate key file in the base64 format. + + - x509 SSL certificate authority file in the base64 format. + +- An Nginx controller will be installed by default. If you already have an Nginx controller deployed in the cluster, you + must set the `ingress.enabled` parameter to `false` in the **values.yaml** file. + +- A custom domain and the ability to update Domain Name System (DNS) records. You will need this to enable HTTPS + encryption for Palette. + +- If you are installing Palette behind a network proxy server, ensure you have the Certificate Authority (CA) + certificate file in the base64 format. You will need this to enable Palette to communicate with the network proxy + server. + +- Access to the Palette Helm Charts. Refer to the [Access Palette](../../../enterprise-version.md#access-palette) for + instructions on how to request access to the Helm Chart. + +:::warning + +Do not use a Palette-managed Kubernetes cluster when installing Palette. Palette-managed clusters contain the Palette +agent and Palette-created Kubernetes resources that will interfere with the installation. + +::: + +## Install Palette + +The following instructions are agnostic to the Kubernetes distribution you are using. Depending on the underlying +infrastructure provider and your Kubernetes distribution, you may need to modify the instructions to match your +environment. Reach out to our support team if you need assistance. + +1. Open a terminal session and navigate to the directory where you downloaded the Palette installation zip file + provided by our support. Unzip the file to a directory named **palette-install**. + + ```shell + unzip release-*.zip -d palette-install + ``` + +2. Navigate to the release folder inside the **palette-install** directory. + + ```shell + cd palette-install/charts/release-* + ``` + +3. Open the file **extras/cert-manager/values.yaml** in a text editor and append the URL to your OCI registry, which + also includes the namespace or project that is hosting the Spectro Cloud images. The URL should be in the format + `/`. In the example configuration below, the value `my-oci-registry.com/spectro-images` is + prefixed to each URL. Save the file after you have appended the URL. + + ```yaml hideClipboard + image: + cainjectorImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-cainjector:spectro-v1.11.0-20230427" + controllerImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-controller:spectro-v1.11.0-20230427" + webhookImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-webhook:spectro-v1.11.0-20230808" + amceResolverImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-acmesolver:spectro-v1.11.0-20230427" + ``` + +4. Install Cert Manager using the following command. Replace the actual file name of the Cert Manager Helm Chart with + the one you downloaded, as the version number may be different. + + ```shell + helm upgrade --values extras/cert-manager/values.yaml \ + cert-manager extras/cert-manager/cert-manager-*.tgz --install + ``` + + ```shell hideClipboard + Release "cert-manager" does not exist. Installing it now. + NAME: cert-manager + LAST DEPLOYED: Mon Jan 29 16:32:33 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 1 + TEST SUITE: None + ``` + +5. Open the file **extras/image-swap/values.yaml** in a text editor and append the URL to your OCI registry that also + includes the namespace or project that is hosting the Spectro Cloud images. + + ```yaml hideClipboard + config: + imageSwapImages: + imageSwapInitImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release/thewebroot/imageswap-init:v1.5.2-spectro-4.1.1" + imageSwapImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release/thewebroot/imageswap:v1.5.2-spectro-4.1.1" + ``` + +6. Update the `ociImageRegistry` section with the proper configuration values to your OCI registry. The + `ociImageRegistry` section should look similar to the following example. + + :::info + + Use the following `mirrorRegistries`placeholder string to replace the respective values of your OCI registry. + + ```yaml + docker.io::OCI_URL/IMAGE_PROJECT,gcr.io::OCI_URL/IMAGE_PROJECT,ghcr.io::OCI_URL/IMAGE_PROJECT,k8s.gcr.io::OCI_URL/IMAGE_PROJECT,registry.k8s.io::OCI_URL/IMAGE_PROJECT,quay.io::OCI_URL/IMAGE_PROJECT" + ``` + + ::: + + ```yaml hideClipboard + ociImageRegistry: + endpoint: "my-oci-registry.com" + name: "Airgap Images OCI" + password: "" + username: "" + baseContentPath: "spectro-images" # + insecureSkipVerify: true + caCert: "" + mirrorRegistries: "docker.io::my-oci-registry.com/spectro-images,gcr.io::my-oci-registry.com/spectro-images,ghcr.io::my-oci-registry.com/spectro-images,k8s.gcr.io::my-oci-registry.com/spectro-images,registry.k8s.io::my-oci-registry.com/spectro-images,quay.io::my-oci-registry.com/spectro-images" + ``` + +7. Go ahead and install the image-swap chart using the following command. Point to the **values.yaml** file you + configured in steps five through six. + + ```shell + helm upgrade --values extras/image-swap/values.yaml \ + image-swap extras/image-swap/image-swap-*.tgz --install + ``` + + ```shell hideClipboard + Release "image-swap" does not exist. Installing it now. + NAME: image-swap + LAST DEPLOYED: Mon Jan 29 17:04:23 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 1 + TEST SUITE: None + ``` + + :::tip + + If you need to override the image-swap registry configuration post-deployment, refer to the + [Override Registry Configuration](../../../system-management/registry-override.md) page for instructions. + + ::: + +8. Open the **values.yaml** file in the **spectro-mgmt-plane** folder with a text editor of your choice. The + **values.yaml** file contains the default values for the Palette installation parameters. However, you must populate + the following parameters before installing Palette. You can learn more about the parameters on the **values.yaml** + file on the [Helm Configuration Reference](../palette-helm-ref.md) page. + + Ensure you provide the proper `ociImageRegistry.mirrorRegistries` values if you are using a self-hosted OCI + registry. You can find the placeholder string in the `ociImageRegistry` section of the **values.yaml** file. + + | **Parameter** | **Description** | **Type** | + | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | + | `env.rootDomain` | The URL name or IP address you will use for the Palette installation. | string | + | `config.installationMode` | The installation mode for Palette. The values can be `connected` or `airgap`. Set this value to `airgap`. | string | + | `ociPackEcrRegistry` | The OCI registry credentials for the Palette FIPS packs repository. | object | + | `ociImageRegistry` | The OCI registry credentials for the Palette images repository. | object | + | `ociImageRegistry.mirrorRegistries` | Replace the placeholder string with the respective values of your OCI registry repository that is hosting the images. Do not use the same values you provided to the image-swap **values.yaml**. The placeholders require a `/v2/` endpoint if your OCI registry supports the Docker Registry protocol v2, otherwise container pull images will fail. | + | `imageSwapImages` | The image swap configuration for Palette. If you are using an OCI registry, such as Harbor. Replace the prefix URLs with your OCI registry URL that includes the image namespace or project: `/`. | object | + | `imageSwapConfig.isEKSCluster` | If you are NOT installing Palette on an EKS cluster, set this value to `false`. | boolean | + | `scar` | Specify your HTTP file server values. If your HTTP file server requires credentials ensure the provided values are base64-encoded. Example of the string "admin" encoded in base64 - `YWRtaW4=`. | object | + | `ingress.enabled` | Whether to install the Nginx ingress controller. Set this to `false` if you already have an Nginx controller deployed in the cluster. | boolean | + | `reach-system` | Set `reach-system.enabled` to `true` and configure the `reach-system.proxySettings` parameters for Palette to use a network proxy in your environment. | object | + + Save the **values.yaml** file after you have populated the required parameters mentioned in the table. Select one of + the following tabs to review an example of the **values.yaml** file with the required parameters highlighted. + + + + + + + ```yaml {23,53,87-95,97-102,104-106,109} + ######################### + # Spectro Cloud Palette # + ######################### + # MongoDB Configuration + mongo: + # Whether to deploy MongoDB in-cluster (internal == true) or use Mongo Atlas + internal: true + + # Mongodb URL. Only change if using Mongo Atlas. + databaseUrl: "mongo-0.mongo,mongo-1.mongo,mongo-2.mongo" + # Mongo Atlas password, base64 encoded. Only enter if using Mongo Atlas. + databasePassword: "" + + # No. of mongo replicas to run, default is 3 + replicas: 3 + # The following only apply if mongo.internal == true + cpuLimit: "2000m" + memoryLimit: "4Gi" + pvcSize: "20Gi" + storageClass: "" # leave empty to use the default storage class + + config: + installationMode: "airgap" # values can be connected or airgap. + + # SSO SAML Configuration (Optional for self-hosted type) + sso: + saml: + enabled: false + acsUrlRoot: "myfirstpalette.spectrocloud.com" + acsUrlScheme: "https" + audienceUrl: "https://www.spectrocloud.com" + entityId: "https://www.spectrocloud.com" + apiVersion: "v1" + + # Email Configurations. (Optional for self-hosted type) + email: + enabled: false + emailId: "noreply@spectrocloud.com" + smtpServer: "smtp.gmail.com" + smtpPort: 587 + insecureSkipVerifyTls: true + fromEmailId: "noreply@spectrocloud.com" + password: "" # base64 encoded SMTP password + + env: + # rootDomain is a DNS record which will be mapped to the ingress-nginx-controller load balancer + # E.g., myfirstpalette.spectrocloud.com + # - Mandatory if ingress.internal == false + # - Optional if ingress.internal == true (leave empty) + # + # IMPORTANT: a DNS record must be created separately and it must be a wildcard to account for Organization prefixes + # E.g., *.myfirstpalette.spectrocloud.com + rootDomain: "palette.example.com" + + # stableEndpointAccess is used when deploying EKS clusters in Private network type. + # When your Saas installed instance have connectivity to the private VPC where you want to launch the cluster set the stableEndpointAccess to true + cluster: + stableEndpointAccess: false + + # registry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # insecureSkipVerify: false + # caCert: "" + + # ociPackRegistry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # baseContentPath: "" # + # insecureSkipVerify: false + # caCert: "" + + # ociPackEcrRegistry: + # endpoint: "" # + # name: "" # + # accessKey: "" # + # secretKey: "" # + # baseContentPath: "" # + # isPrivate: true + # insecureSkipVerify: false + # caCert: "" + + ociImageRegistry: + endpoint: "my-oci-registry.com" # + name: "Airgap Image OCI" # + password: "" # + username: "" # + baseContentPath: "spectro-images" # + insecureSkipVerify: true + caCert: "" + mirrorRegistries: "docker.io::my-oci-registry.com/v2/spectro-images,gcr.io::my-oci-registry.com/v2/spectro-images,ghcr.io::my-oci-registry.com/v2/spectro-images,k8s.gcr.io::my-oci-registry.com/v2/spectro-images,registry.k8s.io::my-oci-registry.com/v2/spectro-images,quay.io::my-oci-registry.com/v2/spectro-images" + + scar: + endpoint: "http://10.15.20.15:2015" + username: "YWRtaW4=" + password: "YWRtaW4=" + insecureSkipVerify: true + caCert: "" + + imageSwapImages: + imageSwapInitImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/thewebroot/imageswap-init:v1.5.2" + imageSwapImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/thewebroot/imageswap:v1.5.2" + + imageSwapConfig: + isEKSCluster: true #If the Cluster you are trying to install is EKS cluster set value to true else set to false + + nats: + # Should we install nats as part of the nats chart bundled with hubble charts + # If not enabled NATS service should be installed as a separate service. + + enabled: true + + # Whether to front NATS with a cloud load balancer (internal == false) or + # either share the ingress load balancer or use hostNetwork (internal == true). + # See nats.natsUrl comments for further detail. + internal: true + + # NATS URL + # Comma separated list of mappings for nats load balancer service + # E.g., "message1.dev.spectrocloud.com:4222,message2.dev.spectrocloud.com:4222" + # + # Mandatory if nats.internal == false + # Otherwise, if nats.internal == true: + # - If ingress.ingress.internal == true: leave empty (use hostNetwork) + # - If ingress.ingress.internal == false: use ":4222" (share ingress lb) + natsUrl: "" + + # *********************** IMPORTANT NOTE ****************************** + # * if nats.internal == true, ignore all of the following NATS config * + # ********************************************************************* + + # NATS load balancer annotations + annotations: {} + + # AWS example + # service.beta.kubernetes.io/aws-load-balancer-ssl-cert: + # service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "server-port" + # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp + + # Azure example + # service.beta.kubernetes.io/azure-load-balancer-internal: "true" + # service.beta.kubernetes.io/azure-dns-label-name: myserviceuniquelabel + + # Static IP for the nats loadbalancer service. If empty, a dynamic IP will be generated. + natsStaticIP: "" + grpc: + external: false + endpoint: "" # Please provide DNS endpoint with the port eg: msg.spectrocloud.com:443 + caCertificateBase64: "" # Please provide caCertificate for the grpc server Cert + serverCrtBase64: "" + serverKeyBase64: "" + insecureSkipVerify: false + + ingress: + # When enabled nginx ingress controller would be installed + enabled: true + + ingress: + # Whether to front NGINX Ingress Controller with a cloud + # load balancer (internal == false) or use host network + internal: false + + # Default SSL certificate and key for NGINX Ingress Controller (Optional) + # A wildcard cert for config.env.rootDomain, e.g., *.myfirstpalette.spectrocloud.com + # If left blank, the NGINX ingress controller will generate a self-signed cert (when terminating TLS upstream of ingress-nginx-controller) + certificate: "" + key: "" + + #If ACM is enabled please use grpc as a non internal and bring grpc on different LB. Provide certificate and dns for it. + annotations: {} + # AWS example + # service.beta.kubernetes.io/aws-load-balancer-internal: "true" + # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp + # service.beta.kubernetes.io/aws-load-balancer-ssl-cert: + # service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https" + + # Azure example + # service.beta.kubernetes.io/azure-load-balancer-internal: "true" + # service.beta.kubernetes.io/azure-dns-label-name: myserviceuniquelabel + + # Static IP for the Ingress load balancer service. If empty, a dynamic IP will be generated. + ingressStaticIP: "" + + # For Service like AWS Load Balancer using https we would want to terminate the HTTPS at Load Balancer. + terminateHTTPSAtLoadBalancer: false + nats: + enabled: true + + frps: + frps: + enabled: false + frpHostURL: proxy.sample.spectrocloud.com + server: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURqekNDQW5lZ0F3SUJBZ0lVZTVMdXBBZGljd0Z1SFJpWWMyWEgzNTFEUzJJd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tERW1NQ1FHQTFVRUF3d2RjSEp2ZUhrdWMyRnRjR3hsTG5Od1pXTjBjbTlqYkc5MVpDNWpiMjB3SGhjTgpNakl4TURFME1UTXlOREV5V2hjTk1qY3hNREV6TVRNeU5ERXlXakI3TVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHCkExVUVDQk1DUTBFeEV6QVJCZ05WQkFjVENsTmhiblJoUTJ4aGNtRXhGVEFUQmdOVkJBb1RERk53WldOMGNtOUQKYkc5MVpERUxNQWtHQTFVRUN4TUNTVlF4SmpBa0JnTlZCQU1USFhCeWIzaDVMbk5oYlhCc1pTNXpjR1ZqZEhKdgpZMnh2ZFdRdVkyOXRNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXd5bEt3MmlxClBXM2JrQU0wV3RhaEFLbEppcWFHd05LUDVRRTZ6ZW5NM2FURko3TjIwN0dWcUNGYzJHTDNodmNhTDFranZjeEkKK2lybHpkbm9hcVhUSmV3ZkJiTGs2SGVhZmdXUVp3NHNNeE5QRUVYYlNXYm54Mm03Y2FlbVJiUWZSQWhPWXRvWgpIWG1IMzQ1Q25mNjF0RnhMeEEzb0JRNm1yb0JMVXNOOUh2WWFzeGE5QUFmZUNNZm5sYWVBWE9CVmROalJTN1VzCkN5NmlSRXpEWFgvem1nOG5WWFUwemlrcXdoS3pqSlBJd2FQa2ViaXVSdUJYdEZ0VlQwQmFzS3VqbURzd0lsRFQKVmR4SHRRQUVyUmM4Q2Nhb20yUkpZbTd1aHNEYlo2WVFzS3JiMmhIbU5rNENVWUd5eUJPZnBwbzR2bFd1S2FEcgpsVFNYUXlPN0M0ejM1d0lEQVFBQm8xNHdYREJhQmdOVkhSRUVVekJSZ2dsc2IyTmhiR2h2YzNTSEJIOEFBQUdDCkhYQnliM2g1TG5OaGJYQnNaUzV6Y0dWamRISnZZMnh2ZFdRdVkyOXRnaDhxTG5CeWIzaDVMbk5oYlhCc1pTNXoKY0dWamRISnZZMnh2ZFdRdVkyOXRNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUEvRFJFVm54SWJRdi9uMDEvSQpJd1d0ekhKNGNHOUp6UlB6dmszNUcvRGJOVzZYZ0M3djBoWlFIVHg5bzMrckxoSUFiWTNmbjc1VEtlN3hMRWpiCkI3M3pGWURJSStkYzM5NkQzZU51M2NxRGIvY01kYmlFalhod2ttZk9NRm9qMnpOdHJIdzFsSjA0QlNFMWw1YWgKMDk0Vy9aaEQ2YTVLU3B0cDh1YUpKVmNrejRYMEdRWjVPYjZadGdxZVVxNytqWVZOZ0tLQzJCMW1SNjMyMDNsZwozVFZmZEkrdmI3b292dVdOOFRBVG9qdXNuS25WMmRMeTFBOWViWXYwMEM3WWZ6Q0NhODgrN2dzTGhJaUJjRHBPClJkWjU3QStKanJmSU5IYy9vNm5YWFhDZ2h2YkFwUVk1QnFnMWIzYUpUZERNWThUY0hoQVVaQzB5eU04bXcwMnQKWHRRQwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBd3lsS3cyaXFQVzNia0FNMFd0YWhBS2xKaXFhR3dOS1A1UUU2emVuTTNhVEZKN04yCjA3R1ZxQ0ZjMkdMM2h2Y2FMMWtqdmN4SStpcmx6ZG5vYXFYVEpld2ZCYkxrNkhlYWZnV1FadzRzTXhOUEVFWGIKU1dibngybTdjYWVtUmJRZlJBaE9ZdG9aSFhtSDM0NUNuZjYxdEZ4THhBM29CUTZtcm9CTFVzTjlIdllhc3hhOQpBQWZlQ01mbmxhZUFYT0JWZE5qUlM3VXNDeTZpUkV6RFhYL3ptZzhuVlhVMHppa3F3aEt6akpQSXdhUGtlYml1ClJ1Qlh0RnRWVDBCYXNLdWptRHN3SWxEVFZkeEh0UUFFclJjOENjYW9tMlJKWW03dWhzRGJaNllRc0tyYjJoSG0KTms0Q1VZR3l5Qk9mcHBvNHZsV3VLYURybFRTWFF5TzdDNHozNXdJREFRQUJBb0lCQUFPVVZFeTFOTG9mczdFMgpmZFZVcm10R3I1U2RiVWRJRlYrTDREbzZtWWxQSmxhT0VoWGI0ZlROZDloNEtEWVBmaWwwSnhXcUU0U1RHTmZuCnNUMlRnUVhuQ01LZi8xYk1Lc2M0N3VjVStYYU9XaHJnVFI5UmhkckFjN0duODRLL3hQc0ljL2VZTEhHLzh1QUUKeWUvLzVmRkM2QmpXY0hUM1NkTlZnd3duamJudG5XTXIzTFJBVnJBamZBckxveWUwS0F2YytYdXJLTEVCcmMyVQpjaHlDbitZemJKN0VlSG44UXdQNGdBNXVSK0NCMFJPeFErYXIzS3M5YUhkZTQ1OEVNNEtLMnpUOXA4RWZRc1lFCkFtNUpxWjliR0JEVHV1dEkyNm9GK0pLQ1IzZzhXNERRcHVYRUZoVjlya0pMSm13RDhQb0JaclF6UzZvdmJhdkkKRk42QVM4RUNnWUVBOEcxQzFxZVh4dTQ4aEYxak5MTCswRmxkeWdFem9SMmFoRGJCai8weUZkQVVjU2pYTzk0NAozN1dORTBUUG10WG1Vc3NZTlBTR21XaWI2OUhicEFoMTY3SWVwNE9LaVlZdkozYm1oUC9WNzFvK3M0SWJlSHh1CkVJbWVVckFOZWRoQURVQnZ4c1lXRWxlVlVJSFFRcjY1VHM2ZjIrWkpTKzg4TU05bUorL3BmcmNDZ1lFQXo4MXgKR3JiSE5oak56RjhZMjhiK0hMNW5rdDR0SUdkU3hnbW9PMFFJeGkrQVNZTzB0WW42VFk0ZHI5ZXErMzE3b21ZawpMbDNtNENORDhudG1vYzRvWnM4SUpDQ0IrZjNqcTY4OHdoQU9vVHZ4dDhjZVJqOFRhRHl1SHZwS043OVNsVVd2CjBJd2ZRNDNIemd3SWJiSWhjcTRJVGswanI0VHdWbThia283VElGRUNnWUJoNnUzVXhHN0JHeGZVaE1BNW4waSsKREJkeGhPbkZEV3gzdW1FOHhrN1dxV2NaNnhzMWk3eTRCNVhNS2pNdkNUeURyYWxQTCtOOXFTZ1BjK216TmFybwo4aU1mOENmRStMeE5vMVFoQ0p6Vm5YaDUzVnhZeHJ5QXlidU1TNTFCYVh3MHFYQ2NrT0krV0NNOHBaSHZEUVFsCmYydUZ3SlZMY3NTZDBHbjNpL01ab3dLQmdBY1BzUjg2Uk15MnpROTd6OGx3R3FSNVorV2F2U2ZUdXdGVnhLeTIKNUNGdjdja1J1NnRMbEFEY3FtK1dRWTRvTm5KUFREMXpIV3hTWm5XdjhjM2Z4b212MFZRQThzbSs4ZVNjb05EcgpZTVBqMkpQcEpVTTMwMzRBU2Q1dG5PWUdEMVZaTjk4N1U3aWs4Ynd6dG5tYnl2MHRvc1NlWkc4TGNtdE5mVDllCnNSZnhBb0dCQUpTV1lDellyTlRMNnRUSnh5M2FqWm5jZkxrMEV0eWNCd05FRXZHVzVSVE9LOUFYTE96RzN0eHUKajZqWlRpaUFRU09aaVd0clJHU0U0bEkyQ1MvcjNjd3VuSGlnZlovd1dKZldkZ0JpRnZqOTVFbUVQWUZaRDRobQpkT3l5UHhRRXFTRmprQ21BS2plOFBpTDdpU01GbGhBZTZQWFljQlExdCtzd01UeXBnY3RrCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== + ca: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURNVENDQWhtZ0F3SUJBZ0lVSHhWK0ljVGZHUElzdW8yY3dqQ0Q0Z2RSTFFRd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tERW1NQ1FHQTFVRUF3d2RjSEp2ZUhrdWMyRnRjR3hsTG5Od1pXTjBjbTlqYkc5MVpDNWpiMjB3SGhjTgpNakl4TURFME1UTXlOREV5V2hjTk16WXdOakl5TVRNeU5ERXlXakFvTVNZd0pBWURWUVFEREIxd2NtOTRlUzV6CllXMXdiR1V1YzNCbFkzUnliMk5zYjNWa0xtTnZiVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0MKQVFvQ2dnRUJBSy90WXBHVi9HRURUWnZzL25QQ2lOK0U3K1dOQ21GeU1NQjdkazVOT3JzQWZIaVVvZ1JRVUo0WQptSjhwVmYrSzhTRFBsdGNYcW40WVVTbmxiUERsVlBkWU5zOTEwT3RaS1EwNW96aUtGV2pNbS85NHlLSjVyVzNsCndDNEN0ayttUm9Ib0ZQQS81dmFVbVZHdlVadjlGY0JuL0pKN2F4WnRIQk1PRiticXQ0Zmd0ci9YMWdOeWhPVzUKZTVScGpESkozRjJTVnc5NUpBQSt4a3V3UitFSmVseEtnQVpxdDc0ejB4U2ROODZ0QzNtK0wxRGs2WVVlQWEzZApvM3Rsa3ZkeDV6dUJvSmI2QmpZWEV4UE1PbThRcHFNVWRLK3lDZUdrem9XQStDOUtFdGtVaERCWktENStNWXRZCktVMUh1RXJCbmw2Z3BuWTRlbzJjVTRxdkNwZzZ4S3NDQXdFQUFhTlRNRkV3SFFZRFZSME9CQllFRklKMkRkTjgKc2ZtVjRCT1ZFL0FjZ0VEejArNmlNQjhHQTFVZEl3UVlNQmFBRklKMkRkTjhzZm1WNEJPVkUvQWNnRUR6MCs2aQpNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQWhQVi9RMVl1YWVTOTZVCmhjVGQ4RWdJaHhpbHFiTWlTQm5WaVdrdlJzWk94UUIwNTFScWtwT3g0UTRsckdaOGVJWWc3T0trTTdzejhuTVQKL2pxS21sZDY0MzJCcURCMlNkNVp5ZFdReHAwU1laRTlnVWszYk9KRGtZVXQ4b1cvZDBWeG9uU05LQVN3QmZKaApWV1VZUUlpNm55K0ZZZmtuRFNvRnFlY2Z3SDBQQVUraXpnMkI3KzFkbko5YisyQ21IOUVCallOZ2hoNlFzVlFQCkh2SkdQQURtandPNkJOam5HK0Z3K0Z6cmFXUTNCTjAwb08zUjF6UmgxZERmTTQzR3oxRmZGRW5GSXI5aGFuUnQKWHJFZm8vZWU5bjBLWUFESEJnV1g4dlhuNHZrRmdWRjgwYW9MUUJSQTBxWXErcW1pVlp6YnREeE9ldFEyRWFyTQpyNmVWL0lZPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + service: + annotations: {} + + ui-system: + enabled: true + ui: + nocUI: + enable: true + mapBoxAccessToken: "" # Leave Empty to use Default Access Token from Palette + mapBoxStyledLayerID: "" # Leave Empty to use Default Style Layer ID + + reachSystem: + enabled: false + proxySettings: + http_proxy: "" + https_proxy: "" + no_proxy: "" + ca_crt_path: "" # Set the 'ca_crt_path' parameter to the location of the certificate file on each node. + scheduleOnControlPlane: true + ``` + + + + + + ```yaml {23,53,77-85,87-95,110-115} + ######################### + # Spectro Cloud Palette # + ######################### + # MongoDB Configuration + mongo: + # Whether to deploy MongoDB in-cluster (internal == true) or use Mongo Atlas + internal: true + + # Mongodb URL. Only change if using Mongo Atlas. + databaseUrl: "mongo-0.mongo,mongo-1.mongo,mongo-2.mongo" + # Mongo Atlas password, base64 encoded. Only enter if using Mongo Atlas. + databasePassword: "" + + # No. of mongo replicas to run, default is 3 + replicas: 3 + # The following only apply if mongo.internal == true + cpuLimit: "2000m" + memoryLimit: "4Gi" + pvcSize: "20Gi" + storageClass: "" # leave empty to use the default storage class + + config: + installationMode: "airgap" # values can be connected or airgap. + + # SSO SAML Configuration (Optional for self-hosted type) + sso: + saml: + enabled: false + acsUrlRoot: "myfirstpalette.spectrocloud.com" + acsUrlScheme: "https" + audienceUrl: "https://www.spectrocloud.com" + entityId: "https://www.spectrocloud.com" + apiVersion: "v1" + + # Email Configurations. (Optional for self-hosted type) + email: + enabled: false + emailId: "noreply@spectrocloud.com" + smtpServer: "smtp.gmail.com" + smtpPort: 587 + insecureSkipVerifyTls: true + fromEmailId: "noreply@spectrocloud.com" + password: "" # base64 encoded SMTP password + + env: + # rootDomain is a DNS record which will be mapped to the ingress-nginx-controller load balancer + # E.g., myfirstpalette.spectrocloud.com + # - Mandatory if ingress.internal == false + # - Optional if ingress.internal == true (leave empty) + # + # IMPORTANT: a DNS record must be created separately and it must be a wildcard to account for Organization prefixes + # E.g., *.myfirstpalette.spectrocloud.com + rootDomain: "palette.example.com" + + # stableEndpointAccess is used when deploying EKS clusters in Private network type. + # When your Saas installed instance have connectivity to the private VPC where you want to launch the cluster set the stableEndpointAccess to true + cluster: + stableEndpointAccess: false + + # registry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # insecureSkipVerify: false + # caCert: "" + + # ociPackRegistry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # baseContentPath: "" # + # insecureSkipVerify: false + # caCert: "" + + ociPackEcrRegistry: + endpoint: "123456789.dkr.ecr.us-east-1.amazonaws.com" # + name: "Airgap Packs OCI" # + accessKey: "*************" # + secretKey: "*************" # + baseContentPath: "spectro-packs" # + isPrivate: true + insecureSkipVerify: true + caCert: "" + + ociImageRegistry: + endpoint: "public.ecr.aws/123456789" # + name: "Airgap Images OCI" # + password: "" # + username: "" # + baseContentPath: "spectro-images" # + insecureSkipVerify: false + caCert: "" + mirrorRegistries: "docker.io::public.ecr.aws/123456789/v2/spectr-images,gcr.io::public.ecr.aws/123456789/v2/spectro-images,ghcr.io::public.ecr.aws/123456789/v2/spectro-images,k8s.gcr.io::public.ecr.aws/123456789/v2/spectro-images,registry.k8s.io::public.ecr.aws/123456789/v2/spectro-images,quay.io::public.ecr.aws/123456789/v2/spectro-imagesßßß" + # + # Instruction for mirrorRegistries. + # ---------------------------------- + # Please provide the registry endpoint for the following registries, separated by double colons (::): + # docker.io + # gcr.io + # ghcr.io + # k8s.gcr.io + # registry.k8s.io + # quay.io + # For each registry, follow this example format: + # docker.io::/v2/,gcr.io::/v2/,ghcr.io::/v2/,k8s.gcr.io::/v2/,registry.k8s.io::/v2/,quay.io::/v2/ + # Replace with your actual registry endpoint and , , , , , and with the specific endpoint details for each registry. + + scar: + endpoint: "http://10.15.20.15:2015" + username: "YWRtaW4=" + password: "YWRtaW4=" + insecureSkipVerify: true + caCert: "" + + imageSwapImages: + imageSwapInitImage: "public.ecr.aws/123456789/gcr.io/spectro-images-public/release-fips/thewebroot/imageswap-init:v1.5.2" + imageSwapImage: "public.ecr.aws/123456789/gcr.io/spectro-images-public/release-fips/thewebroot/imageswap:v1.5.2" + + imageSwapConfig: + isEKSCluster: true # If the Cluster you are trying to install is EKS cluster set value to true else set to false + + nats: + # Should we install nats as part of the nats chart bundled with hubble charts + # If not enabled NATS service should be installed as a separate service. + + enabled: true + + # Whether to front NATS with a cloud load balancer (internal == false) or + # either share the ingress load balancer or use hostNetwork (internal == true). + # See nats.natsUrl comments for further detail. + internal: true + + # NATS URL + # Comma separated list of mappings for nats load balancer service + # E.g., "message1.dev.spectrocloud.com:4222,message2.dev.spectrocloud.com:4222" + # + # Mandatory if nats.internal == false + # Otherwise, if nats.internal == true: + # - If ingress.ingress.internal == true: leave empty (use hostNetwork) + # - If ingress.ingress.internal == false: use ":4222" (share ingress lb) + natsUrl: "" + + # *********************** IMPORTANT NOTE ****************************** + # * if nats.internal == true, ignore all of the following NATS config * + # ********************************************************************* + + # NATS load balancer annotations + annotations: {} + + # AWS example + # service.beta.kubernetes.io/aws-load-balancer-ssl-cert: + # service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "server-port" + # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp + + # Azure example + # service.beta.kubernetes.io/azure-load-balancer-internal: "true" + # service.beta.kubernetes.io/azure-dns-label-name: myserviceuniquelabel + + # Static IP for the nats loadbalancer service. If empty, a dynamic IP will be generated. + natsStaticIP: "" + grpc: + external: false + endpoint: "" #Please provide DNS endpoint with the port eg: msg.spectrocloud.com:443 + caCertificateBase64: "" #Please provide caCertificate for the grpc server Cert + serverCrtBase64: "" + serverKeyBase64: "" + insecureSkipVerify: false + + ingress: + # When enabled nginx ingress controller would be installed + enabled: true + + ingress: + # Whether to front NGINX Ingress Controller with a cloud + # load balancer (internal == false) or use host network + internal: false + + # Default SSL certificate and key for NGINX Ingress Controller (Optional) + # A wildcard cert for config.env.rootDomain, e.g., *.myfirstpalette.spectrocloud.com + # If left blank, the NGINX ingress controller will generate a self-signed cert (when terminating TLS upstream of ingress-nginx-controller) + certificate: "" + key: "" + + # If ACM is enabled please use grpc as a non internal and bring grpc on different LB. Provide certificate and dns for it. + annotations: {} + # AWS example + # service.beta.kubernetes.io/aws-load-balancer-internal: "true" + # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp + # service.beta.kubernetes.io/aws-load-balancer-ssl-cert: + # service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https" + + # Azure example + # service.beta.kubernetes.io/azure-load-balancer-internal: "true" + # service.beta.kubernetes.io/azure-dns-label-name: myserviceuniquelabel + + # Static IP for the Ingress load balancer service. If empty, a dynamic IP will be generated. + ingressStaticIP: "" + + # For Service like AWS Load Balancer using https we would want to terminate the HTTPS at Load Balancer. + terminateHTTPSAtLoadBalancer: false + nats: + enabled: true + + frps: + frps: + enabled: false + frpHostURL: proxy.sample.spectrocloud.com + server: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURqekNDQW5lZ0F3SUJBZ0lVZTVMdXBBZGljd0Z1SFJpWWMyWEgzNTFEUzJJd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tERW1NQ1FHQTFVRUF3d2RjSEp2ZUhrdWMyRnRjR3hsTG5Od1pXTjBjbTlqYkc5MVpDNWpiMjB3SGhjTgpNakl4TURFME1UTXlOREV5V2hjTk1qY3hNREV6TVRNeU5ERXlXakI3TVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHCkExVUVDQk1DUTBFeEV6QVJCZ05WQkFjVENsTmhiblJoUTJ4aGNtRXhGVEFUQmdOVkJBb1RERk53WldOMGNtOUQKYkc5MVpERUxNQWtHQTFVRUN4TUNTVlF4SmpBa0JnTlZCQU1USFhCeWIzaDVMbk5oYlhCc1pTNXpjR1ZqZEhKdgpZMnh2ZFdRdVkyOXRNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXd5bEt3MmlxClBXM2JrQU0wV3RhaEFLbEppcWFHd05LUDVRRTZ6ZW5NM2FURko3TjIwN0dWcUNGYzJHTDNodmNhTDFranZjeEkKK2lybHpkbm9hcVhUSmV3ZkJiTGs2SGVhZmdXUVp3NHNNeE5QRUVYYlNXYm54Mm03Y2FlbVJiUWZSQWhPWXRvWgpIWG1IMzQ1Q25mNjF0RnhMeEEzb0JRNm1yb0JMVXNOOUh2WWFzeGE5QUFmZUNNZm5sYWVBWE9CVmROalJTN1VzCkN5NmlSRXpEWFgvem1nOG5WWFUwemlrcXdoS3pqSlBJd2FQa2ViaXVSdUJYdEZ0VlQwQmFzS3VqbURzd0lsRFQKVmR4SHRRQUVyUmM4Q2Nhb20yUkpZbTd1aHNEYlo2WVFzS3JiMmhIbU5rNENVWUd5eUJPZnBwbzR2bFd1S2FEcgpsVFNYUXlPN0M0ejM1d0lEQVFBQm8xNHdYREJhQmdOVkhSRUVVekJSZ2dsc2IyTmhiR2h2YzNTSEJIOEFBQUdDCkhYQnliM2g1TG5OaGJYQnNaUzV6Y0dWamRISnZZMnh2ZFdRdVkyOXRnaDhxTG5CeWIzaDVMbk5oYlhCc1pTNXoKY0dWamRISnZZMnh2ZFdRdVkyOXRNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUEvRFJFVm54SWJRdi9uMDEvSQpJd1d0ekhKNGNHOUp6UlB6dmszNUcvRGJOVzZYZ0M3djBoWlFIVHg5bzMrckxoSUFiWTNmbjc1VEtlN3hMRWpiCkI3M3pGWURJSStkYzM5NkQzZU51M2NxRGIvY01kYmlFalhod2ttZk9NRm9qMnpOdHJIdzFsSjA0QlNFMWw1YWgKMDk0Vy9aaEQ2YTVLU3B0cDh1YUpKVmNrejRYMEdRWjVPYjZadGdxZVVxNytqWVZOZ0tLQzJCMW1SNjMyMDNsZwozVFZmZEkrdmI3b292dVdOOFRBVG9qdXNuS25WMmRMeTFBOWViWXYwMEM3WWZ6Q0NhODgrN2dzTGhJaUJjRHBPClJkWjU3QStKanJmSU5IYy9vNm5YWFhDZ2h2YkFwUVk1QnFnMWIzYUpUZERNWThUY0hoQVVaQzB5eU04bXcwMnQKWHRRQwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBd3lsS3cyaXFQVzNia0FNMFd0YWhBS2xKaXFhR3dOS1A1UUU2emVuTTNhVEZKN04yCjA3R1ZxQ0ZjMkdMM2h2Y2FMMWtqdmN4SStpcmx6ZG5vYXFYVEpld2ZCYkxrNkhlYWZnV1FadzRzTXhOUEVFWGIKU1dibngybTdjYWVtUmJRZlJBaE9ZdG9aSFhtSDM0NUNuZjYxdEZ4THhBM29CUTZtcm9CTFVzTjlIdllhc3hhOQpBQWZlQ01mbmxhZUFYT0JWZE5qUlM3VXNDeTZpUkV6RFhYL3ptZzhuVlhVMHppa3F3aEt6akpQSXdhUGtlYml1ClJ1Qlh0RnRWVDBCYXNLdWptRHN3SWxEVFZkeEh0UUFFclJjOENjYW9tMlJKWW03dWhzRGJaNllRc0tyYjJoSG0KTms0Q1VZR3l5Qk9mcHBvNHZsV3VLYURybFRTWFF5TzdDNHozNXdJREFRQUJBb0lCQUFPVVZFeTFOTG9mczdFMgpmZFZVcm10R3I1U2RiVWRJRlYrTDREbzZtWWxQSmxhT0VoWGI0ZlROZDloNEtEWVBmaWwwSnhXcUU0U1RHTmZuCnNUMlRnUVhuQ01LZi8xYk1Lc2M0N3VjVStYYU9XaHJnVFI5UmhkckFjN0duODRLL3hQc0ljL2VZTEhHLzh1QUUKeWUvLzVmRkM2QmpXY0hUM1NkTlZnd3duamJudG5XTXIzTFJBVnJBamZBckxveWUwS0F2YytYdXJLTEVCcmMyVQpjaHlDbitZemJKN0VlSG44UXdQNGdBNXVSK0NCMFJPeFErYXIzS3M5YUhkZTQ1OEVNNEtLMnpUOXA4RWZRc1lFCkFtNUpxWjliR0JEVHV1dEkyNm9GK0pLQ1IzZzhXNERRcHVYRUZoVjlya0pMSm13RDhQb0JaclF6UzZvdmJhdkkKRk42QVM4RUNnWUVBOEcxQzFxZVh4dTQ4aEYxak5MTCswRmxkeWdFem9SMmFoRGJCai8weUZkQVVjU2pYTzk0NAozN1dORTBUUG10WG1Vc3NZTlBTR21XaWI2OUhicEFoMTY3SWVwNE9LaVlZdkozYm1oUC9WNzFvK3M0SWJlSHh1CkVJbWVVckFOZWRoQURVQnZ4c1lXRWxlVlVJSFFRcjY1VHM2ZjIrWkpTKzg4TU05bUorL3BmcmNDZ1lFQXo4MXgKR3JiSE5oak56RjhZMjhiK0hMNW5rdDR0SUdkU3hnbW9PMFFJeGkrQVNZTzB0WW42VFk0ZHI5ZXErMzE3b21ZawpMbDNtNENORDhudG1vYzRvWnM4SUpDQ0IrZjNqcTY4OHdoQU9vVHZ4dDhjZVJqOFRhRHl1SHZwS043OVNsVVd2CjBJd2ZRNDNIemd3SWJiSWhjcTRJVGswanI0VHdWbThia283VElGRUNnWUJoNnUzVXhHN0JHeGZVaE1BNW4waSsKREJkeGhPbkZEV3gzdW1FOHhrN1dxV2NaNnhzMWk3eTRCNVhNS2pNdkNUeURyYWxQTCtOOXFTZ1BjK216TmFybwo4aU1mOENmRStMeE5vMVFoQ0p6Vm5YaDUzVnhZeHJ5QXlidU1TNTFCYVh3MHFYQ2NrT0krV0NNOHBaSHZEUVFsCmYydUZ3SlZMY3NTZDBHbjNpL01ab3dLQmdBY1BzUjg2Uk15MnpROTd6OGx3R3FSNVorV2F2U2ZUdXdGVnhLeTIKNUNGdjdja1J1NnRMbEFEY3FtK1dRWTRvTm5KUFREMXpIV3hTWm5XdjhjM2Z4b212MFZRQThzbSs4ZVNjb05EcgpZTVBqMkpQcEpVTTMwMzRBU2Q1dG5PWUdEMVZaTjk4N1U3aWs4Ynd6dG5tYnl2MHRvc1NlWkc4TGNtdE5mVDllCnNSZnhBb0dCQUpTV1lDellyTlRMNnRUSnh5M2FqWm5jZkxrMEV0eWNCd05FRXZHVzVSVE9LOUFYTE96RzN0eHUKajZqWlRpaUFRU09aaVd0clJHU0U0bEkyQ1MvcjNjd3VuSGlnZlovd1dKZldkZ0JpRnZqOTVFbUVQWUZaRDRobQpkT3l5UHhRRXFTRmprQ21BS2plOFBpTDdpU01GbGhBZTZQWFljQlExdCtzd01UeXBnY3RrCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== + ca: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURNVENDQWhtZ0F3SUJBZ0lVSHhWK0ljVGZHUElzdW8yY3dqQ0Q0Z2RSTFFRd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tERW1NQ1FHQTFVRUF3d2RjSEp2ZUhrdWMyRnRjR3hsTG5Od1pXTjBjbTlqYkc5MVpDNWpiMjB3SGhjTgpNakl4TURFME1UTXlOREV5V2hjTk16WXdOakl5TVRNeU5ERXlXakFvTVNZd0pBWURWUVFEREIxd2NtOTRlUzV6CllXMXdiR1V1YzNCbFkzUnliMk5zYjNWa0xtTnZiVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0MKQVFvQ2dnRUJBSy90WXBHVi9HRURUWnZzL25QQ2lOK0U3K1dOQ21GeU1NQjdkazVOT3JzQWZIaVVvZ1JRVUo0WQptSjhwVmYrSzhTRFBsdGNYcW40WVVTbmxiUERsVlBkWU5zOTEwT3RaS1EwNW96aUtGV2pNbS85NHlLSjVyVzNsCndDNEN0ayttUm9Ib0ZQQS81dmFVbVZHdlVadjlGY0JuL0pKN2F4WnRIQk1PRiticXQ0Zmd0ci9YMWdOeWhPVzUKZTVScGpESkozRjJTVnc5NUpBQSt4a3V3UitFSmVseEtnQVpxdDc0ejB4U2ROODZ0QzNtK0wxRGs2WVVlQWEzZApvM3Rsa3ZkeDV6dUJvSmI2QmpZWEV4UE1PbThRcHFNVWRLK3lDZUdrem9XQStDOUtFdGtVaERCWktENStNWXRZCktVMUh1RXJCbmw2Z3BuWTRlbzJjVTRxdkNwZzZ4S3NDQXdFQUFhTlRNRkV3SFFZRFZSME9CQllFRklKMkRkTjgKc2ZtVjRCT1ZFL0FjZ0VEejArNmlNQjhHQTFVZEl3UVlNQmFBRklKMkRkTjhzZm1WNEJPVkUvQWNnRUR6MCs2aQpNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQWhQVi9RMVl1YWVTOTZVCmhjVGQ4RWdJaHhpbHFiTWlTQm5WaVdrdlJzWk94UUIwNTFScWtwT3g0UTRsckdaOGVJWWc3T0trTTdzejhuTVQKL2pxS21sZDY0MzJCcURCMlNkNVp5ZFdReHAwU1laRTlnVWszYk9KRGtZVXQ4b1cvZDBWeG9uU05LQVN3QmZKaApWV1VZUUlpNm55K0ZZZmtuRFNvRnFlY2Z3SDBQQVUraXpnMkI3KzFkbko5YisyQ21IOUVCallOZ2hoNlFzVlFQCkh2SkdQQURtandPNkJOam5HK0Z3K0Z6cmFXUTNCTjAwb08zUjF6UmgxZERmTTQzR3oxRmZGRW5GSXI5aGFuUnQKWHJFZm8vZWU5bjBLWUFESEJnV1g4dlhuNHZrRmdWRjgwYW9MUUJSQTBxWXErcW1pVlp6YnREeE9ldFEyRWFyTQpyNmVWL0lZPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + service: + annotations: {} + + ui-system: + enabled: true + ui: + nocUI: + enable: true + mapBoxAccessToken: "" # Leave Empty to use Default Access Token from Palette + mapBoxStyledLayerID: "" # Leave Empty to use Default Style Layer ID + + reachSystem: + enabled: false + proxySettings: + http_proxy: "" + https_proxy: "" + no_proxy: "" + ca_crt_path: "" # Set the 'ca_crt_path' parameter to the location of the certificate file on each node. + scheduleOnControlPlane: true + ``` + + + + + + :::warning + + Ensure you have configured the **values.yaml** file with the required parameters before proceeding to the next + steps. + + ::: + +9. This step is only required if you are installing Palette in an environment where a network proxy must be configured + for Palette to access the internet. If you are not using a network proxy, skip to the next step. + + Install the reach-system chart using the following command. Point to the **values.yaml** file you configured in step + eight. + + ```shell + helm upgrade --values palette/values.yaml \ + reach-system extras/reach-system/reach-system-*.tgz --install + ``` + + ```shell hideClipboard + Release "reach-system" does not exist. Installing it now. + NAME: reach-system + LAST DEPLOYED: Mon Jan 29 17:04:23 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 1 + TEST SUITE: None + ``` + +10. Install the Palette Helm Chart using the following command. + + ```shell + helm upgrade --values palette/values.yaml \ + hubble palette/spectro-mgmt-plane-*.tgz --install + ``` + + ```shell hideClipboard + Release "hubble" does not exist. Installing it now. + NAME: hubble + LAST DEPLOYED: Mon Jan 29 17:07:51 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 1 + TEST SUITE: None + ``` + +11. Track the installation process using the command below. Palette is ready when the deployments in the namespaces + `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system`, and `ui-system` reach the _Ready_ state. The + installation takes two to three minutes to complete. + + ```shell + kubectl get pods --all-namespaces --watch + ``` + + :::tip + + For a more user-friendly experience, use the open-source tool [k9s](https://k9scli.io/) to monitor the installation + process. + + ::: + +12. Create a DNS CNAME record that is mapped to the Palette `ingress-nginx-controller` load balancer. You can use the + following command to retrieve the load balancer IP address. You may require the assistance of your network + administrator to create the DNS record. + + ```shell + kubectl get service ingress-nginx-controller --namespace ingress-nginx \ + --output jsonpath='{.status.loadBalancer.ingress[0].hostname}' + ``` + + :::info + + As you create tenants in Palette, the tenant name is prefixed to the domain name you assigned to Palette. For + example, if you create a tenant named `tenant1` and the domain name you assigned to Palette is + `palette.example.com`, the tenant URL will be `tenant1.palette.example.com`. You can create an additional wildcard + DNS record to map all tenant URLs to the Palette load balancer. + + ::: + +13. Use the custom domain name or the IP address of the load balancer to visit the Palette system console. To access the + system console, open a web browser, paste the custom domain URL in the address bar, and append the value `/system`. + + The first time you visit the Palette system console, a warning message about a not-trusted SSL certificate may + appear. This is expected, as you have not yet uploaded your SSL certificate to Palette. You can ignore this warning + message and proceed. + + ![Screenshot of the Palette system console showing Username and Password fields.](/palette_installation_install-on-vmware_palette-system-console.webp) + +14. Log in to the system console using the following default credentials. + + | **Parameter** | **Value** | + | ------------- | --------- | + | Username | `admin` | + | Password | `admin` | + + After login, you will be prompted to create a new password. Enter a new password and save your changes. You will be + redirected to the Palette system console. + +15. After login, a summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a + different SSL certificate, you must upload the SSL certificate, SSL certificate key, and SSL certificate authority + files to Palette. You can upload the files using the Palette system console. Refer to the + [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how + to upload the SSL certificate files to Palette. + + :::warning + + If you plan to deploy host clusters into different networks, you may require a reverse proxy. Check out the + [Configure Reverse Proxy](../../../system-management/reverse-proxy.md) guide for instructions on how to configure a + reverse proxy for Palette. + + ::: + +You now have a self-hosted instance of Palette installed in a Kubernetes cluster. Make sure you retain the +**values.yaml** file, as you may need it for future upgrades. + +## Validate + +Use the following steps to validate the Palette installation. + +1. Open up a web browser and navigate to the Palette system console. To access the system console, open a web browser, + paste the `env.rootDomain` value you provided in the address bar, and append the value `/system` in the following + format: `/system`. You can also use the IP address of the load balancer. + +2. Log in using the credentials you received from our support team. After login, you will be prompted to create a new + password. Enter a new password and save your changes. You will be redirected to the Palette system console. + +3. Open a terminal session and issue the following command to verify the Palette installation. The command should return + a list of deployments in the `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system`, and `ui-system` namespaces. + + ```shell + kubectl get pods --all-namespaces --output custom-columns="NAMESPACE:metadata.namespace,NAME:metadata.name,STATUS:status.phase" \ + | grep -E '^(cp-system|hubble-system|ingress-nginx|jet-system|ui-system)\s' + ``` + + Your output should look similar to the following. + + ```shell hideClipboard + cp-system spectro-cp-ui-689984f88d-54wsw Running + hubble-system auth-85b748cbf4-6drkn Running + hubble-system auth-85b748cbf4-dwhw2 Running + hubble-system cloud-fb74b8558-lqjq5 Running + hubble-system cloud-fb74b8558-zkfp5 Running + hubble-system configserver-685fcc5b6d-t8f8h Running + hubble-system event-68568f54c7-jzx5t Running + hubble-system event-68568f54c7-w9rnh Running + hubble-system foreq-6b689f54fb-vxjts Running + hubble-system hashboard-897bc9884-pxpvn Running + hubble-system hashboard-897bc9884-rmn69 Running + hubble-system hutil-6d7c478c96-td8q4 Running + hubble-system hutil-6d7c478c96-zjhk4 Running + hubble-system mgmt-85dbf6bf9c-jbggc Running + hubble-system mongo-0 Running + hubble-system mongo-1 Running + hubble-system mongo-2 Running + hubble-system msgbroker-6c9b9fbf8b-mcsn5 Running + hubble-system oci-proxy-7789cf9bd8-qcjkl Running + hubble-system packsync-28205220-bmzcg Succeeded + hubble-system spectrocluster-6c57f5775d-dcm2q Running + hubble-system spectrocluster-6c57f5775d-gmdt2 Running + hubble-system spectrocluster-6c57f5775d-sxks5 Running + hubble-system system-686d77b947-8949z Running + hubble-system system-686d77b947-cgzx6 Running + hubble-system timeseries-7865bc9c56-5q87l Running + hubble-system timeseries-7865bc9c56-scncb Running + hubble-system timeseries-7865bc9c56-sxmgb Running + hubble-system user-5c9f6c6f4b-9dgqz Running + hubble-system user-5c9f6c6f4b-hxkj6 Running + ingress-nginx ingress-nginx-controller-2txsv Running + ingress-nginx ingress-nginx-controller-55pk2 Running + ingress-nginx ingress-nginx-controller-gmps9 Running + jet-system jet-6599b9856d-t9mr4 Running + ui-system spectro-ui-76ffdf67fb-rkgx8 Running + ``` + +## Next Steps + +You have successfully installed Palette in a Kubernetes cluster. Your next steps are to configure Palette for your +organization. Start by creating the first tenant to host your users. Use the +[Create a Tenant](../../../system-management/tenant-management.md) page for instructions on how to create a tenant. diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md new file mode 100644 index 0000000000..c02afb7085 --- /dev/null +++ b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md @@ -0,0 +1,369 @@ +--- +sidebar_label: "Environment Setup" +title: "Environment Setup" +description: "Learn how to prepare Palette for an airgap install" +icon: "" +hide_table_of_contents: false +sidebar_position: 20 +tags: ["self-hosted", "enterprise", "airgap", "kubernetes"] +keywords: ["self-hosted", "enterprise"] +--- + +![Overview diagram of the pre-install steps eager-load](/enterprise-version_air-gap-repo_overview-order-diagram-focus.webp) + +This guide provides instructions on how to prepare your airgap environment before installing self-hosted Palette by +completing the required preparatory steps one through four, as shown in the diagram. + +## Prepare for Airgap Installation + +Use the following steps to prepare your airgap environment for a Palette installation. + +:::tip + +Carefully review the [prerequisites](#prerequisites) section before proceeding with the environment setup. Each +prerequisite listed is required for a successful installation. + +::: + +## Prerequisites + +- An x86 Linux jumpbox or bastion host with connectivity to the target platform where you are installing Palette. + +- 30 GB of disk space available for the airgap setup binary and temporary files. The uncompressed airgap content is + approximately 20 GB. + +- An OCI registry such as [Harbor](https://goharbor.io/) or [AWS ECR](https://aws.amazon.com/ecr/) to store Palette + images and packages. The OCI registry must be accessible from the Kubernetes cluster. We have verified the + installation against Harbor and AWS ECR. Other OCI registries may work but have not been tested. + + :::warning + + Ensure the OCI registries are set up with HTTPS. AWS ECR is enabled with HTTPS by default. Harbor requires you to + enable HTTPS. If you are using Harbor, you must enable HTTPS to authenticate with the registry. Refer to the + [Harbor](https://goharbor.io/docs/2.9.0/install-config/configure-https) documentation for guidance. + + ::: + +- An HTTP file server to host the Palette manifest. The file server must be accessible from the target environment where + Palette will be installed. Below is a list of common file servers: + + - [Apache HTTP Server](https://httpd.apache.org/) + + - [Nginx](https://www.nginx.com/) + + - [Caddy](https://caddyserver.com/) + + :::warning + + Take the necessary steps to secure your file server and ensure it can automatically recover from failure. The file + server is a critical component of the airgap installation and must be available post-install for Palette to function + properly. + + ::: + +- To interact with the OCI registry, you must have the following tools installed and available. + + - [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) - Required for AWS ECR. + - [Oras](https://oras.land/docs/installation.html) CLI v1.0.0 - This version is explicitly required for the setup + script. + - [zip](https://linux.die.net/man/3/zip) - Required for the setup script. + - [unzip](https://linux.die.net/man/1/unzip) - Or equivalent for extracting the manifest content from the airgap setup + binary. + - [jq](https://jqlang.github.io/jq/download/) - Command-line JSON processor installed and available. + - [Docker](https://docs.docker.com/get-docker/) - The airgap setup binary requires Docker to be installed and + available. + +## Instructions + +Complete the following steps before deploying the airgap Palette installation. + +1. Log in to the OCI registry where you will host the Palette images and packages. + +2. Create a private repository named `spectro-packs`. This repository will host the Palette Packs. + + - Refer to the [Create Projects](https://goharbor.io/docs/2.0.0/working-with-projects/create-projects/) guide for + information about creating a repository in Harbor. + - Refer to the [Create a repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) + guide for information about creating a repository in AWS ECR. + +3. In your OCI registry, create a public repository named `spectro-images`. The public repositry will host the images + required by Palette. + +4. Download the Certificate Authority (CA) for your OCI registry. You will need to provide the installation process the + CA, otherwise you may encounter errors when authenticating with the OCI registry which could result in an incomplete + install. Skip this step if you are using AWS ECR. + +5. Log in to the Linux environment where you will download the airgap binaries. This step requires internet access. + +6. Download the airgap setup binary. Our support team will provide you with the proper version and the necessary + credentials. Replace the commands below with the recommended version and credentials provided by our support team. + + ```shell + VERSION=X.X.X + ``` + + ```shell + curl --user XXXXX:YYYYYYY https://software-private.spectrocloud.com/airgap/$VERSION/airgap-v$VERSION.bin \ + --output airgap-v$VERSION.bin + ``` + +7. Update the airgap setup binary permissions to allow execution. Replace the file name below with the name of the + airgap setup binary you downloaded. + + ```shell + chmod +x airgap-v$VERSION.bin + ``` + +8. Copy or move the airgap binary to another Linux environment inside your airgap environment. Use any approved method + to transfer the binary to the airgap environment. + +9. Log in to the Linux environment inside your airgap environment where you copied the airgap setup binary. + +10. Authenticate with your OCI registry and acquire credentials to both repositories you created earlier. You will need + these credentials when deploying the airgap Palette installation. + + + + + + Use `oras` to log in to your OCI registry. Replace the values below with your environment configuration values. + Check out the [oras login](https://oras.land/docs/commands/oras_login) documentation for information about + additional CLI flags and examples. + + ```shell + oras login X.X.X.X --user 'yourUserNameHere' --password 'yourPasswordHere' + ``` + + If you are using a Harbor registry with a self-signed certificate, you will need to add the `--insecure` flag to the + `oras` command. + + ```shell + oras login X.X.X.X --insecure --user 'yourUserNameHere' --password 'yourPasswordHere' + ``` + + + + + + You can acquire the AWS ECR authentication command from the AWS ECR console. From the ECR repository details page, + click on the **View push commands** button to access the command. Refer to the + [AWS ECR Authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) + documentation for more information. + + Use the following command to authenticate with AWS ECR. The output of the `aws` command is passed to `oras` to + authenticate with the ECR registry. Replace the values below with your environment configuration values. + + ```shell + aws ecr get-login-password --region xxxxx | oras login --username AWS --password-stdin 1234567890.dkr.ecr.us-east-1.amazonaws.com + ``` + + For the public image repository, use the `docker` CLI instead of using `oras`. Replace the values below with your + environment configuration values. + + ```shell + aws ecr-public get-login-password --region xxxxx | docker login --username AWS --password-stdin public.ecr.aws/xxxxxxx + ``` + + + + + + :::tip + + Be aware of the timeout period for the authentication token. The process of uploading images and packages to the OCI + registry can take a approximately an hour. If the authentication token expires, you will need to re-authenticate to + the OCI registry and restart the upload process. + + ::: + +11. The airgap setup binary requires a set of environment variables to be available and populated. Depending on what OCI + registry you are using, the environment variables will be different. Select the OCI registry you are using and + populate the environment variables accordingly. + + + + + + - `OCI_IMAGE_REGISTRY`: The IP address or domain name of the OCI registry. + - `OCI_PACK_BASE`: The namespace or repository name that hosts the Palette packs. + - `OCI_PACK_REGISTRY`: The IP address or domain name of the OCI registry. + - `OCI_IMAGE_BASE`: The namespace or repository name that hosts the Palette images. + + ```shell + export OCI_IMAGE_REGISTRY= + export OCI_PACK_BASE=spectro-packs + export OCI_PACK_REGISTRY= + export OCI_IMAGE_BASE=spectro-images + ``` + + Consider the following example. + + ```shell hideClipboard + export OCI_IMAGE_REGISTRY=example.internal.com + export OCI_PACK_BASE=spectro-packs + export OCI_PACK_REGISTRY=10.10.100.48 + export OCI_IMAGE_BASE=spectro-images + ``` + + + + + + - `ECR_IMAGE_REGISTRY`: The IP address or domain name of the public OCI registry for images. + - `ECR_IMAGE_BASE`: The namespace or repository name that hosts the Palette images. + - `ECR_IMAGE_REGISTRY_REGION`: The AWS region where the ECR registry is located. + - `ECR_PACK_BASE`: The namespace or repository name that hosts the Palette packs. + - `ECR_PACK_REGISTRY`: The IP address or domain name of the OCI registry. + - `ECR_PACK_REGISTRY_REGION`: The AWS region where the ECR registry is located. + + ```shell + export ECR_IMAGE_REGISTRY= + export ECR_IMAGE_BASE=spectro-images + export ECR_IMAGE_REGISTRY_REGION= + export ECR_PACK_REGISTRY= + export ECR_PACK_BASE=spectro-packs + export ECR_PACK_REGISTRY_REGION= + ``` + + Consider the following example. + + ```shell hideClipboard + export ECR_IMAGE_REGISTRY=public.ecr.aws/1234567890 + export ECR_IMAGE_BASE=spectro-images + export ECR_IMAGE_REGISTRY_REGION=us-east-1 + export ECR_PACK_REGISTRY=123456789.dkr.ecr.us-east-1.amazonaws.com + export ECR_PACK_BASE=spectro-packs + export ECR_PACK_REGISTRY_REGION=us-east-1 + ``` + + + + + +12. Start the airgap setup binary. Replace the file name below with the name of the airgap setup binary you downloaded. + + ```shell + ./airgap-v$VERSION.bin + ``` + + Upon completion, a success message will be displayed. The output in the example below is condensed for brevity. + + ```shell hideClipboard {10} + Verifying archive integrity... 100% MD5 checksums are OK. All good. + Uncompressing Airgap Setup - Version 4.0.17 100% + Setting up Packs + - Pushing Pack cni-calico:3.25.1 + ... + Setting up Images + - Pushing image docker.io/kindest/kindnetd:v20230227-15197099 + - Pushing image gcr.io/cloud-provider-vsphere/cpi/release/manager:v1.22.8 + ..... + Preparing Manifests Archive + Manifests are available in /tmp/spectro-manifests-1696971110.zip. Extract the archive to a file server to serve as a Spectro Cloud Repository + Setup Completed + ``` + + :::info + + If you encounter an error during the airgap setup process, verify the required environment variables are set and + populated correctly. If you are still having issues, reach out to our support team for assistance. + + ::: + +13. Move the manifest file located in your temporary directory to the location of your file server. Unzip the manifest + file to a folder accessible by the file server. Replace the file name below with the name of the manifest file + provided to you by the airgap setup. + + ```shell + unzip spectro-manifests-XXXXXXXXXXXX.zip -d /target/folder + ``` + + :::tip + + If you want to get started quickly with a file server, install + [Caddy](https://caddyserver.com/docs/quick-starts/static-files) or use Python3's + [http sever](https://docs.python.org/3/library/http.server.html) and issue one of the following commands in the + folder where you unzipped the manifest content. Each command will start a file server on port 2015. + + ```shell + caddy file-server --listen :2015 --browse + ``` + + ```shell + python3 -m http.server 2015 + ``` + + We do not recommend serving the manifest content over HTTP, but it is an option if you want to get started quickly. + For production workloads, enable HTTPS on your file server. + + ::: + +14. Review the additional packs available for download. The supplemental packs are optional and not required for a + successful installation. However, to create cluster profiles you may require several of the packs available for + download. Refer to the [Additional Packs](../../airgap/supplemental-packs.md) resource for a list of available + packs. + +15. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the + upload process. This step requires internet access, so you may have to download the binaries on a separate machine + outside the airgap environment and transfer them to the airgap environment using an approved method. + + In the example below, the `airgap-pack-aws-alb-2.5.1.bin` binary permissions are updated to allow execution and the + binary is started. + + ```shell + chmod +x airgap-pack-aws-alb-2.5.1.bin && \ + ./airgap-pack-aws-alb-2.5.1.bin + ``` + + ```shell hideClipboard + Verifying archive integrity... 100% MD5 checksums are OK. All good. + Uncompressing Airgap Pack - aws-alb Version 4.0.17 100% + Setting up Packs + - Pushing Pack aws-alb:2.5.1 + Setting up Images + Setup Completed + ``` + +16. Repeat step 14 for each pack you want to install. + +You have now completed the preparation steps for an airgap installation. Check out the [Validate](#validate) section to +ensure the airgap setup process completed successfully. + +## Validate + +Use the following steps to validate the airgap setup process completed successfully. + +1. Log in to your OCI registry and verify the Palette images and packs are available. + +2. Verify the manifest file is accessible from the file server. The manifest file is required for the Palette + installation process. The screenshot below is an example of a file server hosting the unzipped manifest content. The + example shows Caddy as the file server. + +![Example of a file server hosting the unzipped manifest content](/enterprise-version_airgap_airgap-instructions_file-server-caddy.webp) + +3. Ensure your file server is accessible from the environment in which you are installing Palette. Use the following + command to verify the file server can access the manifest content. Replace the hostname or IP address below with your + file server hostname or IP address. + + ```shell + curl http://:/roar/nickfury/versions.yaml + ``` + + ```yaml hideClipboard + versions: + - version: "3.3" + filepath: "/roar/nickfury/3.3/version.yaml" + patchVersionsFilepath: "/roar/nickfury/3.3/versions.yaml" + - version: "3.4" + filepath: "/roar/nickfury/3.4/version.yaml" + patchVersionsFilepath: "/roar/nickfury/3.4/versions.yaml" + - version: "4.0" + filepath: "/roar/nickfury/4.0/version.yaml" + patchVersionsFilepath: "/roar/nickfury/4.0/versions.yaml" + ``` + +## Next Steps + +You are now ready to install the airgap self-hosted Palette. You will specify your OCI registry and file server during +the installation process. Refer to the [Install Palette](./airgap-install.md) guide for detailed guidance on installing +Palette. diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md index 5b53071d75..9bed8b5b29 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md +++ b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md @@ -14,8 +14,20 @@ three-node cluster is created. You use a Helm chart our support team provides to To get started with Palette on Kubernetes, refer to the [Install Instructions](install.md) guide. +## Get Started + +Select the scenario and the corresponding guide to install Palette on Kubernetes. If you are installing Palette in an +airgap environment, refer to the environment preparation guide before installing Palette. + +| Scenario | Environment Preparation Guide | Install Guide | +| -------------------------------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------- | +| Install Palette on Kubernetes with internet connectivity | None | [Install Instructions](install.md) | +| Install Palette on Kubernetes in an airgap environment | [Environment Setup](./airgap-install/kubernetes-airgap-instructions.md) | [Airgap Install Instructions](./airgap-install/install.md) | + ## Resources -- [Install Instructions](install.md) +- [Non-Airgap Install Instructions](install.md) + +- [Airgap Install Instructions](./airgap-install/install.md) - [Helm Configuration Reference](palette-helm-ref.md) diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install.md b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install.md index 821be447f5..fedba846da 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install.md +++ b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Instructions" -title: "Instructions" +sidebar_label: "Non-Airgap Installation" +title: "Install Non-Airgap Self-Hosted Palette" description: "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm Chart." icon: "" hide_table_of_contents: false @@ -11,20 +11,8 @@ keywords: ["self-hosted", "enterprise"] You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes cluster in your production environment. -This installation method is common in secure environments with restricted network access that prohibits using Palette -SaaS. Review our [architecture diagrams](../../../architecture/networking-ports.md) to ensure your Kubernetes cluster -has the necessary network connectivity for Palette to operate successfully. - ## Prerequisites -:::warning - -If you are installing an airgap Palette, ensure you complete all the airgap pre-install steps before proceeding with the -installation. Refer to the [Kubernetes Airgap Instructions](../airgap/kubernetes-airgap-instructions.md) guide for more -information. - -::: - - [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) is installed and available. - [Helm](https://helm.sh/docs/intro/install/) is installed and available. @@ -85,8 +73,6 @@ information. - Access to the Palette Helm Charts. Refer to the [Access Palette](../../enterprise-version.md#access-palette) for instructions on how to request access to the Helm Chart -
- :::warning Do not use a Palette-managed Kubernetes cluster when installing Palette. Palette-managed clusters contain the Palette @@ -136,10 +122,6 @@ your environment. Reach out to our support team if you need assistance. parameters before installing Palette. You can learn more about the parameters in the **values.yaml** file in the [Helm Configuration Reference](palette-helm-ref.md) page. - - - - | **Parameter** | **Description** | **Type** | | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | | `env.rootDomain` | The URL name or IP address you will use for the Palette installation. | string | @@ -151,9 +133,10 @@ your environment. Reach out to our support team if you need assistance. Save the **values.yaml** file after you have populated the required parameters mentioned in the table. Expand the following sections to review an example of the **values.yaml** file with the required parameters highlighted. -
+ + - Example - values.yaml + ```yaml {53,77-85,97-102} ######################### @@ -378,32 +361,11 @@ your environment. Reach out to our support team if you need assistance. scheduleOnControlPlane: true ``` -
-
- + - | **Parameter** | **Description** | **Type** | - | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | - | `env.rootDomain` | The URL name or IP address you will use for the Palette installation. | string | - | `config.installationMode` | The installation mode for Palette. The values can be `connected` or `airgap`. Set this value to `airgap`. | string | - | `ociPackEcrRegistry` | The OCI registry credentials for the Palette FIPS packs repository. | object | - | `ociImageRegistry` | The OCI registry credentials for the Palette images repository. | object | - | `ociImageRegistry.mirrorRegistries` | Replace the placeholder string with the respective values of your OCI registry repository that is hosting the images. | - | `imageSwapConfig.isEKSCluster` | Set this value to `false` if you are NOT installing Palette on an EKS cluster. | boolean | - | `scar` | Specify your HTTP file server values. If your HTTP file server requires credentials ensure the provided values are base64 encoded. Example of the string "admin" in base64 encoding - `YWRtaW4=`. | object | - | `ingress.enabled` | Whether to install the Nginx ingress controller. Set this to `false` if you already have an Nginx controller deployed in the cluster. | boolean | - | `reach-system` | Set `reach-system.enabled` to `true` and configure the `reach-system.proxySettings` parameters for Palette to use a network proxy in your environment | object | - - Save the **values.yaml** file after you have populated the required parameters mentioned in the table. Expand the - following sections to review an example of the **values.yaml** file with the required parameters highlighted. - -
- - Example - values.yaml - - ```yaml {23,53,77-85,87-95,97-102,109} + ```yaml {53,68-75,110-115} ######################### # Spectro Cloud Palette # ######################### @@ -426,7 +388,7 @@ your environment. Reach out to our support team if you need assistance. storageClass: "" # leave empty to use the default storage class config: - installationMode: "airgap" #values can be connected or airgap. + installationMode: "connected" #values can be connected or airgap. # SSO SAML Configuration (Optional for self-hosted type) sso: @@ -463,47 +425,60 @@ your environment. Reach out to our support team if you need assistance. cluster: stableEndpointAccess: false - # registry: - # endpoint: "" # - # name: "" # - # password: "" # - # username: "" # - # insecureSkipVerify: false - # caCert: "" + # registry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # insecureSkipVerify: false + # caCert: "" + + ociPackRegistry: + endpoint: "example.harbor.org" # + name: "Palette Packs OCI" # + password: "**************" # + username: "**************" # + baseContentPath: "spectro-packs" # + insecureSkipVerify: false + caCert: "" + + # ociPackEcrRegistry: + # endpoint: "" # + # name: "" # + # accessKey: "" # + # secretKey: "" # + # baseContentPath: "" # + # isPrivate: true + # insecureSkipVerify: false + # caCert: "" - # ociPackRegistry: - # endpoint: "" # - # name: "" # - # password: "" # - # username: "" # - # baseContentPath: "" # - # insecureSkipVerify: false - # caCert: "" + # ociImageRegistry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # baseContentPath: "" # + # insecureSkipVerify: false + # caCert: "" + # mirrorRegistries: "" - ociPackEcrRegistry: - endpoint: "123456789.dkr.ecr.us-east-1.amazonaws.com" # - name: "Airgap Packs OCI" # - accessKey: "*************" # - secretKey: "*************" # - baseContentPath: "spectro-packs" # - isPrivate: true - insecureSkipVerify: true - caCert: "" - - ociImageRegistry: - endpoint: "public.ecr.aws/123456789" # - name: "Airgap Image OCI" # - password: "" # - username: "" # - baseContentPath: "spectro-images" # - insecureSkipVerify: true - caCert: "" - mirrorRegistries: "docker.io::public.ecr.aws/v2/123456789/spectro-images,gcr.io::public.ecr.aws/v2/123456789/spectro-images,ghcr.io::public.ecr.aws/v2/123456789/spectro-images,k8s.gcr.io::public.ecr.aws/v2/123456789/spectro-images,registry.k8s.io::public.ecr.aws/v2/123456789/spectro-images,quay.io::public.ecr.aws/v2/123456789/spectro-images" + # Instruction for mirrorRegistries. + # ---------------------------------- + # Please provide the registry endpoint for the following registries, separated by double colons (::): + # docker.io + # gcr.io + # ghcr.io + # k8s.gcr.io + # registry.k8s.io + # quay.io + # For each registry, follow this example format: + # docker.io::/v2/,gcr.io::/v2/,ghcr.io::/v2/,k8s.gcr.io::/v2/,registry.k8s.io::/v2/,quay.io::/v2/ + # Replace with your actual registry endpoint and , , , , , and with the specific endpoint details for each registry. scar: - endpoint: "http://10.15.20.15:2015" - username: "YWRtaW4=" - password: "YWRtaW4=" + endpoint: "https://saas-repo.console.spectrocloud.com" + username: "**********" + password: "**********" insecureSkipVerify: true caCert: "" @@ -622,115 +597,72 @@ your environment. Reach out to our support team if you need assistance. http_proxy: "" https_proxy: "" no_proxy: "" - ca_crt_path: "" # Set the 'ca_crt_path' parameter to the location of the certificate file on each node. + ca_crt_path: "" # Set the 'ca_crt_path' parameter to the location of the certificate file on each node. This file should contain the Proxy CA Certificate, in case the Proxy being used requires a certificate. scheduleOnControlPlane: true ``` -
-
-:::warning - -Ensure you have configured the **values.yaml** file with the required parameters before proceeding to the next steps. - -::: - -5. This step only applies to those who are installing an airgap Palette or who are using a self-hosted OCI registry with - registry caching enabled. Otherwise, skip to the next step. - - Go ahead and install the image-swap chart using the following command. Point to the **values.yaml** file you - configured in the previous step. - - ```shell - helm upgrade --values palette/values.yaml \ - image-swap extras/image-swap/image-swap-*.tgz --install - ``` - - ```shell hideClipboard - Release "image-swap" does not exist. Installing it now. - NAME: image-swap - LAST DEPLOYED: Mon Jan 29 17:04:23 2024 - NAMESPACE: default - STATUS: deployed - REVISION: 1 - TEST SUITE: None - ``` - -6. This step is only required if you are installing Palette in an environment where a network proxy must be configured - for Palette to access the internet. If you are not using a network proxy, skip to the next step. - - Install the reach-system chart using the following command. Point to the **values.yaml** file you configured in the - previous step. + :::warning - ```shell - helm upgrade --values palette/values.yaml \ - reach-system extras/reach-system/reach-system-*.tgz --install - ``` + Ensure you have configured the **values.yaml** file with the required parameters before proceeding to the next + steps. - ```shell hideClipboard - Release "reach-system" does not exist. Installing it now. - NAME: reach-system - LAST DEPLOYED: Mon Jan 29 17:04:23 2024 - NAMESPACE: default - STATUS: deployed - REVISION: 1 - TEST SUITE: None - ``` + ::: -7. Install the Palette Helm Chart using the following command. +5. Install the Palette Helm Chart using the following command. - ```shell - helm upgrade --values palette/values.yaml \ - hubble palette/spectro-mgmt-plane-*.tgz --install - ``` + ```shell + helm upgrade --values palette/values.yaml \ + hubble palette/spectro-mgmt-plane-*.tgz --install + ``` - ```shell hideClipboard - Release "hubble" does not exist. Installing it now. - NAME: hubble - LAST DEPLOYED: Mon Jan 29 17:07:51 2024 - NAMESPACE: default - STATUS: deployed - REVISION: 1 - TEST SUITE: None - ``` + ```shell hideClipboard + Release "hubble" does not exist. Installing it now. + NAME: hubble + LAST DEPLOYED: Mon Jan 29 17:07:51 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 1 + TEST SUITE: None + ``` -8. Track the installation process using the command below. Palette is ready when the deployments in the namespaces - `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system` , and `ui-system` reach the _Ready_ state. The - installation takes between two to three minutes to complete. +6. Track the installation process using the command below. Palette is ready when the deployments in the namespaces + `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system` , and `ui-system` reach the _Ready_ state. The + installation takes between two to three minutes to complete. - ```shell - kubectl get pods --all-namespaces --watch - ``` + ```shell + kubectl get pods --all-namespaces --watch + ``` - :::tip + :::tip - For a more user-friendly experience, use the open-source tool [k9s](https://k9scli.io/) to monitor the installation - process. + For a more user-friendly experience, use the open-source tool [k9s](https://k9scli.io/) to monitor the installation + process. - ::: + ::: -9. Create a DNS CNAME record that is mapped to the Palette `ingress-nginx-controller` load balancer. You can use the - following command to retrieve the load balancer IP address. You may require the assistance of your network - administrator to create the DNS record. +7. Create a DNS CNAME record that is mapped to the Palette `ingress-nginx-controller` load balancer. You can use the + following command to retrieve the load balancer IP address. You may require the assistance of your network + administrator to create the DNS record. - ```shell - kubectl get service ingress-nginx-controller --namespace ingress-nginx \ - --output jsonpath='{.status.loadBalancer.ingress[0].hostname}' - ``` + ```shell + kubectl get service ingress-nginx-controller --namespace ingress-nginx \ + --output jsonpath='{.status.loadBalancer.ingress[0].hostname}' + ``` - :::info + :::info - As you create tenants in Palette, the tenant name is prefixed to the domain name you assigned to Palette. For - example, if you create a tenant named `tenant1` and the domain name you assigned to Palette is `palette.example.com`, - the tenant URL will be `tenant1.palette.example.com`. You can create an additional wildcard DNS record to map all - tenant URLs to the Palette load balancer. + As you create tenants in Palette, the tenant name is prefixed to the domain name you assigned to Palette. For + example, if you create a tenant named `tenant1` and the domain name you assigned to Palette is + `palette.example.com`, the tenant URL will be `tenant1.palette.example.com`. You can create an additional wildcard + DNS record to map all tenant URLs to the Palette load balancer. - ::: + ::: -10. Use the custom domain name or the IP address of the load balancer to visit the Palette system console. To access the +8. Use the custom domain name or the IP address of the load balancer to visit the Palette system console. To access the system console, open a web browser and paste the custom domain URL in the address bar and append the value `/system`. Replace the domain name in the URL with your custom domain name or the IP address of the load balancer. Alternatively, you can use the load balancer IP address with the appended value `/system` to access the system @@ -742,17 +674,17 @@ Ensure you have configured the **values.yaml** file with the required parameters ![Screenshot of the Palette system console showing Username and Password fields.](/palette_installation_install-on-vmware_palette-system-console.webp) -11. Log in to the system console using the following default credentials. +9. Log in to the system console using the following default credentials. | **Parameter** | **Value** | | ------------- | --------- | | Username | `admin` | | Password | `admin` | -After login, you will be prompted to create a new password. Enter a new password and save your changes. You will be -redirected to the Palette system console. + After login, you will be prompted to create a new password. Enter a new password and save your changes. You will be + redirected to the Palette system console. -11. After login, a summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a +10. After login, a summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to Palette. You can upload the files using the Palette system console. Refer to the [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md index 861eee919c..9dda4d0d9d 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md +++ b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Helm Chart Install Reference" -title: "Helm Chart Install References" +sidebar_label: "Helm Configuration Reference" +title: "Helm Chart Configuration Reference" description: "Reference for Palette Helm Chart installation parameters." icon: "" hide_table_of_contents: false @@ -14,8 +14,6 @@ The Helm chart allows you to customize values in the **values.yaml** file. This available in the **values.yaml** file from the Helm Chart for your installation. To learn how to install Palette using the Helm Chart, refer to the [Palette Helm install](install.md) guide. -
- ### Required Parameters The following parameters are required for a successful installation of Palette. @@ -35,7 +33,7 @@ information, refer to the [Image Swap Configuration](#image-swap-configuration) ### MongoDB -Palette uses MongoDB Enterprise as its internal database and supports two modes of deployment:

+Palette uses MongoDB Enterprise as its internal database and supports two modes of deployment: - MongoDB Enterprise deployed and active inside the cluster. @@ -158,8 +156,6 @@ config: rootDomain: "" ``` -
- :::warning As you create tenants in Palette, the tenant name is prefixed to the domain name you assigned to Palette. For example, @@ -190,8 +186,6 @@ Palette to download the required images. You must configure at least one Open Co Palette. You must also provide the credentials for the Spectro Cloud Artifact Repository (SCAR) to download the required FIPS images. -
- #### OCI Registry Palette requires access to an OCI registry that contains all the required FIPS packs. You can host your own OCI registry @@ -290,8 +284,6 @@ SCAR credentials are required to download the necessary FIPS manifests. Our supp | `scar.insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the SCAR connection. | Boolean | `false` | | `scar.caCert` | The base64-encoded certificate authority (CA) certificate for SCAR. | String | `""` | -
- ```yaml config: scar: @@ -315,8 +307,6 @@ option, otherwise, Palette will ignore the configuration. | `imageSwapConfig` | The image swap configuration for specific environments. | String | `""` | | `imageSwapConfig.isEKSCluster` | Specifies whether the cluster is an Amazon EKS cluster. Set to `false` if the Kubernetes cluster is not an EKS cluster. | Boolean | `true` | -
- ```yaml config: imageSwapImages: @@ -342,8 +332,6 @@ and is not required for most deployments. Speak with your support representative | `nats.annotations` | A map of key-value pairs that specifies load balancer annotations for NATS. You can use annotations to change the behavior of the load balancer and the Nginx configuration. This is an advanced setting. We recommend you consult with your assigned support team representative prior to modification. | Object | `{}` | | `nats.natsStaticIP` | Specify a static IP address for the NATS load balancer service. If empty, a dynamic IP address will be assigned to the load balancer. | String | `""` | -
- ```yaml nats: enabled: true diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/_category_.json b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/_category_.json new file mode 100644 index 0000000000..c3460c6dbd --- /dev/null +++ b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 30 +} diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/airgap-install.md b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/airgap-install.md new file mode 100644 index 0000000000..8bdeb67848 --- /dev/null +++ b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/airgap-install.md @@ -0,0 +1,67 @@ +--- +sidebar_label: "Airgap Installation" +title: "Airgap Installation" +description: "Learn how to deploy self-hosted Palette in an airgapped environment." +icon: "" +hide_table_of_contents: false +sidebar_position: 0 +tags: ["self-hosted", "enterprise", "airgap"] +keywords: ["self-hosted", "enterprise"] +--- + +You can install Palette in an airgap VMware vSphere environment. An airgap environment lacks direct access to the +internet and is intended for environments with strict security requirements. + +The installation process for an airgap environment is different due to the lack of internet access. Before the primary +Palette installation steps, you must download the following artifacts. + +- Palette platform manifests and required platform packages. + +- Container images for core platform components and third-party dependencies. + +- Palette packs. + +The other significant change is that Palette's default public OCI registry is not used. Instead, a private OCI registry +is utilized for storing images and packs. + +## Overview + +Before you can install Palette in an airgap environment, you must complete all the required pre-installation steps. The +following diagram outlines the major pre-installation steps for an airgap installation. + +![An architecture diagram outlining the five different installation phases](/enterprise-version_air-gap-repo_overview-order-diagram.webp) + +1. Download the airgap setup binary from the URL provided by the support team. The airgap setup binary is a + self-extracting archive that contains the Palette platform manifests, images, and required packs. The airgap setup + binary is a one-time use binary for uploading Palette images and packs to your OCI registry. You will not use the + airgap setup binary again after the initial installation. This step must be completed in an environment with internet + access. + +2. Move the airgap setup binary to the airgap environment. The airgap setup binary is used to extract the manifest + content and upload the required images and packs to your private OCI registry. Start the airgap setup binary in a + Linux Virtual Machine (VM). + +3. The airgap script will push the required images and packs to your private OCI registry. + +4. Extract the manifest content from the airgap setup binary. The manifest content must be hosted on a web server that + is accessible from the airgap environment. You can use the same Linux VM from step 2 to host the manifest content or + use a different web server. + +5. Install Palette using the Palette CLI or the Kubernetes Helm chart. + +Configure your Palette environment + +## Get Started + +To get started with an airgap Palette installation, begin by reviewing the +[Environment Setup](./vmware-vsphere-airgap-instructions.md) guide. + +## Resources + +- [Environment Setup](./vmware-vsphere-airgap-instructions.md) + +- [Airgap Install Checklist](./checklist.md) + +- [Airgap Install](./airgap-install.md) + +- [Additional Packs](../../airgap/supplemental-packs.md) diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/checklist.md b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/checklist.md new file mode 100644 index 0000000000..1bc8bed37d --- /dev/null +++ b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/checklist.md @@ -0,0 +1,27 @@ +--- +sidebar_label: "Checklist" +title: "Checklist" +description: + "An airgap installation of Palette requires a few steps to be completed before the installation can begin. This + checklist will help you prepare for the installation." +icon: "" +sidebar_position: 10 +hide_table_of_contents: false +tags: ["palette", "self-hosted", "airgap"] +keywords: ["self-hosted", "enterprise"] +--- + +Use the following checklist to ensure you have completed all the required steps before deploying the airgap Palette +installation. + +- [ ] Create a vSphere VM and Template folder named `spectro-templates`. + +- [ ] Import the Operating System and Kubernetes distribution OVA required for the installation and place the OVA in the + `spectro-templates` folder. + +- [ ] Append the `r_` prefix and remove the `.ova` suffix from the OVA name after the import. + +- [ ] Start the airgap setup binary and verify the setup is completed successfully. + +- [ ] Review the list of [pack binaries](../../airgap/supplemental-packs.md) to download and upload to your OCI + registry. diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/install.md b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/install.md new file mode 100644 index 0000000000..db92a3a87f --- /dev/null +++ b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/install.md @@ -0,0 +1,395 @@ +--- +sidebar_label: "Install Palette" +title: "Install Palette" +description: "Learn how to install Palette on VMware." +icon: "" +sidebar_position: 30 +hide_table_of_contents: false +tags: ["palette", "self-hosted", "vmware"] +keywords: ["self-hosted", "enterprise"] +--- + +Palette can be installed on VMware vSphere in an airgap environment. When you install Palette, a three-node cluster is +created. You use the interactive Palette CLI to install Palette on VMware vSphere. Refer to +[Access Palette](../../../enterprise-version.md#access-palette) for instructions on requesting the required credentials +and assets. + +:::warning + +Complete the [Environment Setup](./vmware-vsphere-airgap-instructions.md) steps before proceeding with the installation. + +::: + +## Prerequisites + +- An AMD64 Linux environment with connectivity to the VMware vSphere environment. + +- [Docker](https://docs.docker.com/engine/install/) or equivalent container runtime installed and available on the Linux + host. + +- Palette CLI installed and available. Refer to the Palette CLI + [Install](../../../../palette-cli/install-palette-cli.md#download-and-setup) page for guidance. + +- Review the required VMware vSphere [permissions](../vmware-system-requirements.md). Ensure you have created the proper + custom roles and zone tags. + +- We recommended the following resources for Palette. Refer to the + [Palette size guidelines](../../install-palette.md#size-guidelines) for additional sizing information. + + - 8 CPUs per VM. + + - 16 GB Memory per VM. + + - 100 GB Disk Space per VM. + +- The following network ports must be accessible for Palette to operate successfully. + + - TCP/443: Inbound to and outbound from the Palette management cluster. + + - TCP/6443: Outbound traffic from the Palette management cluster to the deployed cluster's Kubernetes API server. + +- The network IP address range you specify during the installation must not overlap with any existing IP addresses in + your environment. The IP address range must also have connectivity to the VMware vSphere environment. + +- Ensure you have an SSL certificate that matches the domain name you will assign to Palette. You will need this to + enable HTTPS encryption for Palette. Reach out to your network administrator or security team to obtain the SSL + certificate. You need the following files: + + - x509 SSL certificate file in base64 format. + + - x509 SSL certificate key file in base64 format. + + - x509 SSL certificate authority file in base64 format. This file is optional. + +- Zone tagging is required for dynamic storage allocation across fault domains when provisioning workloads that require + persistent storage. Refer to [Zone Tagging](../../install-on-vmware/vmware-system-requirements.md) for information. + +- Assigned IP addresses for application workload services, such as Load Balancer services. + +- Shared Storage between VMware vSphere hosts. + +:::info + +Self-hosted Palette installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not +require a separate, user-installed PCG. However, you can create additional PCGs as needed to support provisioning into +remote data centers that do not have a direct incoming connection from the Palette console. To learn how to install a +PCG on VMware, check out the [VMware](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. + +::: + +## Deployment + +The video below demonstrates the installation wizard and the prompts you will encounter. Take a moment to watch the +video before you begin the installation process. Make sure to use values that are appropriate for your environment. Use +the **three-dots Menu** in the lower right corner of the video to expand the video to full screen and to change the +playback speed. + + + +Use the following steps to install Palette. + +1. Log in to your vCenter environment. + +2. Create a vSphere VM and Template folder with the name `spectro-templates`. Ensure this folder is accessible by the + user account you will use to deploy the airgap VerteX installation. + +3. Use the URL below to import the Operating System and Kubernetes distribution OVA required for the install. Place the + OVA in the `spectro-templates` folder. + + ```url + https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12711-0.ova + ``` + +4. Append an `r_` prefix to the OVA name and remove the `.ova` suffix after the import. For example, the final output + should look like `r_u-2204-0-k-12711-0`. This naming convention is required for the install process to identify the + OVA. Refer to the [Supplement Packs](../../airgap/supplemental-packs.md#additional-ovas) page for a list of + additional OVAs you can download and upload to your vCenter environment. + + :::tip + + You can also use the **Deploy OVF Template** wizard in vSphere to make the OVA available in the `spectro-templates` + folder. Append the `r_` prefix, and remove the `.ova` suffix when assigning a name and target location. You can + terminate the deployment after the OVA is available in the `spectro-templates` folder. Refer to the + [Deploy an OVF or OVA Template](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vm-administration/GUID-AFEDC48B-C96F-4088-9C1F-4F0A30E965DE.html) + guide for more information about deploying an OVA in vCenter. + + ::: + +5. Open a terminal window and invoke the Palette CLI by using the `ec` command to install the enterprise cluster. The + interactive CLI prompts you for configuration details and then initiates the installation. For more information + about the `ec` subcommand, refer to [Palette Commands](../../../../palette-cli/commands/commands.md). + + ```bash + palette ec install + ``` + +6. At the **Enterprise Cluster Type** prompt, choose **Palette**. + +7. Type `y` if you want to use Ubuntu Pro. Otherwise, type `n`. If you choose to use Ubuntu Pro, you will be prompted + to enter your Ubuntu Pro token. + +8. Provide the URL or IP address of the Spectro Cloud Repository that is provided to you by the airgap setup script + +
+ + :::info + + If you are using the Palette CLI from inside an airgap support VM, the CLI will automatically detect the airgap + environment and prompt you to **Use local, air-gapped Spectro Cloud Artifact Repository (SCAR) configuration**. Type + `y` to use the local resources and skip filling in the repository URL and credentials. + + ::: + +9. Enter the repository credentials. Our support team provides the credentials you need to access the public Spectro + Cloud repository. Airgap installations, provide the credentials to your private repository provided to you by the + airgap setup script . + +10. Choose `VMware vSphere` as the cloud type. This is the default. + +11. Type an enterprise cluster name, or use the default value. Your VM instances will use this name as a prefix. + +12. When prompted, enter the information listed in each of the following tables. + + #### Environment Configuration + + | **Parameter** | **Description** | + | :-------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **HTTPS Proxy** | Leave this blank unless you are using an HTTPS Proxy. This setting will be propagated to all EC nodes and all of its target cluster nodes. Example: `https://USERNAME:PASSWORD@PROXYIP:PROXYPORT`. | + | **HTTP Proxy** | Leave this blank unless you are using an HTTP Proxy. This setting will be propagated to all EC nodes and all of its target cluster nodes. Example: `http://USERNAME:PASSWORD@PROXYIP:PROXYPORT`. | + | **No Proxy** | You will be prompted to provide a list of local network CIDR addresses, hostnames, and domain names that should be excluded from being a proxy. This setting will be propagated to all the nodes to bypass the proxy server. Example if you have a self-hosted environment: `my.company.com,10.10.0.0/16` | + | **Proxy CA Certificate Filepath** | The default is blank. You can provide the filepath of a CA certificate on the installer host. If provided, this CA certificate will be copied to each host in the PCG cluster during deployment. The provided path will be used on the PCG cluster hosts. Example: `/usr/local/share/ca-certificates/ca.crt`. | + | **Pod CIDR** | Enter the CIDR pool IP that will be used to assign IP addresses to pods in the EC cluster. The pod IP addresses should be unique and not overlap with any machine IPs in the environment. | + | **Service IP Range** | Enter the IP address range that will be used to assign IP addresses to services in the EC cluster. The service IP addresses should be unique and not overlap with any machine IPs in the environment. | + +13. Fill out the registry configuration details. If you are using the Palette CLI from inside an airgap support VM, the + CLI will automatically detect the airgap environment and prompt you to **Use local, air-gapped Pack Registry?** Type + `y` to use the local resources and skip filling in the OCI registry URL and credentials. Otherwise, you will need to + provide the OCI registry configuration values for your pack and image registry. + + :::warning + + For self-hosted OCI registries, ensure you have the server Certificate Authority (CA) certificate file available on + the host where you are using the Palette CLI. You will be prompted to provide the file path to the OCI CA + certificate. Failure to provide the OCI CA certificate will result in self-linking errors. Refer to the + [Self-linking Error](../../../../troubleshooting/enterprise-install.md#scenario---self-linking-error) + troubleshooting guide for more information. + + ::: + + #### Pack & Image Registry Configuration + + | **Parameter** | **Description** | + | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Registry Type** | Specify the type of registry. Allowed values are `OCI` or `OCI ECR`. Airgap users, select `OCI`. | + | **Registry Name** | Enter the name of the registry. | + | **Registry Endpoint** | Enter the registry endpoint. Airgap users, provide the **Spectro Cloud Repository** URL or hostname shared by the airgap setup script. | + | **Registry Base Path** | Enter the registry base path. | + | **Allow Insecure Connection** | Bypasses x509 verification. Type `n` to specify a certificate authority in the follow-up prompt. Airgap user, ensure you select `n`. | + | **Registry CA certificate filepath** | Specify the file path to the certificate authority. Use absolute paths. Airgap users, provide the filepath displayed by the aurgap setup script. | + | **Registry Username** or **Registry Access Key** | Enter the registry username or the access key if using `OCI ECR`. | + | **Registry Password** or **Registry Secret Key** | Enter the registry password or the secret key if using `OCI ECR`. | + | **Registry Region** | Enter the registry region. This option is only available if you are using `OCI ECR`. | + | **ECR Registry Private** | Type `y` if the registry is private. Otherwise, type `n`. | + | **Use Public Registry for Images** | Type `y` to use a public registry for images. Type `n` to a different registry for images. If you are using another registry for images, you will be prompted to enter the registry URL, base path, username, and password. Airgap users, select `n` so that you can specify the values for the OCI registry that contains all the required images. | + + When prompted to **Pull images from public registry**, type `n` and specify the OCI registry configuration values for + your image registry. If you are an airgap support VM, the CLI will automatically detect the airgap environment and prompt you to **Use local, air-gapped Image Registry?** Type `y` to use the local resources and skip filling in the OCI registry URL and credentials. + Refer to the table above for more information. + + :::info + + You will be provided with an opportunity to update the mirror registries values. To exit `vi` press the `Escape` key + and type `:wq` to save and exit. + + ::: + +14. The next set of prompts is for the VMware vSphere account information. Enter the information listed in the following + table. + + #### VMware vSphere Account Information + + | **Parameter** | **Description** | + | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **vSphere Endpoint** | VMware vSphere endpoint. Must be a fully qualified domain name (FQDN) or IP address without a scheme - that is, without an IP protocol, such as `https://`. Example: `vcenter.mycompany.com`. | + | **vSphere Username** | VMware vSphere account username. | + | **vSphere Password** | VMware vSphere account password. | + | **Allow Insecure Connection** | Bypasses x509 verification. Type `Y` if using a VMware vSphere instance with self-signed Transport Layer Security (TLS) certificates. Otherwise, type `n`. | + + #### VMware vSphere Cluster Configuration + + This information determines where Palette will be deployed in your VMware vSphere environment. The Palette CLI will + use the provided VMware credentials to retrieve information from your VMware vSphere environment and present options + for you to select from. + + | **Parameter** | **Description** | + | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Datacenter** | The installer retrieves the Datacenter automatically. | + | **Folder** | Select the folder that contains the VM instance. | + | **Cluster** | Select the cluster where you want to deploy Palette. | + | **Network** | Select the network where you want to deploy Palette. | + | **Resource Pool** | Select the resource pool where you want to deploy Palette. | + | **Datastore** | Select the datastore where you want to deploy Palette. | + | **Fault Domains** | Configure one or more fault domains by selecting values for these properties: Cluster, Network (with network connectivity), Resource Pool, and Storage Type (Datastore or VM Storage Policy). Note that when configuring the Network, if you are using a distributed switch, choose the network that contains the switch. | + | **NTP Servers** | You can provide a list of Network Time Protocol (NTP) servers. | + | **SSH Public Keys** | Provide any public SSH keys to access your Palette VMs. This option opens up your system's default text editor. Vi is the default text editor for most Linux distributions. To review basic vi commands, check out the [vi Commands](https://www.cs.colostate.edu/helpdocs/vi.html) reference. | + +15. Specify the IP pool configuration. The placement type can be Static or Dynamic Domain Name Server (DDNS). Choosing + static placement creates an IP pool from which VMs are assigned IP addresses. Choosing DDNS assigns IP addresses + using DNS. + + #### Static Placement Configuration + + | **Parameter** | **Description** | + | ------------------------------- | ------------------------------------------------------------------------------------------- | + | **IP Start range** | Enter the first address in the EC IP pool range. | + | **IP End range** | Enter the last address in the EC IP pool range. | + | **Network Prefix** | Enter the network prefix for the IP pool range. Valid values are in [0, 32]. Example: `18`. | + | **Gateway IP Address** | Enter the IP address of the static IP gateway. | + | **Name servers** | Comma-separated list of DNS name server IP addresses. | + | **Name server search suffixes** | An optional comma-separated list of DNS search domains. | + +16. The last set of prompts are for the vSphere machine and database configuration. Use the following table for + guidance. + + #### vSphere Machine Configuration + + | **Parameter** | **Description** | + | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Small** | Deploy VM nodes with 8 CPU, 16 GB memory, 60 GB storage. The database specs are 20 GB database with 2 CPU limit and 4 GB memory limit. | + | **Medium** | Deploy VM nodes with 16 CPU, 32 GB memory, 100 GB storage. The database specs are 60 GB database with 4 cpu limit and 8 GB memory limit. | + | **Large** | Deploy VM nodes with 32 CPU, 64 GB memory, 120 GB storage. The database specs are 80 GB database with 8 CPU limit and 16 GB memory limit. | + | **Custom** | Deploy VM nodes with custom CPU, memory, storage, database size, CPU limit, and memory limit. If you specify custom, you will be prompted for the CPU, memory, and storage. | + + #### Additional vSphere Machine Configuration + + | **Parameter** | **Description** | + | ----------------- | ---------------------------------------------------------------------------------------- | + | **Node Affinity** | Select the node affinity. Enter `y` to schedule all Palette pods on control plane nodes. | + + The installation process stands up a [kind](https://kind.sigs.k8s.io/) cluster locally that will orchestrate the + remainder of the installation. The installation takes some time to complete. + + The Palette CLI creates a file named `ec.yaml` that contains the information you provided the wizard, and its + location is displayed in the terminal. Credentials and tokens are encrypted in the YAML file. + + ```bash hideClipboard + ==== Enterprise Cluster config saved ==== + Location: :/home/spectro/.palette/ec/ec-20230706150945/ec.yaml + ``` + + :::tip + + If an error occurs during installation, remove the `kind` cluster that was created and restart the installation. To + remove the `kind` cluster, issue the following command. Replace `spectro-mgmt-cluster` with the name of your cluster + if you used a different name. + + ```bash + kind delete cluster spectro-mgmt-cluster + ``` + + Restart the install process by referencing the `ec.yaml` file that was created during the first installation + attempt. For example: + + ```bash + palette ec install --config /home/spectro/.palette/ec/ec-20230706150945/ec.yaml + ``` + + ::: + + When the installation is complete, Enterprise Cluster Details that include a URL and default credentials are + displayed in the terminal. You will use these to access the Palette system console. + + ```bash hideClipboard + =========================================== + ==== Enterprise Cluster System Console ==== + =========================================== + Console URL: https://10.10.100.0/system + Username: ************ + Password: ************ + + The first of three Enterprise Cluster nodes is online and will now provision nodes two and three. + + It will take another ~30-45 minutes for the installation to complete. + + You can monitor its progress via kubectl/k9s or by viewing the System Console. + + export KUBECONFIG=/ubuntu/.palette/ec/ec-20231012215923/spectro_mgmt.conf + ``` + +17. Copy the URL to the browser to access the system console. You will be prompted to reset the password. + + :::info + + The first time you visit the Palette system console, a warning message about an untrusted SSL certificate may + appear. This is expected, as you have not yet uploaded your SSL certificate to Palette. You can ignore this warning + message and proceed. + + ::: + + ![Screenshot of the Palette system console showing Username and Password fields.](/palette_installation_install-on-vmware_palette-system-console.webp) + +18. Copy the URL and paste it in your browser's URL field to access the system console. You will be prompted to reset + the password. + + :::info + + The first time you visit the Palette VerteX system console, a warning message about an untrusted SSL certificate may + appear. This is expected, as you have not yet uploaded your SSL certificate to Palette VerteX. You can ignore this + warning message and proceed. + + ::: + +19. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login, + you will be prompted to create a new password. Enter a new password and save your changes. You will be redirected to + the Palette system console. + +20. After login, a Summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a + different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority + files to Palette. You can upload the files using the Palette system console. Refer to the + [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how + to upload the SSL certificate files to Palette. + +21. The last step is to start setting up a tenant. To learn how to create a tenant, check out the + [Tenant Management](../../../system-management/tenant-management.md) guide. + + ![Screenshot of the Summary page showing where to click Go to Tenant Management button.](/palette_installation_install-on-vmware_goto-tenant-management.webp) + +## Validate + +You can verify the installation is successful if you can access the system console using the IP address provided in +Enterprise Cluster Details and if the Summary page displays the **Go to Tenant Management** button. + +You can also validate that a three-node Kubernetes cluster is launched and Palette is deployed on it. + +1. Log in to the vCenter Server by using vSphere Client. + +2. Navigate to your vSphere Datacenter and locate your Palette VM instances. The VMs are prefixed with the name you + provided during the installation. For example, if you provided `spectro-mgmt-cluster` as the name, the VMs are named + `spectro-mgmt-cluster-`, followed by a unique set of alphanumeric values. Verify three nodes are available. + +3. Open a web browser session, and use the IP address provided in Enterprise Cluster Details at the completion of the + installation to connect to the Palette system console. Copy the IP address to the address bar and append `/system`. + +4. Log in using your credentials. + +5. A **Summary** page will be displayed that contains a tile with a **Go to Tenant Management** button. After initial + installation, the **Summary** page shows there are zero tenants. + +## Next Steps + +You have successfully installed Palette in vSphere. Your next steps are to configure Palette for your organization. +Start by creating the first tenant to host your users. Refer +to [Create a Tenant](../../../system-management/tenant-management.md) for instructions. + +After you create the tenant, you are ready to configure authentication types in tenant settings and create users and +teams. + +## Resources + +- [Palette CLI](../../../../palette-cli/install-palette-cli.md#download-and-setup) + +- [VMware System Requirements](../vmware-system-requirements.md) + +- [System Management](../../../system-management/system-management.md) + +- [Enterprise Install Troubleshooting](../../../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/enterprise-version/install-palette/airgap/vmware-vsphere-airgap-instructions.md b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions.md similarity index 90% rename from docs/docs-content/enterprise-version/install-palette/airgap/vmware-vsphere-airgap-instructions.md rename to docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions.md index 0574a48b5a..5dd7944970 100644 --- a/docs/docs-content/enterprise-version/install-palette/airgap/vmware-vsphere-airgap-instructions.md +++ b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions.md @@ -1,10 +1,10 @@ --- -sidebar_label: "VMware vSphere Airgap Instructions" -title: "VMware vSphere Airgap Instructions" +sidebar_label: "Environment Setup" +title: "Environment Setup" description: "Learn how to install Palette in an air gap environment." icon: "" hide_table_of_contents: false -sidebar_position: 30 +sidebar_position: 20 tags: ["self-hosted", "enterprise", "airgap", "vmware", "vsphere"] keywords: ["self-hosted", "enterprise"] --- @@ -14,8 +14,7 @@ This guide helps you to prepare your airgap environment for Palette installation :::info This guide is for preparing your airgap environment only. For instructions on installing Palette on -[VMware](../install-on-vmware/install.md) or [Kubernetes](../install-on-kubernetes/install.md), refer to their -respective guides. A checklist of the steps you will complete to prepare your airgap environment for Palette is +[VMware](./install.md). A checklist of the steps you will complete to prepare your airgap environment for Palette is available in the [Checklist](./checklist.md) page. ::: @@ -49,24 +48,20 @@ Palette. - Configure the Dynamic Host Configuration Protocol (DHCP) to access the airgap support VM via SSH. You can disable DHCP or modify the IP address after deploying the airgap support VM. -- Review the required vSphere [permissions](../install-on-vmware/vmware-system-requirements.md) and ensure you've +- Review the required vSphere [permissions](../../install-on-vmware/vmware-system-requirements.md) and ensure you've created the proper custom roles and zone tags. Zone tagging enables dynamic storage allocation across fault domains when provisioning workloads that require persistent storage. Refer to - [Zone Tagging](../install-on-vmware/vmware-system-requirements.md#zone-tagging) for information. - -
+ [Zone Tagging](../../install-on-vmware/vmware-system-requirements.md#zone-tagging) for information. :::info Self-hosted Palette installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can deploy additional PCG instances to support provisioning into remote data centers without a direct incoming connection to Palette. To learn how to install a PCG on VMware, check out -the [VMware](../../../clusters/data-center/vmware.md) guide. +the [VMware](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: -
- ## Prepare for Airgap Installation Complete the following steps to prepare your airgap environment for Palette installation. @@ -88,13 +83,13 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock distribution OVA required for the installation. ```url - https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12610-0.ova + https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12610-0.ova ``` Place the OVA in the **spectro-templates** folder. Append the `r_` prefix, and remove the `.ova` suffix when assigning its name and target location. For example, the final output should look like `r_u-2004-0-k-12610`. This naming convention is required for the installation process to identify the OVA. Refer to the - [Supplement Packs](./supplemental-packs.md#additional-ovas) page for a list of additional OS OVAs. + [Supplement Packs](../../airgap/supplemental-packs.md#additional-ovas) page for a list of additional OS OVAs. You can terminate the deployment after the OVA is available in the `spectro-templates` folder. Refer to the [Deploy an OVF or OVA Template](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vm-administration/GUID-AFEDC48B-C96F-4088-9C1F-4F0A30E965DE.html) @@ -180,8 +175,9 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock 17. If you want to assign a static IP address to the airgap support VM, you can do so now. Click on the box below to expand the instructions. Otherwise, proceed to the next step. -
- Assign a static IP address +
+ + Assign a static IP address Create an empty file to disable cloud-init from overriding the new network configurations you will add. @@ -189,7 +185,8 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock sudo touch /etc/cloud/cloud-init.disabled ``` - Issue the following command to update cloud-init. Select **VMware** from the wizard Menu when prompted. The command will disable cloud-init from managing the network configuration. + Issue the following command to update cloud-init. Select **VMware** from the wizard Menu when prompted. The command + will disable cloud-init from managing the network configuration. ```shell sudo dpkg-reconfigure cloud-init @@ -201,7 +198,8 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock sudo vi /etc/netplan/01-netcfg.yaml ``` - Modify the file to look like the example below. Replace the IP address, gateway, and DNS server with your network settings. Save the file and exit the text editor. + Modify the file to look like the example below. Replace the IP address, gateway, and DNS server with your network + settings. Save the file and exit the text editor. ```yaml network: @@ -214,15 +212,15 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock - 10.1.1.0/18 gateway4: 2.2.2.2 nameservers: - addresses: [1.1.1.1] + addresses: [1.1.1.1] ``` -:::tip + :::tip -If you are working in Vim, press `i` to enter insert mode in the text editor. Press `esc` to exit insert mode. Type -`:wq` to save the file and exit the text editor. + If you are working in Vim, press `i` to enter insert mode in the text editor. Press `esc` to exit insert mode. Type + `:wq` to save the file and exit the text editor. -::: + ::: Issue the following command to apply the changes. @@ -230,7 +228,7 @@ If you are working in Vim, press `i` to enter insert mode in the text editor. Pr sudo netplan apply ``` -
+
18. Switch to the `root` user account. You will need to use the `root` user account to complete the remaining steps. @@ -322,8 +320,8 @@ If you are working in Vim, press `i` to enter insert mode in the text editor. Pr 20. The output of the script contains credentials and values you will need when completing the installation with the Palette CLI. If you need to review this information in the future, invoke the script again. -21. Review the [Additional Packs](./supplemental-packs.md) page and identify any additional packs you want to add to - your OCI registry. By default, the installation includes only the minimum required packs. You can also add +21. Review the [Additional Packs](../../airgap/supplemental-packs.md) page and identify any additional packs you want to + add to your OCI registry. By default, the installation includes only the minimum required packs. You can also add additional packs after the installation is complete. You have now completed the preparation steps for an airgap installation. Check out the [Validate](#validate) section to @@ -401,8 +399,7 @@ installed in the airgap support VM and ready to use. palette ec install ``` -Complete all the Palette CLI steps outlined in the [VMware Install Instructions](../install-on-vmware/install.md) guide -from the airgap support VM. +Complete all the Palette CLI steps outlined in the [Install Palette](./install.md) guide from the airgap support VM. :::info diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install-on-vmware.md b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install-on-vmware.md index f6cd5368ca..7345e0f14b 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install-on-vmware.md +++ b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install-on-vmware.md @@ -14,6 +14,8 @@ Refer to [Access Palette](../../enterprise-version.md#access-palette) for instru ## Resources -- [Install on VMware](install.md) +- [Non-Airgap Install on VMware](install.md) + +- [Airgap Install](./airgap-install/airgap-install.md) - [VMware System Requirements](vmware-system-requirements.md) diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install.md b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install.md index 35f8a1317c..73f7570700 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install.md +++ b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install.md @@ -1,9 +1,9 @@ --- -sidebar_label: "Instructions" +sidebar_label: "Non-Airgap Installation" title: "Install Palette on VMware" description: "Learn how to install Palette on VMware." icon: "" -sidebar_position: 10 +sidebar_position: 20 hide_table_of_contents: false tags: ["palette", "self-hosted", "vmware"] keywords: ["self-hosted", "enterprise"] @@ -19,7 +19,8 @@ Refer to [Access Palette](../../enterprise-version.md#access-palette) for instru If you are installing Palette in an airgap environment, ensure you complete all the airgap pre-install steps before proceeding with the installation. Refer to the -[VMware vSphere Airgap Instructions](../airgap/vmware-vsphere-airgap-instructions.md) guide for more information. +[VMware vSphere Airgap Instructions](../install-on-vmware//airgap-install/vmware-vsphere-airgap-instructions.md) guide +for more information. ::: @@ -69,19 +70,15 @@ proceeding with the installation. Refer to the - Shared Storage between VMware vSphere hosts. -
- :::info Self-hosted Palette installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can create additional PCGs as needed to support provisioning into remote data centers that do not have a direct incoming connection from the Palette console. To learn how to install a -PCG on VMware, check out the [VMware](../../../clusters/data-center/vmware.md) guide. +PCG on VMware, check out the [VMware](../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: -
- ## Deployment The video below demonstrates the installation wizard and the prompts you will encounter. Take a moment to watch the @@ -89,20 +86,8 @@ video before you begin the installation process. Make sure to use values that ar the **three-dots Menu** in the lower right corner of the video to expand the video to full screen and to change the playback speed. - - - - - - - - - - - - Use the following steps to install Palette. 1. Log in to your vCenter environment. @@ -114,11 +99,11 @@ Use the following steps to install Palette. OVA in the `spectro-templates` folder. ```url - https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12610-0.ova + https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12711-0.ova ``` 4. Append an `r_` prefix to the OVA name and remove the `.ova` suffix after the import. For example, the final output - should look like `r_u-2004-0-k-12610`. This naming convention is required for the install process to identify the + should look like `r_u-2204-0-k-12711-0`. This naming convention is required for the install process to identify the OVA. Refer to the [Supplement Packs](../airgap/supplemental-packs.md#additional-ovas) page for a list of additional OVAs you can download and upload to your vCenter environment. @@ -151,6 +136,17 @@ Use the following steps to install Palette. - Non-Airgap: `https://saas-repo.console.spectrocloud.com` - Airgap: The URL or IP address of the Spectro Cloud Repository that is provided to you by the airgap setup script +
+ + :::info + + If you are using the Palette CLI from inside an [airgap support VM](./airgap-install/airgap-install.md), the CLI + will automatically detect the airgap environment and prompt you to **Use local, air-gapped Spectro Cloud Artifact + Repository (SCAR) configuration**. Type `y` to use the local resources and skip filling in the repository URL and + credentials. + + ::: + 9. Enter the repository credentials. Our support team provides the credentials you need to access the public Spectro Cloud repository. Airgap installations, provide the credentials to your private repository provided to you by the airgap setup script . @@ -174,58 +170,67 @@ Use the following steps to install Palette. 13. Select the tab below that matches your installation type for further guidance. - - + + + - Select `y` to use the Spectro Cloud FIPS repository and proceed to the next step. + Select `y` to use the Spectro Cloud repository and proceed to the next step. + :::info + + If you are using the Palette CLI from inside an + [airgap support VM](./airgap-install/vmware-vsphere-airgap-instructions.md), the CLI will automatically detect the + airgap environment and prompt you to **Use local, air-gapped Pack Registry?** Type `y` to use the local resources + and skip filling in the OCI registry URL and credentials. + + ::: + Select the OCI registry type and provide the configuration values. Review the following table for more information. -:::warning + :::warning -For self-hosted OCI registries, ensure you have the server Certificate Authority (CA) certificate file available on the -host where you are using the Palette CLI. You will be prompted to provide the file path to the OCI CA certificate. -Failure to provide the OCI CA certificate will result in self-linking errors. Refer to the -[Self-linking Error](../../../troubleshooting/enterprise-install.md#scenario---self-linking-error) troubleshooting guide -for more information. + For self-hosted OCI registries, ensure you have the server Certificate Authority (CA) certificate file available on + the host where you are using the Palette CLI. You will be prompted to provide the file path to the OCI CA + certificate. Failure to provide the OCI CA certificate will result in self-linking errors. Refer to the + [Self-linking Error](../../../troubleshooting/enterprise-install.md#scenario---self-linking-error) troubleshooting + guide for more information. -::: + ::: - #### Pack & Image Registry Configuration - - | **Parameter** | **Description** | - | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Registry Type** | Specify the type of registry. Allowed values are `OCI` or `OCI ECR`. Airgap users, select `OCI`. | - | **Registry Name** | Enter the name of the registry. | - | **Registry Endpoint** | Enter the registry endpoint. Airgap users, provide the **Spectro Cloud Repository** URL or hostname shared by the airgap setup script. | - | **Registry Base Path** | Enter the registry base path. | - | **Allow Insecure Connection** | Bypasses x509 verification. Type `n` to specify a certificate authority in the follow-up prompt. Airgap user, ensure you select `n`. | - | **Registry CA certificate filepath** | Specify the file path to the certificate authority. Use absolute paths. Airgap users, provide the filepath displayed by the aurgap setup script. | - | **Registry Username** or **Registry Access Key** | Enter the registry username or the access key if using `OCI ECR`. | - | **Registry Password** or **Registry Secret Key** | Enter the registry password or the secret key if using `OCI ECR`. | - | **Registry Region** | Enter the registry region. This option is only available if you are using `OCI ECR`. | - | **ECR Registry Private** | Type `y` if the registry is private. Otherwise, type `n`. | - | **Use Public Registry for Images** | Type `y` to use a public registry for images. Type `n` to a different registry for images. If you are using another registry for images, you will be prompted to enter the registry URL, base path, username, and password. Airgap users, select `n` so that you can specify the values for the OCI registry that contains all the required images. | - - When prompted to **Pull images from public registry**, type `n` and specify the OCI registry configuration values for - your image registry. Refer to the table above for more information. + #### Pack & Image Registry Configuration + + | **Parameter** | **Description** | + | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Registry Type** | Specify the type of registry. Allowed values are `OCI` or `OCI ECR`. Airgap users, select `OCI`. | + | **Registry Name** | Enter the name of the registry. | + | **Registry Endpoint** | Enter the registry endpoint. Airgap users, provide the **Spectro Cloud Repository** URL or hostname shared by the airgap setup script. | + | **Registry Base Path** | Enter the registry base path. | + | **Allow Insecure Connection** | Bypasses x509 verification. Type `n` to specify a certificate authority in the follow-up prompt. Airgap user, ensure you select `n`. | + | **Registry CA certificate filepath** | Specify the file path to the certificate authority. Use absolute paths. Airgap users, provide the filepath displayed by the aurgap setup script. | + | **Registry Username** or **Registry Access Key** | Enter the registry username or the access key if using `OCI ECR`. | + | **Registry Password** or **Registry Secret Key** | Enter the registry password or the secret key if using `OCI ECR`. | + | **Registry Region** | Enter the registry region. This option is only available if you are using `OCI ECR`. | + | **ECR Registry Private** | Type `y` if the registry is private. Otherwise, type `n`. | + | **Use Public Registry for Images** | Type `y` to use a public registry for images. Type `n` to a different registry for images. If you are using another registry for images, you will be prompted to enter the registry URL, base path, username, and password. Airgap users, select `n` so that you can specify the values for the OCI registry that contains all the required images. | + + When prompted to **Pull images from public registry**, type `n` and specify the OCI registry configuration values for + your image registry. If you are an airgap support VM, the CLI will automatically detect the airgap environment and prompt you to **Use local, air-gapped Image Registry?** Type `y` to use the local resources and skip filling in the OCI registry URL and credentials. + Refer to the table above for more information. -:::info + :::info -You will be provided with an opportunity to update the mirror registries values. To exit `vi` press the `Escape` key and -type `:wq` to save and exit. + You will be provided with an opportunity to update the mirror registries values. To exit `vi` press the `Escape` key + and type `:wq` to save and exit. -::: + ::: - - ---- + 14. The next set of prompts is for the VMware vSphere account information. Enter the information listed in the following table. diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/vmware-system-requirements.md b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/vmware-system-requirements.md index 278a75509f..72d9c6c744 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/vmware-system-requirements.md +++ b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/vmware-system-requirements.md @@ -4,7 +4,7 @@ title: "VMware System and Permission Requirements" description: "Review VMware system requirements and cloud account permissions." icon: "" hide_table_of_contents: false -sidebar_position: 30 +sidebar_position: 10 tags: ["palette", "self-hosted", "vmware"] keywords: ["self-hosted", "enterprise"] --- diff --git a/docs/docs-content/enterprise-version/install-palette/install-palette.md b/docs/docs-content/enterprise-version/install-palette/install-palette.md index f5c83371cc..5593adfa2c 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-palette.md +++ b/docs/docs-content/enterprise-version/install-palette/install-palette.md @@ -17,13 +17,15 @@ the following modes: | VMware | Install Palette in VMware environment. | [Install on VMware](install-on-vmware/install.md) | | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster. | [Install on Kubernetes](install-on-kubernetes/install.md) | +## Airgap Installation + You can also install Palette in an airgap environment. For more information, refer to the [Airgap Installation](airgap/airgap.md) section. -| **Supported Airgap Platform** | **Description** | -| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| VMware | Install Palette in VMware environment using your own OCI registry server. | -| Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | +| **Supported Airgap Platform** | **Description** | **Install Guide** | +| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| VMware | Install Palette in VMware environment using your own OCI registry server. | [VMware Airgap Install](./install-on-vmware/airgap-install/airgap-install.md) | +| Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Kubernetes Airgap Install](./install-on-kubernetes/airgap-install/airgap-install.md) | The next sections provide sizing guidelines we recommend you review before installing Palette in your environment. diff --git a/docs/docs-content/enterprise-version/system-management/account-management/account-management.md b/docs/docs-content/enterprise-version/system-management/account-management/account-management.md index 83961d1679..33f84f9661 100644 --- a/docs/docs-content/enterprise-version/system-management/account-management/account-management.md +++ b/docs/docs-content/enterprise-version/system-management/account-management/account-management.md @@ -5,16 +5,85 @@ description: "Update and manage the user settings and credentials of the admin u icon: "" hide_table_of_contents: false sidebar_position: 60 -tags: ["vertex", "management", "account"] +tags: ["palette", "management", "account"] keywords: ["self-hosted", "palette"] --- +Self-hosted Palette supports the ability to have multiple system administrators with different roles and permissions. +Use the different roles to separate the duties of system administrators. + +:::info + +Separation of duties addresses the potential for abuse of authorized privileges and helps to reduce the risk of +malevolent activity without collusion. Separation of duties is supported for management of self-hosted Palette for +system administrators using the system console by defining account administration roles that are separate from +operations roles. + +::: + +You can also manage and update your individual user settings, such as email address and credentials from the system +console. + +## System Administrators + +System administrators are users who have access to the system console and can perform various operations based on their +assigned role. VerteX supports the following system administrator roles: + +- Root Administrator + +- Operations Administrator + +- Account Administrator + +The following table outlines the high-level permissions for each system administrator role. + +| Permission | Root Administrator | Operations Administrator | Account Administrator | Description | +| --------------------------------------------- | ------------------ | ------------------------ | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Create and manage other system administrators | :white_check_mark: | :x: | :white_check_mark: | Create and manage system administrators and their settings. Refer to [Create and Manage System Accounts](./manage-system-accounts.md) to learn more. | +| Manage system settings | :white_check_mark: | :white_check_mark: | :x: | View and modify system settings such as SMTP, pack registries, DNS, and more. Refer to the [System Management](../system-management.md) section and its resources to learn more. | +| Manage tenants | :white_check_mark: | :white_check_mark: | :x: | Create and manage tenants. | + +:::info + +All system administrators can access the system console and change individual user settings, such as email address, +password and passkeys. + +::: + +Review the following sections to learn more about each role. + +### Root Administrator + +The root administrator has full access to the system and can perform all operations. The root administrator credentials +are used to log in to the [system console](../system-management.md#system-console) for the first time and must be +changed after the initial login. We recommend you create an account administrator and operations administrator to manage +the system upon initial login. + +### Operations Administrator + +The operations administrator has access to the system console and can perform all operations except for creating and +managing other system administrators. The operations administrator can create and manage tenants, manage system +settings, and manage the system's overall health and performance. + +### Account Administrator + +The account administrator has access to the system console and can only create and manage system administrator accounts +and their settings. System maintenance and tenant management are not available to the account administrator. Use +Operations Administrator to manage system settings and tenants. + +To learn how to create and manage system administrator accounts, check out the +[Create and Manage System Accounts](./manage-system-accounts.md) guide. + +## User Settings + As an admin user, you can update and manage your user settings, such as changing the email address and changing the credentials. You can also enable passkey to access the admin panel. The passkey feature supports both virtual passkey and physical passkey. ## Resources +- [Create and Manage System Accounts](./manage-system-accounts.md) + - [Email Address](./email.md) - [User Credentials](./credentials.md) diff --git a/docs/docs-content/enterprise-version/system-management/account-management/credentials.md b/docs/docs-content/enterprise-version/system-management/account-management/credentials.md index 5a6d406772..fd75d267df 100644 --- a/docs/docs-content/enterprise-version/system-management/account-management/credentials.md +++ b/docs/docs-content/enterprise-version/system-management/account-management/credentials.md @@ -4,7 +4,7 @@ title: "Manage User Credentials" description: "Update and manage the user credentials" icon: "" hide_table_of_contents: false -sidebar_position: 10 +sidebar_position: 20 tags: ["palette", "management", "account", "credentials"] keywords: ["self-hosted", "palette"] --- @@ -12,7 +12,30 @@ keywords: ["self-hosted", "palette"] You can manage the credentials of the admin user by logging in to the system console. You can also enable passkeys to access the admin panel. The passkey feature supports both virtual passkey and physical passkey. -Use the sections below to learn how to manage user credentials. +## Password Requirements and Security + +Palette passwords are hashed and salted, the cryptographic key value of the password is stored inside the internal +system database. The cryptographic key is created using Password Based Key Derivation Function 2 (PBKDF2) and SHA512 +with an iteration count of 10,000. The salt is 32 bytes long. + +All system administrators are required to set a password that complies with the following password policy: + +- The password must be at least 14 characters long. +- The password must contain at least one uppercase letter. +- The password must contain at least one lowercase letter. +- The password must contain at least one digit. +- The password must contain at least one special character. +- The password cannot be the same as the previous password. + +Additionally, system administrators can manage the [password blocklist](./password-blocklist.md) to prevent users from +using common or weak passwords. The password blocklist is a list of passwords that are not allowed to be used by users +when setting or updating their passwords. The password blocklist is enforced when users set or update their passwords. + +All system administrators are allowed a maximum of five failed login attempts. After five failed login attempts, the +user account will be placed in a temporary suspended state for a duration of 15 minutes. Upon expiration of the 15 +minutes, the user can try to log in again. + +Use the following sections to learn how to manage user credentials. ## Change Password @@ -187,7 +210,7 @@ with passkeys enabled. ### Prerequisites -- Access to the Palette VerteX system console. Refer to +- Access to the Palette system console. Refer to [Access the System Console](../system-management.md#access-the-system-console) for guidance on how to access the system console. diff --git a/docs/docs-content/enterprise-version/system-management/account-management/email.md b/docs/docs-content/enterprise-version/system-management/account-management/email.md index 49a08ceb4f..0bf1ed148a 100644 --- a/docs/docs-content/enterprise-version/system-management/account-management/email.md +++ b/docs/docs-content/enterprise-version/system-management/account-management/email.md @@ -4,7 +4,7 @@ title: "Update Email Address" description: "Update and manage the email address of the admin user." icon: "" hide_table_of_contents: false -sidebar_position: 20 +sidebar_position: 30 tags: ["vertex", "management", "account", "credentials"] keywords: ["self-hosted", "palette"] --- diff --git a/docs/docs-content/enterprise-version/system-management/account-management/manage-system-accounts.md b/docs/docs-content/enterprise-version/system-management/account-management/manage-system-accounts.md new file mode 100644 index 0000000000..cf4e6e148b --- /dev/null +++ b/docs/docs-content/enterprise-version/system-management/account-management/manage-system-accounts.md @@ -0,0 +1,166 @@ +--- +sidebar_label: "Create and Manage System Accounts" +title: "Create and Manage System Accounts" +description: "Learn how to create and manage system accounts in Palette." +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["palette", "management", "account"] +keywords: ["self-hosted", "palette"] +--- + +You can create and manage system accounts if you have the Root Administrator or Account Administrator role in Palette. +These accounts are used to access the system console and perform various operations based on the assigned role + +![A view of the admin user dashboard](/vertex_account-management_manage-system-accounts_user-dashboard.webp) + +Check out the following sections to learn more about the supported system administrator management workflows. + +## Create System Accounts + +Use the following steps to create a new system account. + +### Prerequisites + +- Access to the Palette system console. + +- The role of Root Administrator or Account Administrator. + +### Create a System Account + +1. Log in to the Palette system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide for guidance on how to access + the system console. + +2. From the left **Main Menu** select **Account Management**. + +3. Click **Create Admin**. + +4. Fill in the following fields. Refer to the table below for more information about each field. + + | Field | Description | + | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | First Name | The first name of the user. | + | Last Name | The last name of the user. | + | Email | The email address of the user. | + | Account Type | The type of account to create. Choose from **Operations Administrator**, or **Account Administrator**. Refer to the [System Administrators](./account-management.md#system-administrators) section to learn more about each role. | + +5. Click **Create** to save the new system account. + +6. A message appears confirming the new system account has been created. The message contains an activation URL you can + share with the new user to activate their account. The new user will be prompted to set a password upon activation. + + :::warning + + The activation URL is valid for 24 hours. If the user does not activate their account within 24 hours, you will need + to create a new account for the user. + + ::: + +7. Click on **Copy link & close** to copy the activation URL to your clipboard and close the message. + +### Validate + +Use the following steps to validate the new system account. + +1. Share the activation URL with the new user and ask them to activate their account. + +2. Log in to the Palette system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide for guidance on how to access + the system console. + +3. From the left **Main Menu** select **Account Management**. + +4. Verify the new system administrator account is listed in the table. Once the new user has activated their account, + the **Status** column will display **Active**. + +## Remove System Accounts + +Use the following steps to remove a system account. + +### Prerequisites + +- Access to the Palette system console. + +- The role of Root Administrator or Account Administrator. + +- You cannot remove the account you are currently logged in with. Use another system account to remove the account you + want to remove. + +### Remove a System Account + +1. Log in to the Palette system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide for guidance on how to access + the system console. + +2. From the left **Main Menu** select **Account Management**. + +3. Locate the system account you want to remove in the table and click on the **three-dot Menu** icon at the end of the + row. + +4. Click **Delete**. + +5. A confirmation dialog appears. Check the box to confirm you want to delete the system account and click **Delete**. + +6. A message appears confirming the system account has been deleted. + +### Validate + +Use the following steps to validate the system account has been removed. + +1. Log in to the Palette system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide for guidance on how to access + the system console. + +2. From the left **Main Menu** select **Account Management**. + +3. Verify the system account has been removed from the table. + +## Reset System Administrator Password + +Use the following steps to reset the password of a system administrator. + +### Limitations + +- You cannot use this feature to reset the password of the account you are currently logged in with. Use the normal + [password change workflow](./credentials.md#change-password) to reset the password of the account you are currently + logged in with. + +- You cannot reset the password of the Root Administrator account using this feature. Log in as the Root Administrator + to reset the password by following the [password change workflow](./credentials.md#change-password). + +### Prerequisites + +- Access to the Palette system console. + +- The role of Root Administrator or Account Administrator. + +### Reset Password + +1. Log in to the Palette system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide for guidance on how to access + the system console. + +2. From the left **Main Menu** select **Account Management**. + +3. Locate the system account you want to reset the password for in the table and click on the **three-dot Menu** icon at + the end of the row. + +4. Click **Password Reset Link**. + +5. A message containing the password reset link appears. The message includes a password reset URL that you can share + with the user to reset their password. Upon visiting the URL, the user will be prompted to set a new password. + + :::warning + + The password reset URL is valid for 24 hours. If the user does not reset their password within 24 hours, you must + generate a new password reset link. The current password will remain unchanged until the user sets a new password + + ::: + +6. Click on **Copy link & close** to copy the password reset URL to your clipboard and close the message. + +### Validate + +Ask the user to visit the password reset URL and set a new password. Ask the user to log in to the system console using +the new credentials to ensure the password has been reset successfully. diff --git a/docs/docs-content/enterprise-version/system-management/account-management/password-blocklist.md b/docs/docs-content/enterprise-version/system-management/account-management/password-blocklist.md new file mode 100644 index 0000000000..392b4c47f5 --- /dev/null +++ b/docs/docs-content/enterprise-version/system-management/account-management/password-blocklist.md @@ -0,0 +1,259 @@ +--- +sidebar_label: "Manage Password Blocklist" +title: "Manage Password Blocklist" +description: "Learn how to manage the password blocklist in Palette." +icon: "" +hide_table_of_contents: false +sidebar_position: 50 +tags: ["palette", "management", "account", "credentials"] +keywords: ["self-hosted", "palette"] +--- + +You can manage a password blocklist to prevent users from using common or weak passwords. The password blocklist is a +list of passwords that users cannot use when setting or updating their passwords. The password blocklist is enforced +when users set or update their passwords. + +:::info + +Refer to [Password Requirements and Security](credentials.md#password-requirements-and-security) to learn more about the +password requirements and security in Palette. + +::: + +The internal System API is used to manage the password blocklist. Review the following sections to learn how to maintain +the password blocklist. + +## View Passwords in the Blocklist + +The actual password values in the blocklist are not stored in the database. Due to this reason, there is no way to +retrieve the plain text list of passwords in the blocklist. There is no GET endpoint to retrieve the list of passwords +in the blocklist. All passwords are hashed and salted, and the cryptographic key of the password is stored in the +internal system database. + +:::tip + +Store the list of passwords in the blocklist in a secure location that enforces access control so you can refer to it +when needed. + +::: + +## Insert Passwords into the Blocklist + +Use the following steps to insert new passwords into the password blocklist. + +### Prerequisites + +- Access to the Palette system console. + +- The role of root administrator or operations administrator. + +- curl or any other tool to make HTTP requests. + +- Access to a shell terminal. + +:::warning + +If you enabled passkeys for your system administrator account, the System API login endpoint will be disabled. Refer to +the [Passkeys and API Access](./credentials.md#passkeys-and-api-access) page for guidance on how to use passkeys to +access the System API. + +::: + +### Insert Passwords + +1. Open a terminal session and log in to the Palette System API by using the `/v1/auth/syslogin` endpoint. Use the + `curl` command below and replace the URL with the custom domain URL you assigned to Palette or use the IP address. + Ensure you replace the credentials below with your system console credentials. + + ```bash + curl --location 'https://palette.example.com/v1/auth/syslogin' \ + --header 'Content-Type: application/json' \ + --data '{ + "password": "**********", + "username": "**********" + }' + ``` + + :::tip + + If you are using the default self-signed certificate, you can use the `--insecure` flag to bypass the certificate + check. + + ::: + + Output + + ```json hideClipboard + { + "Authorization": "**********.", + "IsPasswordReset": true + } + ``` + +2. Using the output you received, copy the authorization value to your clipboard and assign it to a shell variable. + Replace the authorization value below with the value from the output. + + ```shell hideClipboard + TOKEN=********** + ``` + +3. Use the `curl` command below to insert new passwords into the password blocklist. Replace the URL with the custom + domain URL you assigned to Palette or use the IP address. Ensure you replace the `TOKEN` value with the value you + assigned to the shell variable. + + ```bash + curl --location 'https://palette.example.com/v1/sys/passwords' \ + --header "Authorization: $TOKEN" \ + --header 'Content-Type: application/json' \ + --data '{ + "spec": { + "passwords": [ + "Password", + "password", + "123456", + "qwerty", + ] + } + }' + ``` + + :::info + + The payload expects the `spec.passwords` field to be an array of strings. You can add as many passwords as you want + as long as they are separated by a comma. + + ::: + +4. The endpoint returns a `204` status code if the operation is successful. No output is returned. If the operation + fails, the endpoint returns an error message. In case of an error, verify the authorization token is valid and the + password blocklist is in the expected format. + +### Validate + +To validate the password blocklist, use the following steps. + +1. Log in to the Palette system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide. + +2. From the **left Main Menu** select **My Account**. + +3. In the field **Current Password** type the current password of your admin user. + +4. In the field **New Password** type one of the passwords you added to the password blocklist. + +5. Type the new password again in the field **Re-Enter New Password**. + +6. Click **Change Password** to save the changes. + +7. An error message is displayed and the password is not updated. The error message indicates the password is in the + blocklist. + +## Remove Passwords from the Blocklist + +Use the following steps to remove passwords from the password blocklist. + +### Prerequisites + +- Access to the Palette system console. + +- The role of root administrator or operations administrator. + +- curl or any other tool to make HTTP requests. + +- Access to a shell terminal. + +:::warning + +If you enabled passkeys for your system administrator account, the System API login endpoint will be disabled. Refer to +the [Passkeys and API Access](./credentials.md#passkeys-and-api-access) page for guidance on how to use passkeys to +access the System API. + +::: + +### Remove Passwords + +1. Open a terminal session and log in to the Palette System API by using the `/v1/auth/syslogin` endpoint. Use the + `curl` command below and replace the URL with the custom domain URL you assigned to Palette or use the IP address. + Ensure you replace the credentials below with your system console credentials. + + ```bash + curl --location 'https://palette.example.com/v1/auth/syslogin' \ + --header 'Content-Type: application/json' \ + --data '{ + "password": "**********", + "username": "**********" + }' + ``` + + :::tip + + If you are using the default self-signed certificate, you can use the `--insecure` flag to bypass the certificate + check. + + ::: + + Output + + ```json hideClipboard + { + "Authorization": "**********.", + "IsPasswordReset": true + } + ``` + +2. Using the output you received, copy the authorization value to your clipboard and assign it to a shell variable. + Replace the authorization value below with the value from the output. + + ```shell hideClipboard + TOKEN=********** + ``` + +3. Use the `curl` command below to remove passwords from the password blocklist. Replace the URL with the custom domain + URL you assigned to Palette or use the IP address. Ensure you replace the `TOKEN` value with the value you assigned + to the shell variable. + + ```bash + curl --location --request DELETE 'https://palette.example.com/v1/sys/passwords' \ + --header "Authorization: $TOKEN" \ + --header 'Content-Type: application/json' \ + --data '{ + "spec": { + "passwords": [ + "Password", + "password", + "123456", + "qwerty", + ] + } + }' + ``` + + :::info + + The payload expects the `spec.passwords`field to be an array of strings. You can remove as many passwords as you + want as long as they are separated by a comma. + + ::: + +4. The endpoint returns a `204` status code if the operation is successful. No output is returned. If the operation + fails, the endpoint returns an error message. In case of an error, verify the authorization token is valid and the + password blocklist is in the expected format. + +### Validate + +To validate the password blocklist, use the following steps. + +1. Log in to the Palette system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide. + +2. From the **left Main Menu** select **My Account**. + +3. In the field **Current Password** type the current password of your admin user. + +4. In the field **New Password** type one of the passwords you removed from the password blocklist. + +5. Type the new password again in the field **Re-Enter New Password**. + +6. Click **Change Password** to save the changes. + +7. The password is updated successfully. diff --git a/docs/docs-content/enterprise-version/system-management/registry-override.md b/docs/docs-content/enterprise-version/system-management/registry-override.md index 295174c202..c528b78e85 100644 --- a/docs/docs-content/enterprise-version/system-management/registry-override.md +++ b/docs/docs-content/enterprise-version/system-management/registry-override.md @@ -57,8 +57,21 @@ Select the appropriate tab below based on the environment in which your VertX cl 3. Navigate to the folder where you have the image-swap Helm chart available. You may have to extract the Helm chart if it is in a compressed format to access the **values.yaml** file. -4. Open the **values.yaml** file and populate the `ociImageRegistry` section with your OCI registry values. Refer to the - table below for a description of each parameter. +4. Open the file **values.yaml** in a text editor and append the URL to your OCI registry that also includes the + namespace or project that is hosting the Spectro Cloud images. The URL should be in the format + `/`. In the example configuration below, the value `my-oci-registry.com/spectro-images` is + prefixed to each URL. Save the file after you have appended the URL. + + ```yaml hideClipboard + image: + cainjectorImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-cainjector:spectro-v1.11.0-20230427" + controllerImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-controller:spectro-v1.11.0-20230427" + webhookImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-webhook:spectro-v1.11.0-20230808" + amceResolverImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-acmesolver:spectro-v1.11.0-20230427" + ``` + +5. Next, update the`ociImageRegistry` section with your OCI registry values. Refer to the table below for a description + of each parameter. ```yaml ociImageRegistry: @@ -90,8 +103,8 @@ Select the appropriate tab below based on the environment in which your VertX cl ```yaml config: imageSwapImages: - imageSwapInitImage: "gcr.io/spectro-images-public/thewebroot/imageswap-init:v1.5.2" - imageSwapImage: "gcr.io/spectro-images-public/thewebroot/imageswap:v1.5.2" + imageSwapInitImage: "harbor.example.org/airgap-images/gcr.io/spectro-images-public/release/thewebroot/imageswap-init:v1.5.2-spectro-4.1.1" + imageSwapImage: "harbor.example.org/airgap-images/gcr.io/spectro-images-public/release/thewebroot/imageswap:v1.5.2-spectro-4.1.1" imageSwapConfig: isEKSCluster: true #If the Cluster you are trying to install is EKS cluster set value to true else set to false @@ -109,7 +122,7 @@ Select the appropriate tab below based on the environment in which your VertX cl -5. Once you have configured the `ociImageRegistry` section, issue the following command from the folder where you have +6. Once you have configured the `ociImageRegistry` section, issue the following command from the folder where you have the image-swap Helm chart available to deploy the image-swap Helm chart. You may have to modify the command below based on the location of **values.yaml** file and the compressed Helm chart file. @@ -127,13 +140,13 @@ Select the appropriate tab below based on the environment in which your VertX cl TEST SUITE: None ``` -6. Create an empty YAML file with the name **registry-secret.yaml**. Use the following command to create the file. +7. Create an empty YAML file with the name **registry-secret.yaml**. Use the following command to create the file. ```shell touch registry-secret.yaml ``` -7. Open the **registry-secret.yaml** file and copy the placeholder configuration below. +8. Open the **registry-secret.yaml** file and copy the placeholder configuration below. ```yaml --- @@ -161,7 +174,7 @@ Select the appropriate tab below based on the environment in which your VertX cl ::: -8. Replace the placeholder values with the actual values for your custom image registry. Use the same values that you +9. Replace the placeholder values with the actual values for your custom image registry. Use the same values that you used in the `ociImageRegistry` section of the **values.yaml** file for the image-swap Helm chart. Refer to the table below for a description of each parameter. @@ -200,12 +213,12 @@ Select the appropriate tab below based on the environment in which your VertX cl -9. Once you have created the YAML file and configured the parameter values, issue the following command to create the - Kubernetes secret containing the image registry configuration. +10. Once you have created the YAML file and configured the parameter values, issue the following command to create the + Kubernetes secret containing the image registry configuration. - ```shell - kubectl create --filename registry-secret.yaml - ``` + ```shell + kubectl create --filename registry-secret.yaml + ``` diff --git a/docs/docs-content/enterprise-version/system-management/system-management.md b/docs/docs-content/enterprise-version/system-management/system-management.md index bef097dfe1..0719f37d0c 100644 --- a/docs/docs-content/enterprise-version/system-management/system-management.md +++ b/docs/docs-content/enterprise-version/system-management/system-management.md @@ -34,6 +34,8 @@ Platform administrators can use the system console to perform the following oper - [Account management](account-management/account-management.md) +- [Create and Manage System Accounts](./account-management/account-management.md) + - [Configure and manage SMTP settings](smtp.md). - [Configure and manage Pack registries](add-registry.md). diff --git a/docs/docs-content/enterprise-version/upgrade/_category_.json b/docs/docs-content/enterprise-version/upgrade/_category_.json new file mode 100644 index 0000000000..e1d4231c70 --- /dev/null +++ b/docs/docs-content/enterprise-version/upgrade/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 100 +} diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/_category_.json b/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/_category_.json new file mode 100644 index 0000000000..8c155c56d8 --- /dev/null +++ b/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Kubernetes", + "position": 10 +} diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/airgap.md b/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/airgap.md new file mode 100644 index 0000000000..8b143a7264 --- /dev/null +++ b/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/airgap.md @@ -0,0 +1,475 @@ +--- +sidebar_label: "Airgap" +title: "Upgrade Airgap Palette Installed with Kubernetes" +description: "Learn how to upgrade self-hosted airgap Palette." +icon: "" +sidebar_position: 10 +tags: ["palette", "self-hosted", "airgap", "kubernetes", "upgrade"] +keywords: ["self-hosted", "enterprise", "airgap", "kubernetes"] +--- + +This guide takes you through the process of upgrading a self-hosted airgap Palette instance installed on Kubernetes. + +:::warning + +Before upgrading Palette to a new major version, you must first update it to the latest minor version available. Refer +to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for details. + +::: + +If your setup includes a PCG, you must also +[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette upgrade. + +## Prerequisites + +- Access to the x86 Linux jumpbox or bastion host with connectivity to the target platform where you have installed + Palette. + +- An OCI registry such as [Harbor](https://goharbor.io/) or [AWS ECR](https://aws.amazon.com/ecr/) configured and + available to store the new Palette images and packs. + +- Access to the latest Palette airgap setup binary. Refer to [Access Palette](/enterprise-version/#access-palette) for + more details. + +- [`kubectl`](https://kubernetes.io/docs/tasks/tools/#kubectl) and [`helm`](https://helm.sh/docs/intro/install/) + available in your system. + +- Access to the kubeconfig file of the target Kubernetes cluster. You must be able to interact with the cluster through + `kubectl` and have sufficient permissions to upgrade Palette. We recommend using a role with the cluster-admin + permissions. + +- `unzip` or a similar tool available in your system. + +- Access to the latest Palette Helm Chart. Refer to [Access Palette](/enterprise-version/#access-palette) for more + details. + +## Upgrade + +1. Log in to the Linux environment from which you can access your self-hosted airgap Palette instance. +2. Authenticate with your OCI registry and get credentials to your `spectro-packs` and `spectro-images` repositories. + + :::info + + Be mindful of the auth token timeout. Uploading Palette images and packages to the OCI registry can take about an + hour. If your auth token expires before everything is uploaded, you will need to re-authenticate and start the + upload again. + + ::: + + Select one of the following tabs for instructions on how to authenticate with Harbor and AWS ECR. + + + + + + Use the following command template to authenticate with your Harbor OCI registry through `oras`. Refer to the + [oras login](https://oras.land/docs/commands/oras_login/) docs for more details about the available CLI flags and + examples. + + ```shell + oras login X.X.X.X --user 'yourUserNameHere' --password 'yourPasswordHere' + ``` + + :::tip + + If your Harbor registry has a self-signed certificate, use the `--insecure` flag. + + ```shell + oras login X.X.X.X --insecure --user 'yourUserNameHere' --password 'yourPasswordHere' + ``` + + ::: + + + + + + To get the authentication commands for your specific registries, navigate to the AWS ECR console and click **View + push commands**. Refer to the + [AWS ECR Authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) + docs for more details. + + Alternatively, you can use the following command templates: + + - Authenticate with your private `spectro-packs` registry: + + - ``: Replace with the region where your ECR repository is hosted. + - ``: Replace with your AWS account ID. + + ```shell + aws ecr get-login-password --region | oras login --username AWS --password-stdin .dkr.ecr..amazonaws.com + ``` + + Consider the following example for reference. + + ```shell + aws ecr get-login-password --region us-east-1 | oras login --username AWS --password-stdin 123456789.dkr.ecr.us-east-1.amazonaws.com + ``` + + - Authenticate with your public `spectro-images` registry: + + - ``: Replace with the region where your ECR repository is hosted. + - ``: Replace with the URL to your public ECR registry. + + ```shell + aws ecr-public get-login-password --region | docker login --username AWS --password-stdin + ``` + + Consider the following example for reference. + + ```shell + aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/dfa987f + ``` + + + + + +3. Prepare and export the environment variables required by the Palette airgap binary. Select one of the following tabs + for instructions on how to prepare these variables for Harbor and AWS ECR. + + + + + + - `OCI_IMAGE_REGISTRY`: The IP address or domain name of the `spectro-images` registry. + - `OCI_IMAGE_BASE`: The namespace or repository that hosts the images. + - `OCI_PACK_REGISTRY`: The IP address or domain name of the `spectro-packs` registry. + - `OCI_PACK_BASE`: The namespace or repository that hosts the packages. + + ```shell + export OCI_IMAGE_REGISTRY= + export OCI_IMAGE_BASE=spectro-images + export OCI_PACK_REGISTRY= + export OCI_PACK_BASE=spectro-packs + ``` + + Consider the following example for reference. + + ```shell + export OCI_IMAGE_REGISTRY=example.internal.com + export OCI_IMAGE_BASE=spectro-images + export OCI_PACK_REGISTRY=10.10.100.48 + export OCI_PACK_BASE=spectro-packs + ``` + + + + + + - `ECR_IMAGE_REGISTRY`: The IP address or domain name of the public `spectro-images` registry. + - `ECR_IMAGE_BASE`: The namespace or repository that hosts the images. + - `ECR_IMAGE_REGISTRY_REGION`: The AWS region where the ECR registry is located. + - `ECR_PACK_REGISTRY`: The IP address or domain name of the public `spectro-packs` registry. + - `ECR_PACK_BASE`: The namespace or repository that hosts the packages. + - `ECR_PACK_REGISTRY_REGION`: The AWS region where the ECR registry is located. + + ```shell + export ECR_IMAGE_REGISTRY= + export ECR_IMAGE_BASE=spectro-images + export ECR_IMAGE_REGISTRY_REGION= + export ECR_PACK_REGISTRY= + export ECR_PACK_BASE=spectro-packs + export ECR_PACK_REGISTRY_REGION= + ``` + + Consider the following example for reference. + + ```shell + export ECR_IMAGE_REGISTRY=public.ecr.aws/1234567890 + export ECR_IMAGE_BASE=spectro-images + export ECR_IMAGE_REGISTRY_REGION=us-east-1 + export ECR_PACK_REGISTRY=123456789.dkr.ecr.us-east-1.amazonaws.com + export ECR_PACK_BASE=spectro-packs + export ECR_PACK_REGISTRY_REGION=us-east-1 + ``` + + + + + +4. Download the airgap setup binary using the credentials our support team provided along with the binary version. Use + the following command template to set up a `VERSION` variable you'll use in the following steps. + + ```shell + export VERSION= + ``` + + Consider the following example for reference. + + ```shell + export VERSION=4.2.7 + ``` + +5. Use the following command template to download the new Palette airgap installation bin. Enter the username, + password, and the Palette airgap installation URL you received from our support team. In the output file name, + replace `` with the Palette version you're downloading. + + ```shell + curl --user : --output airgap-.bin + ``` + + Consider the following command example for reference. + + ```shell + curl --user : --output airgap-4.2.7.bin https://software.spectrocloud.com/airgap-v4.2.7.bin + ``` + +6. Use the following command template to execute the new Palette airgap installation bin. + + ```shell + chmod +x airgap-v$VERSION.bin && ./airgap-v$VERSION.bin + ``` + + After the binary execution is done, you should receive the following success message (the example is shortened for + brevity). As a result of starting the binary, you should have a `spectro-manifests` archive in your temporary + directory. + + ```shell + Verifying archive integrity... 100% MD5 checksums are OK. All good. + Uncompressing Airgap Setup - Version 4.0.17 100% + Setting up Packs + - Pushing Pack cni-calico:3.25.1 + ... + Setting up Images + - Pushing image docker.io/kindest/kindnetd:v20230227-15197099 + - Pushing image gcr.io/cloud-provider-vsphere/cpi/release/manager:v1.22.8 + ... + // highlight-start + Preparing Manifests Archive + Manifests are available in /tmp/spectro-manifests-1696971110.zip. Extract the archive to a file server to serve as a Spectro Cloud Repository + // highlight-end + Setup Completed + ``` + +7. Move the `spectro-manifests` archive to a directory that your file server can access and use the following command + template to unzip it. + + ```shell + unzip spectro-manifests-.zip -d /target/folder + ``` + +8. Refer to the [Additional Packs](../../install-palette/airgap/supplemental-packs.md) page and update the packages you + are currently using. You must update each package separately. + + :::info + + Depending on your underlying infrastructure provider and Kubernetes distribution, you may need to modify the + following Palette upgrade steps to match your environment. + + ::: + +9. Navigate to the directory with the Palette installation zip file. Unzip the file to a **palette-install** directory. + + ```shell + unzip release-*.zip -d palette-install + ``` + +10. Navigate to the release directory inside **palette-install**. + + ```shell + cd palette-install/charts/release-* + ``` + +11. In a code editor of your choice, open the **extras/cert-manager/values.yaml** file and replace the + `controllerImage`, `webhookImage`, and `amceResolverImage` image URLs with your OCI image registry URLs. + + ```yaml + image: + cainjectorImage: "gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-cainjector:spectro-v1.11.0-20230427" + // highlight-start + controllerImage: "/spectro-images-public/release-fips/jetstack/cert-manager-controller:spectro-v1.11.0-20230427" + webhookImage: "/spectro-images-public/release-fips/jetstack/cert-manager-webhook:spectro-v1.11.0-20230808" + amceResolverImage: "/spectro-images-public/release-fips/jetstack/cert-manager-acmesolver:spectro-v1.11.0-20230427" + // highlight-end + + featureGates: "AdditionalCertificateOutputFormats=true" + ``` + + Consider the following example for reference. + + ```yaml + image: + cainjectorImage: "gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-cainjector:spectro-v1.11.0-20230427" + // highlight-start + controllerImage: "harbor.docs.spectro.dev/spectro-images-public/release-fips/jetstack/cert-manager-controller:spectro-v1.11.0-20230427" + webhookImage: "harbor.docs.spectro.dev/spectro-images-public/release-fips/jetstack/cert-manager-webhook:spectro-v1.11.0-20230808" + amceResolverImage: "harbor.docs.spectro.dev/spectro-images-public/release-fips/jetstack/cert-manager-acmesolver:spectro-v1.11.0-20230427" + // highlight-end + + featureGates: "AdditionalCertificateOutputFormats=true" + ``` + +12. Update the cert-manager chart using the following command. + + ```shell + helm upgrade --values extras/cert-manager/values.yaml \ + cert-manager extras/cert-manager/cert-manager-*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "cert-manager" has been upgraded. Happy Helming! + NAME: cert-manager + LAST DEPLOYED: Thu Feb 22 19:42:33 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +13. Prepare the Palette configuration file `values.yaml`. If you saved `values.yaml` used during the Palette + installation, you can reuse it for the upgrade. Alternatively, follow the + [Kubernetes Installation Instructions](../../install-palette/install-on-kubernetes/install.md) to populate your + `values.yaml`. + + :::warning + + Ensure that the `values.yaml` file is ready before proceeding. Specifically, make sure that the `ociPackEcrRegistry` + and `ociImageRegistry` configurations include the parameters necessary to interact with your `spectro-images` and + `spectro-packs` repositories. + + ::: + +14. Upgrade the image-swap chart with the following command. Point to the `palette/values.yaml` file from step twelve. + + ```shell + helm upgrade --values palette/values.yaml \ + image-swap extras/image-swap/image-swap-*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "image-swap" has been upgraded. Happy Helming! + NAME: image-swap + LAST DEPLOYED: Thu Feb 22 19:44:13 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +15. Upgrade the reach-system chart with the following command. Point to the `palette/values.yaml` file from step twelve. + + ```shell + helm upgrade --values palette/values.yaml \ + reach-system extras/reach-system/reach-system-\*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "reach-system" has been upgraded. Happy Helming! + NAME: reach-system + LAST DEPLOYED: Thu Feb 22 19:47:10 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +16. Upgrade Palette with the following command. + + ```shell + helm upgrade --values palette/values.yaml \ + hubble palette/spectro-mgmt-plane-\*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "hubble" has been upgraded. Happy Helming! + NAME: hubble + LAST DEPLOYED: Thu Feb 22 20:05:24 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +17. Use the following command to track the upgrade process. + + ```shell + kubectl get pods --all-namespaces --watch + ``` + + :::tip + + For a more user-friendly experience, consider using [K9s](https://k9scli.io/) or a similar tool to track the + upgrade. + + ::: + + The upgrade usually takes up to five minutes. Palette is upgraded when the deployments in the namespaces + `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system` , and `ui-system` are in the **Ready** status. + +## Validate + +1. In your terminal, issue the following command. + + ```shell + helm ls + ``` + + You should receive an output with the version and other details of the currently deployed apps. Check the + `App Version` column of `cert-manager`, `image-swap`, `reach-system`, and `hubble` to verify that they have the + expected versions. + + ```shell + NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION + cert-manager default 2 2024-02-22 19:42:33.776829 +0100 CET deployed cert-manager-1.11.0 1.11.0 + image-swap default 2 2024-02-22 19:44:13.209592 +0100 CET deployed image-swap-v1.5.2-spectro-4.1.1 1.5.2 + reach-system default 2 2024-02-22 19:47:10.558061 +0100 CET deployed reach-system-4.2.0 4.2.0 + hubble default 2 2024-02-22 19:47:24.085305 +0100 CET deployed spectro-mgmt-plane-4.2.7 4.2.7 + ``` + +2. Issue the following command to verify that the Palette clusters work as expected. + + ```shell + kubectl get pods --all-namespaces --output custom-columns="NAMESPACE:metadata.namespace,NAME:metadata.name,STATUS:status.phase" \ + | grep -E '^(cp-system|hubble-system|ingress-nginx|jet-system|ui-system)\s' + ``` + + The command should return a list of deployments in the `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system`, + and `ui-system` namespaces. All deployments should have the status `Running`. + + ```shell + cp-system spectro-cp-ui-689984f88d-54wsw Running + hubble-system auth-85b748cbf4-6drkn Running + hubble-system auth-85b748cbf4-dwhw2 Running + hubble-system cloud-fb74b8558-lqjq5 Running + hubble-system cloud-fb74b8558-zkfp5 Running + hubble-system configserver-685fcc5b6d-t8f8h Running + hubble-system event-68568f54c7-jzx5t Running + hubble-system event-68568f54c7-w9rnh Running + hubble-system foreq-6b689f54fb-vxjts Running + hubble-system hashboard-897bc9884-pxpvn Running + hubble-system hashboard-897bc9884-rmn69 Running + hubble-system hutil-6d7c478c96-td8q4 Running + hubble-system hutil-6d7c478c96-zjhk4 Running + hubble-system mgmt-85dbf6bf9c-jbggc Running + hubble-system mongo-0 Running + hubble-system mongo-1 Running + hubble-system mongo-2 Running + hubble-system msgbroker-6c9b9fbf8b-mcsn5 Running + hubble-system oci-proxy-7789cf9bd8-qcjkl Running + hubble-system packsync-28205220-bmzcg Succeeded + hubble-system spectrocluster-6c57f5775d-dcm2q Running + hubble-system spectrocluster-6c57f5775d-gmdt2 Running + hubble-system spectrocluster-6c57f5775d-sxks5 Running + hubble-system system-686d77b947-8949z Running + hubble-system system-686d77b947-cgzx6 Running + hubble-system timeseries-7865bc9c56-5q87l Running + hubble-system timeseries-7865bc9c56-scncb Running + hubble-system timeseries-7865bc9c56-sxmgb Running + hubble-system user-5c9f6c6f4b-9dgqz Running + hubble-system user-5c9f6c6f4b-hxkj6 Running + ingress-nginx ingress-nginx-controller-2txsv Running + ingress-nginx ingress-nginx-controller-55pk2 Running + ingress-nginx ingress-nginx-controller-gmps9 Running + jet-system jet-6599b9856d-t9mr4 Running + ui-system spectro-ui-76ffdf67fb-rkgx8 Running + ``` diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/non-airgap.md b/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/non-airgap.md new file mode 100644 index 0000000000..b39c42d6d5 --- /dev/null +++ b/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/non-airgap.md @@ -0,0 +1,231 @@ +--- +sidebar_label: "Non-airgap" +title: "Upgrade Palette Installed with Kubernetes" +description: "Learn how to upgrade self-hosted non-airgap Palette with Helm and Kubernetes." +icon: "" +sidebar_position: 0 +tags: ["palette", "self-hosted", "non-airgap", "kubernetes", "management", "upgrades"] +keywords: ["self-hosted", "enterprise"] +--- + +This guide takes you through the process of upgrading a self-hosted Palette instance installed with Helm on Kubernetes. + +:::warning + +Before upgrading Palette to a new major version, you must first update it to the latest minor version available. Refer +to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for details. + +::: + +If your setup includes a PCG, you must also +[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette upgrade. + +## Prerequisites + +- [`kubectl`](https://kubernetes.io/docs/tasks/tools/#kubectl) and [`helm`](https://helm.sh/docs/intro/install/) + available in your system. + +- Access to the kubeconfig file of the target Kubernetes cluster. You must be able to interact with the cluster through + `kubectl` and have sufficient permissions to upgrade Palette. We recommend using a role with the cluster-admin + permissions. + +- `unzip` or a similar tool available in your system. + +- Access to the latest Palette Helm Chart. Refer to [Access Palette](/enterprise-version/#access-palette) for more + details. + +## Upgrade + +:::info + +Depending on your underlying infrastructure provider and Kubernetes distribution, you may need to modify these steps to +match your environment. + +::: + +1. Open a terminal session and navigate to the directory with the Palette installation zip file. Unzip the file to a + **palette-install** directory. + + ```shell + unzip release-*.zip -d palette-install + ``` + +2. Navigate to the release directory inside **palette-install**. + + ```shell + cd palette-install/charts/release-* + ``` + +3. Update the cert-manager chart using the following command. + + ```shell + helm upgrade --values extras/cert-manager/values.yaml \ + cert-manager extras/cert-manager/cert-manager-*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "cert-manager" has been upgraded. Happy Helming! + NAME: cert-manager + LAST DEPLOYED: Thu Feb 22 19:42:33 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +4. Prepare the Palette configuration file `values.yaml`. If you saved `values.yaml` used during the Palette + installation, you can reuse it for the upgrade. Alternatively, follow the + [Kubernetes Installation Instructions](../../install-palette/install-on-kubernetes/install.md) to populate your + `values.yaml`. + + :::warning + + Ensure that the `values.yaml` file is ready before proceeding. If you're using a self-hosted OCI registry, make sure + that the `ociImageRegistry.mirrorRegistries` parameter in your `values.yaml` includes the necessary mirror links. + + ::: + +5. If you are using a self-hosted OCI registry, upgrade the image-swap chart with the following command. Point to the + `palette/values.yaml` file from step four. + + ```shell + helm upgrade --values palette/values.yaml \ + image-swap extras/image-swap/image-swap-*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "image-swap" has been upgraded. Happy Helming! + NAME: image-swap + LAST DEPLOYED: Thu Feb 22 19:44:13 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +6. If you are upgrading a Palette instance in an environment that requires network proxy configuration, upgrade the + reach-system chart with the following command. Point to the `palette/values.yaml` file from step four. + + ```shell + helm upgrade --values palette/values.yaml \ + reach-system extras/reach-system/reach-system-\*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "reach-system" has been upgraded. Happy Helming! + NAME: reach-system + LAST DEPLOYED: Thu Feb 22 19:47:10 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +7. Upgrade Palette with the following command. + + ```shell + helm upgrade --values palette/values.yaml \ + hubble palette/spectro-mgmt-plane-\*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "hubble" has been upgraded. Happy Helming! + NAME: hubble + LAST DEPLOYED: Thu Feb 22 20:05:24 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +8. Use the following command to track the upgrade process. + + ```shell + kubectl get pods --all-namespaces --watch + ``` + + :::tip + + For a more user-friendly experience, consider using [K9s](https://k9scli.io/) or a similar tool to track the upgrade. + + ::: + + The upgrade usually takes up to five minutes. Palette is upgraded when the deployments in the namespaces `cp-system`, + `hubble-system`, `ingress-nginx`, `jet-system` , and `ui-system` are in the **Ready** status. + +## Validate + +1. In your terminal, issue the following command. + + ```shell + helm ls + ``` + + You should receive an output with the version and other details of the currently deployed apps. Check the + `App Version` column of `cert-manager`, `image-swap`, `reach-system`, and `hubble` to verify that they have the + expected versions. + + ```shell + NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION + cert-manager default 2 2024-02-22 19:42:33.776829 +0100 CET deployed cert-manager-1.11.0 1.11.0 + image-swap default 2 2024-02-22 19:44:13.209592 +0100 CET deployed image-swap-v1.5.2-spectro-4.1.1 1.5.2 + reach-system default 2 2024-02-22 19:47:10.558061 +0100 CET deployed reach-system-4.2.0 4.2.0 + hubble default 2 2024-02-22 19:47:24.085305 +0100 CET deployed spectro-mgmt-plane-4.2.7 4.2.7 + ``` + +2. Issue the following command to verify that the Palette clusters work as expected. + + ```shell + kubectl get pods --all-namespaces --output custom-columns="NAMESPACE:metadata.namespace,NAME:metadata.name,STATUS:status.phase" \ + | grep -E '^(cp-system|hubble-system|ingress-nginx|jet-system|ui-system)\s' + ``` + + The command should return a list of deployments in the `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system`, + and `ui-system` namespaces. All deployments should have the status `Running`. + + ```shell + cp-system spectro-cp-ui-689984f88d-54wsw Running + hubble-system auth-85b748cbf4-6drkn Running + hubble-system auth-85b748cbf4-dwhw2 Running + hubble-system cloud-fb74b8558-lqjq5 Running + hubble-system cloud-fb74b8558-zkfp5 Running + hubble-system configserver-685fcc5b6d-t8f8h Running + hubble-system event-68568f54c7-jzx5t Running + hubble-system event-68568f54c7-w9rnh Running + hubble-system foreq-6b689f54fb-vxjts Running + hubble-system hashboard-897bc9884-pxpvn Running + hubble-system hashboard-897bc9884-rmn69 Running + hubble-system hutil-6d7c478c96-td8q4 Running + hubble-system hutil-6d7c478c96-zjhk4 Running + hubble-system mgmt-85dbf6bf9c-jbggc Running + hubble-system mongo-0 Running + hubble-system mongo-1 Running + hubble-system mongo-2 Running + hubble-system msgbroker-6c9b9fbf8b-mcsn5 Running + hubble-system oci-proxy-7789cf9bd8-qcjkl Running + hubble-system packsync-28205220-bmzcg Succeeded + hubble-system spectrocluster-6c57f5775d-dcm2q Running + hubble-system spectrocluster-6c57f5775d-gmdt2 Running + hubble-system spectrocluster-6c57f5775d-sxks5 Running + hubble-system system-686d77b947-8949z Running + hubble-system system-686d77b947-cgzx6 Running + hubble-system timeseries-7865bc9c56-5q87l Running + hubble-system timeseries-7865bc9c56-scncb Running + hubble-system timeseries-7865bc9c56-sxmgb Running + hubble-system user-5c9f6c6f4b-9dgqz Running + hubble-system user-5c9f6c6f4b-hxkj6 Running + ingress-nginx ingress-nginx-controller-2txsv Running + ingress-nginx ingress-nginx-controller-55pk2 Running + ingress-nginx ingress-nginx-controller-gmps9 Running + jet-system jet-6599b9856d-t9mr4 Running + ui-system spectro-ui-76ffdf67fb-rkgx8 Running + ``` diff --git a/docs/docs-content/enterprise-version/upgrade.md b/docs/docs-content/enterprise-version/upgrade/upgrade-notes.md similarity index 70% rename from docs/docs-content/enterprise-version/upgrade.md rename to docs/docs-content/enterprise-version/upgrade/upgrade-notes.md index 4244da5ada..308e24e090 100644 --- a/docs/docs-content/enterprise-version/upgrade.md +++ b/docs/docs-content/enterprise-version/upgrade/upgrade-notes.md @@ -1,20 +1,38 @@ --- sidebar_label: "Upgrade Notes" title: "Upgrade Notes" -description: "Spectro Cloud upgrade notes for specific Palette versions." +description: "Learn how to upgrade self-hosted Palette instances." icon: "" -hide_table_of_contents: false -sidebar_position: 100 -tags: ["palette", "self-hosted", "upgrade"] -keywords: ["self-hosted", "enterprise"] +sidebar_position: 0 +tags: ["palette", "self-hosted", "airgap", "kubernetes", "upgrade"] +keywords: ["self-hosted", "enterprise", "airgap", "kubernetes"] --- -This page is a reference resource to help you better prepare for a Palette upgrade. Review each version's upgrade notes -for more information about required actions and other important messages to be aware of. If you have questions or -concerns, reach out to our support team by opening up a ticket through our -[support page](http://support.spectrocloud.io/). +This page offers version-specific reference to help you prepare for upgrading self-hosted Palette instances. -## Palette 4.0 +## Palette 3.4 + +Prior versions of Palette installed internal Palette component ingress resources in the default namespace. The new +version of the Helm Chart ensures all Palette required ingress resources are installed in the correct namespace. +Self-hosted Palette instances deployed to Kubernetes and upgrading from Palette versions 3.3.X or older must complete +the following action. + +1. Connect to the cluster using the cluster's kubeconfig file. + +2. Identify all Ingress resources that belong to _Hubble_ - an internal Palette component. + + ```shell + kubectl get ingress --namespace default + ``` + +3. Remove each Ingress resource listed in the output that starts with the name Hubble. Use the following command to + delete an Ingress resource. Replace `REPLACE_ME` with the name of the Ingress resource you are removing. + + ```shell + kubectl delete ingress --namespace default + ``` + +## Upgrade Palette 3.x to 4.0 Palette 4.0 includes the following major enhancements that require user intervention to facilitate the upgrade process. @@ -24,29 +42,28 @@ Palette 4.0 includes the following major enhancements that require user interven If you already have an SSL certificate, key, and Certificate Authority (CA) certificate, you can use them when upgrading to Palette 4.0.0. To learn how to upload SSL certificates to Palette, refer to - [SSL Certificate Management](system-management/ssl-certificate-management.md). + [SSL Certificate Management](../system-management/ssl-certificate-management.md). - **Self-hosted Palette Kubernetes Upgrade** - If you installed Palette using the Helm Chart method, the Kubernetes version used for Palette is upgraded from version 1.24 to 1.25. You will need to copy the new Kubernetes YAML to the Kubernetes layer in the Enterprise cluster profile. If you have customized your Kubernetes configuration, you will need to manually adjust custom values and include any additional configuration in the upgraded YAML that we provide. - Refer to [Upgrade Kubernetes](#upgrade-kubernetes). + Refer to [Upgrade Enterprise Cluster Profile](#upgrade-enterprise-cluster-profile). -### Upgrade from Palette 3.x to 4.0 +### Upgrade with VMware From the Palette system console, click the **Update version** button. Palette will be temporarily unavailable while system services update. ![Screenshot of the "Update version" button in the system consoles.](/enterprise-version_sys-console-update-palette-version.webp) -#### Upgrade Kubernetes +### Upgrade Enterprise Cluster Profile Follow the steps below to upgrade Kubernetes. -1. To obtain the upgraded Kubernetes YAML file for Palette 4.0, contact our support team by sending an email to - support@spectrocloud.com. +1. Log in to the Palette system console. -2. In the system console, click on **Enterprise Cluster Migration**. +2. From the left **Main Menu**, click **Enterprise Cluster Migration**. 3. Click on the **Profiles** tab, and select the Kubernetes layer. The Kubernetes YAML is displayed in the editor at right. @@ -56,34 +73,10 @@ Follow the steps below to upgrade Kubernetes. 5. Copy the Kubernetes YAML you received from our support team and paste it into the editor. -
- -![Screenshot of the Kubernetes YAML editor.](/enterprise-version_upgrade_ec-cluster-profile.webp) + ![Screenshot of the Kubernetes YAML editor.](/enterprise-version_upgrade_ec-cluster-profile.webp) 6. If you have made any additional configuration changes or additions, add your customizations to the new YAML. 7. Save your changes. The Enterprise cluster initiates the Kubernetes upgrade process and leads to the reconciliation of all three nodes. - -## Palette 3.4 - -Prior versions of Palette installed internal Palette components' ingress resources in the default namespace. The new -version of the Helm Chart ensures all Palette required ingress resources are installed in the correct namespace. -Self-hosted Palette instances deployed to Kubernetes and upgrading from Palette versions 3.3.X or older must complete -the following action. - -1. Connect to the cluster using the cluster's kubeconfig file. - -2. Identify all Ingress resources that belong to _Hubble_ - an internal Palette component. - - ```shell - kubectl get ingress --namespace default - ``` - -3. Remove each Ingress resource listed in the output that starts with the name Hubble. Use the following command to - delete an Ingress resource. Replace `REPLACE_ME` with the name of the Ingress resource you are removing. - - ```shell - kubectl delete ingress --namespace default - ``` diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/_category_.json b/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/_category_.json new file mode 100644 index 0000000000..11b11b09b2 --- /dev/null +++ b/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "VMware", + "position": 0 +} diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/airgap.md b/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/airgap.md new file mode 100644 index 0000000000..77353cf01e --- /dev/null +++ b/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/airgap.md @@ -0,0 +1,162 @@ +--- +sidebar_label: "Airgap" +title: "Upgrade Airgap Palette Installed on VMware vSphere" +description: "Learn how to upgrade self-hosted airgap Palette in VMware." +icon: "" +sidebar_position: 10 +tags: ["palette", "self-hosted", "vmware", "airgap", "upgrade"] +keywords: ["self-hosted", "enterprise"] +--- + +This guide takes you through the process of upgrading a self-hosted airgap Palette instance installed on VMware vSphere. + +:::warning + +Before upgrading Palette to a new major version, you must first update it to the latest minor version available. Refer +to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for details. + +::: + +If your setup includes a PCG, you must also +[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette upgrade. + +## Prerequisites + +- Access to the Palette system console. + +- Access to the Palette airgap support Virtual Machine (VM) that you used for the initial Palette installation. + +- Refer to [Access Palette](../../enterprise-version.md#access-palette) to download the new airgap Palette installation + bin. + +- A diff or text comparison tool of your choice. + +## Upgrade + +1. Use the following command template to SSH into the Palette airgap support VM. Enter the path to your private SSH + key, your username, and the IP or domain of the airgap support VM. The default username is `ubuntu`. + + ```shell + ssh -identity_file ubuntu@ + ``` + + Consider the following command example for reference. + + ```shell + ssh -identity_file /docs/ssh-private-key.pem ubuntu@palette.example.com + ``` + +2. Use the following command to switch to the `root` user account, which you need to proceed with the upgrade. + + ```shell + sudo --login + ``` + +3. Use the following command template to download the new Palette airgap installation bin. Enter the username, + password, and the Palette airgap installation URL you received from our support team. In the output file name, + replace `` with the Palette version you are downloading. + + ```shell + curl --user : --output airgap-.bin + ``` + + Consider the following command example for reference. + + ```shell + curl --user : --output airgap-4.2.12.bin https://software.spectrocloud.com/airgap-v4.2.12.bin + ``` + +4. Refer to the [Additional Packs](../../install-palette/airgap/supplemental-packs.md) page and update the packages you + are currently using. You must update each package separately. + +5. Use the following command template to execute the new Palette airgap installation bin. + + ```shell + chmod +x airgap-.bin && ./airgap-.bin + ``` + + Consider the following example for reference. + + ```shell + chmod +x airgap-v4.2.13.bin && ./airgap-v4.2.13.bin + ``` + +6. After the Palette airgap binary is verified and uncompressed, it uploads the updates to your existing Palette + instance. This step takes some time to complete. + + ```shell + Verifying archive integrity... 100% MD5 checksums are OK. All good. + Uncompressing Airgap Setup - Version 4.2.13 100% + Setting up CLI + Setting up Manifests + Setting up Packs + ... + + //highlight-next-line + Setup Completed + ``` + + Once the airgap binary is executed, you will receive a **Setup Completed** success message. + +7. Log in to the Palette system console. + +8. From the left **Main Menu**, select **Enterprise Cluster** and then select the **Profile** tab. + +9. Copy the configurations for your CSI, CNI, and Kubernetes layers to an external location for backup. + + :::tip + + If your Enterprise Cluster profile has configuration changes or additions, make sure to back up all the customized + values to preserve them after the upgrade. + + ::: + + ![Self-hosted Palette system console with the highlighted Enterprise Cluster profile configuration values.](/enterprise-version_upgrade-upgrade_vmware_non-airgap_copy_configurations.webp) + +10. From the left **Main Menu**, select **Administration** > **Pack Registries**. Then, next to your **spectro-packs** + registry, select the **three-dot Menu** > **Sync**. + + Palette initiates a registry sync, which can take up to 30 minutes to complete. + +11. From the left **Main Menu**, select **Update Management**. Once the registry sync is done, Palette will prompt you + to update to the new version. Click **Update**. + + ![Self-hosted Palette system console with Update Management open and the Update button highlighted.](/enterprise-version_upgrade-upgrade_vmware_non-airgap_update.webp) + +12. In the **Palette version update** preview modal, from the left menu, select the **Kubernetes** layer. The **Incoming + changes** pane displays the changes that the upgrade introduces. The **Current configuration** pane displays your + current layer configuration. + + :::info + + To complete the Palette upgrade, we recommend using an external diff or text comparison tool. Proceed with the + following steps once you have the comparison tool available next to the Palette system console. + + ::: + +13. Copy the configurations from both **Incoming changes** and **Current configuration** panes to your comparison tool. + +14. From your current configuration, transfer only those differences that are custom to your self-hosted Palette + instance (for example, the `podCIDR` and `serviceClusterIpRange` values). Do not override any other changes or + upgrades. + + ![Self-hosted Palette system console with the upgrade preview pane.](/enterprise-version_upgrade-upgrade_vmware_diff-checker.webp) + +15. After you finish merging the configurations, copy the resulting configuration, and then paste it to the **Current + configuration** pane in the Palette system console. + + ![Self-hosted Palette system console with the upgrade preview pane.](/enterprise-version_upgrade-upgrade_vmware_palette-upgrade-preview.webp) + +16. Repeat steps six through eight for each Enterprise Cluster profile layer. + +17. In the bottom-right corner of the **Palette version update** preview modal, select **Confirm**. + + The system console locks for a couple of minutes while the upgrade is applied. + +## Validate + +1. Log in to the Palette system console. + +2. On the **Summary** page, Palette should display messages that state **You are using the latest version of Palette** + and **On-prem system console is healthy**. diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/non-airgap.md b/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/non-airgap.md new file mode 100644 index 0000000000..b51e3ba582 --- /dev/null +++ b/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/non-airgap.md @@ -0,0 +1,84 @@ +--- +sidebar_label: "Non-airgap" +title: "Upgrade Palette Installed on VMware vSphere" +description: "Learn how to upgrade self-hosted Palette in VMware vSphere." +icon: "" +sidebar_position: 0 +tags: ["palette", "self-hosted", "vmware", "non-airgap", "upgrade"] +keywords: ["self-hosted", "enterprise"] +--- + +This guide takes you through the process of upgrading a self-hosted Palette instance installed on VMware vSphere. + +:::warning + +Before upgrading Palette to a new major version, you must first update it to the latest minor version available. Refer +to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for details. + +::: + +If your setup includes a PCG, you must also +[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette upgrade. + +## Prerequisites + +- Access to the Palette system console. +- A diff or text comparison tool of your choice. + +## Upgrade + +1. Log in to the Palette system console. + +2. From the left **Main Menu**, select **Enterprise Cluster** and then select the **Profile** tab. + +3. Copy the configurations for your CSI, CNI, and Kubernetes layers to an external location for backup. + + :::tip + + If your Enterprise Cluster profile has configuration changes or additions, make sure to back up all the customized + values to preserve them after the upgrade. + + ::: + + ![Self-hosted Palette system console with the highlighted Enterprise Cluster profile configuration values.](/enterprise-version_upgrade-upgrade_vmware_non-airgap_copy_configurations.webp) + +4. From the left **Main Menu**, select **Update Management** and click **Update**. + + ![Self-hosted Palette system console with Update Management open and the Update button highlighted.](/enterprise-version_upgrade-upgrade_vmware_non-airgap_update.webp) + +5. In the **Palette version update** preview modal, from the left menu, select the **Kubernetes** layer. The **Incoming + changes** pane displays the changes that the upgrade introduces. The **Current configuration** pane displays your + current layer configuration. + + :::info + + To complete the Palette upgrade, we recommend using an external diff or text comparison tool. Proceed with the + following steps once you have the comparison tool available next to the Palette system console. + + ::: + +6. Copy the configurations from both **Incoming changes** and **Current configuration** panes to your comparison tool. + +7. From your current configuration, transfer only those differences that are custom to your self-hosted Palette instance + (for example, the `podCIDR` and `serviceClusterIpRange` values). Do not override any other changes or upgrades. + + ![Self-hosted Palette system console with the upgrade preview pane.](/enterprise-version_upgrade-upgrade_vmware_diff-checker.webp) + +8. After you finish merging the configurations, copy the resulting configuration, and then paste it to the **Current + configuration** pane in the Palette system console. + + ![Self-hosted Palette system console with the upgrade preview pane.](/enterprise-version_upgrade-upgrade_vmware_palette-upgrade-preview.webp) + +9. Repeat steps six through eight for each Enterprise Cluster profile layer. + +10. In the bottom-right corner of the **Palette version update** preview modal, select **Confirm**. + + The system console locks for a couple of minutes while the upgrade is applied. + +## Validate + +1. Log in to the Palette system console. + +2. On the **Summary** page, Palette should display messages that state **You are using the latest version of Palette** + and **On-prem system console is healthy**. diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade.md b/docs/docs-content/enterprise-version/upgrade/upgrade.md new file mode 100644 index 0000000000..fb8c8a97e0 --- /dev/null +++ b/docs/docs-content/enterprise-version/upgrade/upgrade.md @@ -0,0 +1,49 @@ +--- +sidebar_label: "Upgrade" +title: "Upgrade" +description: "Spectro Cloud upgrade notes for specific Palette versions." +icon: "" +hide_table_of_contents: false +sidebar_position: 100 +tags: ["palette", "self-hosted", "upgrade"] +keywords: ["self-hosted", "enterprise"] +--- + +This page offers links and reference information for upgrading self-hosted Palette instances. If you have questions or +concerns, [reach out to our support team](http://support.spectrocloud.io/). + +:::info + +If your setup includes a PCG, make sure to +[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette upgrade. + +::: + +## Supported Upgrade Paths + +Refer to the following table for the self-hosted Palette upgrade paths that we currently support. + +:::warning + +Before upgrading Palette to a new major version, you must first update it to the latest minor version available. + +::: + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.2.13 | 4.3.6 | :white_check_mark: | +| 4.2.7 | 4.2.13 | :white_check_mark: | +| 4.1.x | 4.3.6 | :x: | +| 4.1.12 | 4.2.7 | :white_check_mark: | +| 4.1.7 | 4.2.7 | :white_check_mark: | + +## Upgrade Guides + +Refer to the respective guide for guidance on upgrading your self-hosted Palette instance. + +- [Upgrade Notes](upgrade-notes.md) +- [Non-Airgap VMware](upgrade-vmware/non-airgap.md) +- [Airgap VMware](upgrade-vmware/airgap.md) +- [Non-Airgap Kubernetes](upgrade-k8s/non-airgap.md) +- [Airgap Kubernetes](upgrade-k8s/airgap.md) diff --git a/docs/docs-content/getting-started/terraform.md b/docs/docs-content/getting-started/terraform.md index cafee6a126..62ecc5c573 100644 --- a/docs/docs-content/getting-started/terraform.md +++ b/docs/docs-content/getting-started/terraform.md @@ -554,8 +554,8 @@ podman rmi --force ghcr.io/spectrocloud/tutorials:1.1.3 In this tutorial, you created a cluster profile, which is a template that contains the core layers required to deploy a host cluster. You then deployed a host cluster onto your preferred cloud service provider using Terraform. -We encourage you to check out the [Deploy an Application using Palette Dev Engine](../devx/apps/deploy-app) tutorial to -learn more about Palette. Palette Dev Engine can help you deploy applications more quickly through the usage of +We encourage you to check out the [Deploy an Application using Palette Dev Engine](../devx/apps/deploy-app.md) tutorial +to learn more about Palette. Palette Dev Engine can help you deploy applications more quickly through the usage of [virtual clusters](../glossary-all.md#palette-virtual-cluster). Feel free to check out the reference links below to learn more about Palette. diff --git a/docs/docs-content/glossary-all.md b/docs/docs-content/glossary-all.md index be9a340b1a..5b87320da9 100644 --- a/docs/docs-content/glossary-all.md +++ b/docs/docs-content/glossary-all.md @@ -68,6 +68,10 @@ fully encrypted using the tenant's unique encryption key. Cluster Mode enables you to create, deploy, and manage Kubernetes clusters and applications. In Cluster Mode, you can deploy Kubernetes clusters to public cloud providers, on-prem data centers, and on the edge. +## Cluster Definition + +A Cluster Definition contains one or more cluster profiles, including profile variables used in those profiles. + ## Cluster Profile A Cluster Profile is a declarative model of a Kubernetes infrastructure stack. A Kubernetes infrastructure stack is @@ -85,6 +89,12 @@ The diagram below shows an example of a cluster profile: For more information, check out [Cluster Profiles](profiles/cluster-profiles/cluster-profiles.md). +## Cluster Profile Variable + +Cluster Profile Variables enable you to create placeholders for parameters in profile layer configurations, which you +can then populate for individual clusters during deployment. Meaning you can use a single cluster profile to deploy +multiple clusters with unique requirements for security, networking, resource allocation, and so on. + ## Edge Appliances Palette supports several kinds of appliances for the Edge deployment. These appliances can be registered with the @@ -108,6 +118,12 @@ Clusters on such edge appliances from its SaaS-based management console. Besides also provides end-to-end management of these clusters through operations such as scaling, upgrades, reconfiguration, etc. +## Local UI + +Local UI is a browser-based tool that allows you to manage your Edge host and perform tasks such as creating local +clusters, upload content bundles, and configure network settings. Local UI is a Tech Preview feature and should not be +used in production workloads. + ## Helm Charts Helm Charts are Kubernetes YAML manifests that describe a related set of Kubernetes resources into a single package. @@ -165,7 +181,7 @@ are not part of any Palette pack or a chart. Pack manifests provide a pass-throu through raw manifests. Pack Manifest layers can be added to a cluster profile stack built using Spectro Packs and Charts. -## Palette Edge Manager (Local API) +## Palette Edge Manager (Edge Host API) A cmd line API that supports TUI operations & site diagnostics. For Dark Site or Air Gapped environments Palette Edge Manager can be used to upload cluster configurations. @@ -322,10 +338,10 @@ on the running cluster. ## System Administrator -The self-hosted Palette or Palette VerteX user with access to the -[system console](#system-console-on-prem-system-console). +The self-hosted Palette or Palette VerteX user with access to the system console and can perform various operations +based on their assigned role. Palette supports multiple system administrator roles. -## System Console (On-prem System Console) +## System Console The console is used to scale up the Enterprise cluster and manage it. The System console supports creating and activating a new tenant in a new instance. It Initiates the installation of a Palette Enterprise Cluster. The On-Prem diff --git a/docs/docs-content/integrations/byoos.md b/docs/docs-content/integrations/byoos.md index 489fdbf6f6..710e2e3261 100644 --- a/docs/docs-content/integrations/byoos.md +++ b/docs/docs-content/integrations/byoos.md @@ -37,8 +37,8 @@ BYOOS pack can be used with both Edge and non-Edge environments.
- The Edge Provider images you have created and uploaded to a container registry. Refer to the - [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos.md) guide for steps on how to create the - Edge artifacts and how to upload your custom OS to a registry. + [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md) guide for steps on how to + create the Edge artifacts and how to upload your custom OS to a registry. - Palette 3.3.0 or greater. @@ -89,13 +89,13 @@ BYOOS enables you to use a custom OS for your Edge host. You can use this featur specifications of your OS layer in the Edge host. You can reference the custom OS through the BYOOS pack. To use a custom OS, you must include all the Edge artifacts and provider images required by the Edge Installer in the -custom OS. Refer to the [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos.md) guide for steps on -how to create a custom OS that includes all the required components for the Edge Installer. +custom OS. Refer to the [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md) +guide for steps on how to create a custom OS that includes all the required components for the Edge Installer. Select the BYOOS pack and fill out the required parameters during the cluster profile creation process. The `system.uri` parameter specifies the location of the BYOOS image. Refer to the -[Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos.md) guide to learn how to create Edge -Artifacts. +[Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md) guide to learn how to +create Edge Artifacts. ![A view of the Kubernetes pack editor with a YAML configuration](/clusters_site-deployment_model-profile_byoos-pack-yaml.webp) @@ -113,8 +113,8 @@ To use the non-Edge BYOOS pack, you must have the following:
- A custom OS that you created. Refer to the - [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos.md) guide to learn how to create a custom OS - for Palette. + [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md) guide to learn how to + create a custom OS for Palette. ## Parameters @@ -162,8 +162,8 @@ pack: ![View of the cluster profile wizard](/clusters_byoos_image-builder_cluster-profile-byoos-yaml.webp) -Check out the [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos.md) guide to learn to create a -custom image for Palette. +Check out the [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md) guide to +learn to create a custom image for Palette. --- @@ -235,7 +235,7 @@ data "spectrocloud_pack_simple" "byoos" { - [Create a Custom Cluster Profile with BYOOS](../clusters/edge/site-deployment/model-profile.md) -- [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos.md) +- [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md) - [Model Edge Native Cluster Profile](../clusters/edge/site-deployment/model-profile.md) diff --git a/docs/docs-content/integrations/citrix-ipam.md b/docs/docs-content/integrations/citrix-ipam.md index 27302359d9..fe2fdc0d4c 100644 --- a/docs/docs-content/integrations/citrix-ipam.md +++ b/docs/docs-content/integrations/citrix-ipam.md @@ -46,6 +46,6 @@ Integration deploys the following components: ## References -- [Citrix IPAM Controller](https://developer-docs.citrix.com/projects/citrix-k8s-ingress-controller/en/latest/crds/vip) +- [Citrix IPAM Controller](https://docs.netscaler.com/en-us/netscaler-k8s-ingress-controller/configure/ipam-for-ingress.html) -- [Citrix Ingress controller](https://developer-docs.citrix.com/projects/citrix-k8s-ingress-controller/en/latest/network/type_loadbalancer/#expose-services-of-type-loadbalancer-using-an-ip-address-from-the-citrix-ipam-controller) +- [Citrix Ingress controller](https://docs.netscaler.com/en-us/netscaler-k8s-ingress-controller/#expose-services-of-type-loadbalancer-using-an-ip-address-from-the-citrix-ipam-controller) diff --git a/docs/docs-content/integrations/cloudanix.md b/docs/docs-content/integrations/cloudanix.md index c487d133ce..2d175d66ec 100644 --- a/docs/docs-content/integrations/cloudanix.md +++ b/docs/docs-content/integrations/cloudanix.md @@ -8,7 +8,7 @@ hide_table_of_contents: true type: "integration" category: ["security", "amd64"] sidebar_class_name: "hide-from-sidebar" -logoUrl: "https://cloudanix-assets.s3.amazonaws.com/static/cloudanix-logo-p.webp" +logoUrl: "https://cloudanix-assets.s3.amazonaws.com/static/cloudanix-logo-p.png" tags: ["packs", "cloudanix", "security"] --- @@ -128,4 +128,4 @@ data "spectrocloud_pack_simple" "cloudanix" { ## References -- [Cloudanix Documentation](https://docs.cloudanix.com/introduction) +- [Cloudanix Documentation](https://www.cloudanix.com/docs/introduction) diff --git a/docs/docs-content/integrations/falco.md b/docs/docs-content/integrations/falco.md index 49e59820ac..15787d9a98 100644 --- a/docs/docs-content/integrations/falco.md +++ b/docs/docs-content/integrations/falco.md @@ -39,4 +39,4 @@ use Falco to monitor the run-time security of your Kubernetes applications and i ## References -- [Falco Helm Chart GitHub](https://github.com/falcosecurity/charts/tree/master/falco) +- [Falco Helm Chart GitHub](https://github.com/falcosecurity/charts/tree/master/charts/falco) diff --git a/docs/docs-content/integrations/harbor-edge.md b/docs/docs-content/integrations/harbor-edge.md index 9a0d3f2189..340c99c834 100644 --- a/docs/docs-content/integrations/harbor-edge.md +++ b/docs/docs-content/integrations/harbor-edge.md @@ -37,11 +37,17 @@ cluster. You cannot manually choose a version of this pack. - All Edge devices in your cluster must have at least 4 CPUs and 8 GB of RAM. -- At least 160 GB of persistent storage volume for the cluster. The actual volume required depends on the size of the + - For single-node clusters, where there is only one Edge host handling both control plane and worker capabilities, + your Edge host must have at least 6 CPUs and 12 GB of RAM. + +- At least 300 GB of persistent storage volume for the cluster. The actual volume required depends on the size of the images used by your cluster. - A Container Storage Interface (CSI) pack is required in your cluster profile. +- In the YAML file for the Kubernetes layer of your cluster, ensure that `AlwaysPullImages` is not in the list + `enable-admission-plugins`. + ### Parameters :::tip @@ -68,7 +74,7 @@ You can use Harbor in an Edge cluster that is connected to external networks. Ha downloaded from the internet and future image pulls from the cluster will be from the local harbor registry. If your cluster experiences an internet outage, it can still reboot containers or add new nodes using images stored locally in Harbor. For more information, refer to -[Deploy a Cluster with a Local Harbor Registry](../clusters/edge/networking/local-registry.md). +[Deploy a Cluster with a Local Harbor Registry](../clusters/edge/site-deployment/deploy-custom-registries/local-registry.md). #### Log in to Harbor Web UI @@ -209,6 +215,76 @@ docker push 10.10.137.220:30003/spectro-images/alpine:latest
+#### Enable Image Download from Outside of Harbor + +If a cluster is configured with the Harbor Edge-Native Config pack, it will assume that all images will be stored in +Harbor once they are initially downloaded. However, it is important to note that only the images that are part of the +cluster profile and managed by Palette will be stored in the Harbor registry. Any images not managed by Palette will not +be available in the Harbor registry. + +This can cause issues if you want to use images that are not managed by Palette in your cluster. Harbor will not store +those images because they are not part of your cluster profile and were not requested by Palette. However, the Palette +agent in your Edge host will still try to pull those images from Harbor, resulting in ImagePullBackOff errors. + +You can apply the label `stylus.io/imageswap=disable` to a namespace, which instructs the Palette agent to not pull +images from the Harbor registry. You can do this when you create the namespace, or apply the label to existing +namespaces. As long as a namespace has the label, the Palette agent will not attempt to pull images in the namespace +from the Harbor registry. + +You can apply a label to a namespace by editing the pack YAML in the cluster's profile or use `kubectl` to add the label +through the command-line. + + + + +1. Connect to the cluster via `kubectl`. For more information, refer to + [Access Cluster with kubectl](../clusters/cluster-management/palette-webctl.md). + +2. Apply the `stylus.io/imageswap=disable` label to the namespace you plan to deploy resources in. Replace + `namespace-name` with the name of your namespace. + + ```shell + kubectl label namespace namespace-name stylus.io/imageswap=disable + ``` + +3. Deploy the resources into the namespace. Since the namespace has the label `stylus.io/imageswap=disable`, the Palette + agent will pull the image from registiries you specify instead of from the Harbor registry. + + If you already deployed the resources before applying the label, you will need to trigger another image pull action + as the label will only apply to subsequent image pulls after it has been applied. You can do this by issuing the + `kubectl apply` command again to reapply the manifest. Or use the `kubectl delete` command to delete the resource and + wait for it to be re-created. + + + + + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. From the left **Main Menu**, click on **Profiles**. + +3. Select the profile you are using to deploy your cluster. + +4. Click on **Add Manifest** to add a new manifest to your cluster profile containing the namespaces you plan to deploy + resources to. Create a namespace if needed, and apply the label `stylus.io/imageswap=disable` to the namespace. Refer + to [Profile Customizations](../profiles/profile-customization.md) for more information on how to apply labels to + namespaces. For example, the following pack YAML creates a namespaced called `"wordpress"` and applies the label + `stylus.io/imageswap=disable` to the namespace. + + ```yaml + pack: + namespace: "wordpress" + + namespaceLabels: + "wordpress": "stylus.io/imageswap=disable" + ``` + +5. Deploy the resources into the namespace. Since the namespace has the label `stylus.io/imageswap=disable`, the Palette + agent will pull the image from registiries you specify instead of from the Harbor registry. + + + + ### Known Issues The following known issues exist in the Harbor 1.0.0 release. @@ -265,6 +341,6 @@ data "spectrocloud_pack_simple" "harbor-edge-native-config" { ## Resources -- [Deploy a Cluster with a Local Harbor Registry](../clusters/edge/networking/local-registry.md) +- [Deploy a Cluster with a Local Harbor Registry](../clusters/edge/site-deployment/deploy-custom-registries/local-registry.md) - [Harbor documentation](https://goharbor.io/docs/2.4.0/install-config/) diff --git a/docs/docs-content/integrations/hello-universe.md b/docs/docs-content/integrations/hello-universe.md index 9199585e8f..04d07a59dd 100644 --- a/docs/docs-content/integrations/hello-universe.md +++ b/docs/docs-content/integrations/hello-universe.md @@ -46,8 +46,8 @@ not need to take any additional actions regarding these parameters. To utilize the Hello Universe pack, create either a [full Palette cluster profile](../profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md) or an -[add-on Palette cluster profile](../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/) and add the -pack to your profile. +[add-on Palette cluster profile](../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md) +and add the pack to your profile. If your infrastructure provider does not offer a native load balancer solution, such as VMware and MAAS, the [MetalLB](./metallb.md) pack must be included to the cluster profile to help the LoadBalancer service specified in the diff --git a/docs/docs-content/integrations/k3s.md b/docs/docs-content/integrations/k3s.md index f0175bfe24..b068779758 100644 --- a/docs/docs-content/integrations/k3s.md +++ b/docs/docs-content/integrations/k3s.md @@ -25,7 +25,7 @@ the respective owner. Once we stop supporting the minor version, we initiate the - + ### Prerequisites @@ -86,7 +86,7 @@ information. In order to use K3s as part of an Edge deployment, you need to go through the EdgeForge process and specify K3s as your intended Kubernetes distribution when you build your OS image. For more information, refer to the -[EdgeForge Workflow](../clusters/edge/edgeforge-workflow/) guide. +[EdgeForge Workflow](../clusters/edge/edgeforge-workflow/edgeforge-workflow.md) guide. ::: @@ -169,7 +169,8 @@ a Palette-managed Kubernetes cluster in private networks or clusters configured information, refer to the [Spectro Proxy](frp.md) pack guide. - + + ### Prerequisites @@ -215,6 +216,7 @@ degree of customization. These configuration parameters are exposed in the clust | `ingress` | Configures the ingress resource that allows you to access the virtual cluster. | + ### Usage @@ -229,7 +231,7 @@ information. In order to use K3s as part of an Edge deployment, you need to go through the EdgeForge process and specify K3s as your intended Kubernetes distribution when you build your OS image. For more information, refer to the -[EdgeForge Workflow](../clusters/edge/edgeforge-workflow/) guide. +[EdgeForge Workflow](../clusters/edge/edgeforge-workflow/edgeforge-workflow.md) guide. ::: @@ -287,7 +289,6 @@ To configure a custom OIDC IDP, choose **Custom** when adding the K3s pack to yo 2. Add the following `clientConfig` section that contains OIDC parameters to your Kubernetes YAML file and replace the placeholders with your third-party OIDC IDP details. The `clientConfig` section must be placed at the root level of the YAML file. - ```yaml clientConfig: oidc-issuer-url: "OIDC-ISSUER-URL" @@ -313,8 +314,7 @@ a Palette-managed Kubernetes cluster in private networks or clusters configured information, refer to the [Spectro Proxy](frp.md) pack guide. - - + ### Prerequisites @@ -374,7 +374,7 @@ information. In order to use K3s as part of an Edge deployment, you need to go through the EdgeForge process and specify K3s as your intended Kubernetes distribution when you build your OS image. For more information, refer to the -[EdgeForge Workflow](../clusters/edge/edgeforge-workflow/) guide. +[EdgeForge Workflow](../clusters/edge/edgeforge-workflow/edgeforge-workflow.md) guide. ::: @@ -393,9 +393,9 @@ When you add the K3s pack to a cluster profile, Palette displays the OIDC IDP op - **Palette**: This setting makes Palette the IDP. Any user with a Palette account in the tenant and the proper permissions to view and access the project's resources is able to use kubectl CLI to access cluster. This setting - displays in the YAML file as `palette`. Selecting **Palette** in this setting and creating role bindings to configure - authorization are all you need to do to enable OIDC for your cluster. You do not need to provide extra parameters such - as `oidc-issuer-url` as you need to when you configure a custom OIDC provider. + displays in the YAML file as `palette`. When you select **Palette**, all you have to do to enable OIDC for your + cluster is create role bindings to configure authorization. You do not need to provide extra parameters such as + `oidc-issuer-url` as you need to when you configure a custom OIDC provider. - **Inherit from Tenant**: This setting allows you to apply RBAC to multiple clusters and requires you to configure OpenID Connect (OIDC) in **Tenant Settings**. In Tenant Admin scope, navigate to **Tenant Settings** > **SSO**, choose @@ -432,6 +432,7 @@ To configure a custom OIDC IDP, choose **Custom** when adding the K3s pack to yo 2. Add the following `clientConfig` section that contains OIDC parameters to your Kubernetes YAML file and replace the placeholders with your third-party OIDC IDP details. The `clientConfig` section must be placed at the root level of the YAML file. + ```yaml clientConfig: oidc-issuer-url: "OIDC-ISSUER-URL" @@ -458,155 +459,11 @@ information, refer to the [Spectro Proxy](frp.md) pack guide. - - -### Prerequisites - -- An edge device with AMD64 processor architecture or a virtual cluster. -- A minimum of 2 CPU cores and 1 GB memory. - -### Parameters - -Since you can deploy both virtual clusters and Edge clusters using K3s, you have different configuration options -depending on the cluster type. - - - - - -| **Parameter** | **Description** | -| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `cluster.config.cluster-cidr` | Specifies the CIDR range that can be used by pods in the cluster. | -| `cluster.config.service-cidr` | Specifies the CIDR range that can be used by services in the cluster. | -| `kube-apiserver-arg` | This parameter contains extra arguments for the Kubernetes API server, such as enabling audit logging, enabling certain authorization modes, and setting profiling and secure-port. | -| `kube-controller-manager-arg` | This parameter describes extra arguments for the Kubernetes Controller Manager, such as enabling certain feature gates and setting profiling. | -| `kubelet-arg` | This parameter contains extra arguments for Kubelet during node registration, such as setting feature gates, protecting kernel defaults, and disabling the read-only port. | -| `pack.palette.config.oidc.identityProvider` | Dynamically enabled OpenID Connect (OIDC) Identity Provider (IDP) setting based on your UI selection when you add the K3s pack to your profile. This parameter appears in the YAML file after you make a selection. Refer to [Configure OIDC Identity Provider](#configure-oidc-identity-provider-for-edge). | - -You can add cloud-init stages, which allow you to customize your instances declaratively. The cloud-init stages are -exposed by [Kairos](https://kairos.io/docs/architecture/cloud-init/), an open source project. For more information, -check out the [Cloud Init Stages](../clusters/edge/edge-configuration/cloud-init.md) reference. - - - - - -Since you are setting up a virtual cluster inside another Kubernetes cluster, you can configure its pods and services -differently than the host cluster. The default configuration file you get includes parameters that offer you a higher -degree of customization. These configuration parameters are exposed in the cluster group settings page. - -| **Parameter** | **Description** | -| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `enableHA` | Determines whether the control plane is deployed in high availability mode. If you set this parameter to true, make sure to adjust the number of replicas and use an external datastore. | -| `defaultImageRegistry` | Specifies the default registry from which images are pulled. The value of this parameter will be prepended to all deployed virtual cluster images. If an image has already been deployed as part of the virtual cluster, the deployed images within the virtual cluster will not be rewritten. | -| `sync` | Specifies which Kubernetes resources are synced between the virtual and host clusters. | -| `storage` | Specifies storage settings such as persistence and PVC size. By default, storage of the virtual cluster uses the same storage class as the host cluster, but you can also optionally specify a different storage class. | -| `ingress` | Configures the ingress resource that allows you to access the virtual cluster. | - - - - -### Usage - -K3s is available for Edge host deployments as well as virtual clusters that you can create from cluster groups. Refer to -the -[Create an Infrastructure Profile](../profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md) -guide and the [Create and Manage Cluster Groups](../clusters/cluster-groups/create-cluster-group.md) guide for more -information. - -:::info - -In order to use K3s as part of an Edge deployment, you need to go through the EdgeForge process and specify K3s as your -intended Kubernetes distribution when you build your OS image. For more information, refer to the -[EdgeForge Workflow](../clusters/edge/edgeforge-workflow/) guide. - -::: - -#### Configure OIDC Identity Provider for Edge - -You can modify the configuration file to configure your Edge cluster to use an OpenID Connect (OIDC) Identity Provider -(IDP) for authentication. You can use a custom third-party IDP, such as Okta, or use Palette as your IDP. - -When you add the K3s pack to a cluster profile, Palette displays the OIDC IDP options listed below: - -- **None**: This setting does not require OIDC configuration for the cluster. It displays in the YAML file as `noauth`. - -- **Custom**: This is the default setting and does not require OIDC configuration. However, if desired, it allows you to - specify a third-party OIDC provider by configuring OIDC statements in the YAML file as described in - [Configure Custom OIDC](kubernetes-edge.md#configure-custom-oidc). This setting displays in the YAML file as `none`. - -- **Palette**: This setting makes Palette the IDP. Any user with a Palette account in the tenant and the proper - permissions to view and access the project's resources is able to use kubectl CLI to access cluster. This setting - displays in the YAML file as `palette`. Selecting **Palette** in this setting and creating role bindings to configure - authorization are all you need to do to enable OIDC for your cluster. You do not need to provide extra parameters such - as `oidc-issuer-url` as you need to when you configure a custom OIDC provider. - -- **Inherit from Tenant**: This setting allows you to apply RBAC to multiple clusters and requires you to configure - OpenID Connect (OIDC) in **Tenant Settings**. In Tenant Admin scope, navigate to **Tenant Settings** > **SSO**, choose - **OIDC**, and provide your third-party IDP details. This setting displays in the YAML file as `tenant`. For more - information, check out the [SSO Setup](../user-management/saml-sso/saml-sso.md) guide. - -All the options require you to map a set of users or groups to a Kubernetes RBAC role. To learn how to map a Kubernetes -role to users and groups, refer to -[Create Role Bindings](../clusters/cluster-management/cluster-rbac.md#create-role-bindings). - -:::warning - -If your IDP uses Security Assertion Markup Language (SAML) authentication, then the **Inherit from Tenant** option will -not work, and you will need to use the **Custom** option instead. This is because Kubernetes supports only OIDC -authentication and not SAML authentication. - -::: - -To configure a custom OIDC IDP, choose **Custom** when adding the K3s pack to your profile, and then follow these steps: - -1. Add the following OIDC parameters to the `kube-apiserver-arg` section of your configuration file for your Kubernetes - layer when creating a cluster profile. - - ```yaml - cluster: - config: - kube-apiserver-arg: - - oidc-issuer-url="provider URL" - - oidc-client-id="client-id" - - oidc-groups-claim="groups" - - oidc-username-claim="email" - ``` - -2. Add the following `clientConfig` section that contains OIDC parameters to your Kubernetes YAML file and replace the - placeholders with your third-party OIDC IDP details. The `clientConfig` section must be placed at the root level of - the YAML file. - ```yaml - clientConfig: - oidc-issuer-url: "OIDC-ISSUER-URL" - oidc-client-id: "OIDC-CLIENT-ID" - oidc-client-secret: "OIDC-CLIENT-SECRET" - oidc-extra-scope: profile,email,openid - ``` - -After you have configured the IDP for authentication, you can proceed to create role bindings to configure authorization -in your cluster. Refer to [Create Role Bindings](../clusters/cluster-management/cluster-rbac.md#create-role-bindings) -for more guidance. - -#### Configure OIDC Identity Provider for Palette Virtual Clusters - -If you are using K3s in a virtual clusters inside of a cluster group, you can also configure OIDC for your cluster. -Refer to [Configure OIDC for a Virtual Cluster](../clusters/palette-virtual-clusters/configure-oidc-virtual-cluster.md) -for more guidance. - -#### Add a Certificate for Reverse Proxy - -You can use a reverse proxy with a K3s Kubernetes cluster. The reverse proxy allows you to connect to the cluster API of -a Palette-managed Kubernetes cluster in private networks or clusters configured with private API endpoints. For more -information, refer to the [Spectro Proxy](frp.md) pack guide. - - - :::warning -All versions less than v1.25.x are considered deprecated. Upgrade to a newer version to take advantage of new features. +All versions less than v1.26.14 are considered deprecated. Upgrade to a newer version to take advantage of new features. ::: diff --git a/docs/docs-content/integrations/konvoy.md b/docs/docs-content/integrations/konvoy.md new file mode 100644 index 0000000000..ea7137b653 --- /dev/null +++ b/docs/docs-content/integrations/konvoy.md @@ -0,0 +1,118 @@ +--- +sidebar_label: "Konvoy" +title: "Konvoy" +description: "Konvoy Kubernetes distribution" +hide_table_of_contents: true +type: "integration" +category: ["kubernetes", "amd64"] +sidebar_class_name: "hide-from-sidebar" +logoUrl: "https://registry.spectrocloud.com/v1/k8s-dashboard/blobs/sha256:2de5d88b2573af42d4cc269dff75744c4174ce47cbbeed5445e51a2edd8b7429?type=image/webp" +tags: ["packs", "konvoy", "kubernetes"] +--- + +[Konvoy](https://d2iq.com/products/konvoy) is a Kubernetes distribution by D2iQ. It is built on pure open-source +Kubernetes and includes a full suite of integrated and supported best-of-breed Day-2 platform applications for an +out-of-the-box, production-ready experience. + +Palette offers Konvoy as an available Kubernetes distribution for creating and managing clusters. You can use Konvoy +when creating a [cluster profile](../profiles/cluster-profiles/create-cluster-profiles/create-cluster-profiles.md) and +then use it to create a cluster. + +## Versions Supported + + + + + +## Prerequisites + +- A minimum of 4 CPU and 4 GB Memory. + +- Users or groups mapped to a Kubernetes RBAC role. + +- Konvoy requires the [BYOOS](./byoos.md) pack to reference the image created through the Konvoy image builder project. + Refer to the [Usage](#usage) section for more information. + +- Operating System (OS) dependencies as listed in the table. + +### Supported Infrastructure Platforms + +Palette supports the following infrastructure platforms and Operating Systems (OS) combinations for Konvoy. + +- RHEL version 8.8 or later for VMware vSphere. + + + +## Parameters + +| Parameter | Description | +| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `pack.palette.config.oidcidentityProvider` | OIDC identity provider configuration. | +| `pack.podCIDR` | The CIDR range for Pods in cluster. This should match the networking layer property. Default: `192.168.0.0/16` | +| `pack.serviceClusterIpRange` | The CIDR range for services in the cluster. This should not overlap with any IP ranges assigned to nodes or pods. Default: `10.96.0.0/12` | +| `pack.serviceDomain` | The cluster DNS service domain. Default: `cluster.local`. To change the default, you must add this parameter to the Kubernetes YAML file at cluster creation and specify the cluster DNS service domain to use. This value cannot be changed after cluster creation is complete. Refer to the [Change Cluster DNS Service Domain](kubernetes-generic.md?platform=AKS&versions=k8s_v1.27#change-cluster-dns-service-domain) section. | +| `kubeadmconfig.apiServer.extraArgs` | A list of additional apiServer flags you can set. | +| `kubeadmconfig.apiServer.extraVolumes` | A list of additional volumes to mount on apiServer. | +| `kubeadmconfig.controllerManager.extraArgs` | A list of additional ControllerManager flags to set. | +| `kubeadmconfig.scheduler.extraArgs` | A list of additional Kube scheduler flags to set. | +| `kubeadmconfig.kubeletExtraArgs` | A list of kubelet arguments to set and copy to the nodes. | +| `kubeadmconfig.files` | A list of additional files to copy to the nodes. | +| `kubeadmconfig.preKubeadmCommands` | A list of additional commands to invoke **before** running kubeadm commands. | +| `kubeadmconfig.postKubeadmCommands` | A list of additional commands to invoke **after** running kubeadm commands. | + +## Usage + +To use Konvoy, you must use the [Konvoy image builder project](https://github.com/mesosphere/konvoy-image-builder) to +create a custom image. The custom image contains the underlying OS and Kubernetes components. You can then use the +[BYOOS](./byoos.md) pack to reference the custom image when creating a cluster profile. + +:::info + +Check out the [RHEL and Konvoy](../byoos/usecases/vmware/konvoy.md) guide to learn how to create a custom image using +the Konvoy image builder project. + +::: + +Select Konvoy as the Kubernetes distribution when choosing a Kubernetes distribution in the cluster profile. + +![A view of the cluster profile Kubernetes selection screen](/byoos_vmware_konvoy_cluster-profile-view.webp) + + + + +:::warning + +All versions less than v1.27.x are considered deprecated. Upgrade to a newer version to take advantage of new features. + +::: + + + + +## Terraform + +You can retrieve details about the Konvoy pack by using the following Terraform code. Change the version number to the +version you want to use. + +```hcl +data "spectrocloud_registry" "public_registry" { + name = "Public Repo" +} + +data "spectrocloud_pack_simple" "k8s" { + name = "kubernetes-konvoy" + version = "1.27.6" + type = "helm" + registry_uid = data.spectrocloud_registry.public_registry.id +} +``` + +## References + +- [Konvoy](https://d2iq.com/products/konvoy) + +- [RHEL and Konvoy](../byoos/usecases/vmware/konvoy.md) + +- [Konvoy Image Builder](https://github.com/mesosphere/konvoy-image-builder) diff --git a/docs/docs-content/integrations/kubernetes-edge.md b/docs/docs-content/integrations/kubernetes-edge.md index cb7566a315..a93b21cdac 100644 --- a/docs/docs-content/integrations/kubernetes-edge.md +++ b/docs/docs-content/integrations/kubernetes-edge.md @@ -66,8 +66,9 @@ the [Palette eXtended Kubernetes](kubernetes.md) guide to learn more about PXK. The PXK-E used in [Palette VerteX](../vertex/vertex.md) is compiled and linked with our [NIST-certified FIPS crypto module](../legal-licenses/compliance.md#fips-140-2). PXK-E is by default enabled with [Ubuntu Pro](https://ubuntu.com/pro) with FIPS mode enabled. Additionally, the Operating System (OS) is hardened based -on the NIST-800 standard. Refer to the [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/build-artifacts.md) -guide to learn more on how to build the PXK-E image with FIPS mode enabled. +on the NIST-800 standard. Refer to the +[Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos/build-artifacts.md) guide to learn more on how +to build the PXK-E image with FIPS mode enabled. The combined usage of PXK-E and Palette VerteX provides a secure and FIPS-compliant experience as the Kubernetes distribution, OS, and management platform VerteX is FIPS-compliant. @@ -81,11 +82,12 @@ four months. Once we stop supporting the minor version, we initiate the deprecat # Versions Supported - + + ## Prerequisites -- A minimum of 2 CPU and 4GB Memory. +- A minimum of 2 CPU and 4 GB Memory. ## Parameters @@ -427,27 +429,27 @@ Follow these steps to configure a third-party OIDC IDP. 1. Add the following OIDC parameters to the `apiServer.extraArgs` section of your Kubernetes YAML file when creating a cluster profile. -```yaml -cluster: - config: | - clusterConfiguration: - apiServer: - extraArgs: - oidc-issuer-url: "provider URL" - oidc-client-id: "client-id" - oidc-groups-claim: "groups" - oidc-username-claim: "email" -``` + ```yaml + cluster: + config: | + clusterConfiguration: + apiServer: + extraArgs: + oidc-issuer-url: "provider URL" + oidc-client-id: "client-id" + oidc-groups-claim: "groups" + oidc-username-claim: "email" + ``` 2. Add the following `clientConfig` section that contains OIDC parameters to your Kubernetes configuration file. -```yaml -clientConfig: - oidc-issuer-url: "" - oidc-client-id: "" - oidc-client-secret: "" - oidc-extra-scope: profile,email,openid -``` + ```yaml + clientConfig: + oidc-issuer-url: "" + oidc-client-id: "" + oidc-client-secret: "" + oidc-extra-scope: profile,email,openid + ``` 3. Provide third-party OIDC IDP details. @@ -466,11 +468,11 @@ In this example, Palette is used as the IDP, and all users in the `dev-east-2` w - + ## Prerequisites -- A minimum of 2 CPU and 4GB Memory. +- A minimum of 2 CPU and 4 GB Memory. ## Parameters @@ -494,7 +496,7 @@ You can also use pack settings described in the [Palette eXtended Kubernetes](ku ## Usage -The Kubeadm configuration file is where you can do the following: +The Kubernetes configuration file is where you can do the following: - Manually configure a third-party OIDC IDP. For more information, check out [Configure Custom OIDC](kubernetes-edge.md#configure-custom-oidc). @@ -515,7 +517,7 @@ pack: identityProvider: ``` -#### Example Kubeadm Configuration File +#### Example Kubernetes Configuration File ```yaml cluster: @@ -812,28 +814,27 @@ Follow these steps to configure a third-party OIDC IDP. 1. Add the following OIDC parameters to the `apiServer.extraArgs` section of your Kubernetes YAML file when creating a cluster profile. -```yaml -cluster: - config: - clusterConfiguration: - apiServer: - extraArgs: - oidc-issuer-url: "provider URL" - oidc-client-id: "client-id" - oidc-groups-claim: "groups" - oidc-username-claim: "email" -``` + ```yaml + cluster: + config: | + clusterConfiguration: + apiServer: + extraArgs: + oidc-issuer-url: "provider URL" + oidc-client-id: "client-id" + oidc-groups-claim: "groups" + oidc-username-claim: "email" + ``` -2. Add the following `kubeadmconfig.clientConfig` section that contains OIDC parameters to your Kubernetes YAML file. +2. Add the following `clientConfig` section that contains OIDC parameters to your Kubernetes configuration file. -```yaml -kubeadmconfig: - clientConfig: - oidc-issuer-url: "" - oidc-client-id: "" - oidc-client-secret: "" - oidc-extra-scope: profile,email,openid -``` + ```yaml + clientConfig: + oidc-issuer-url: "" + oidc-client-id: "" + oidc-client-secret: "" + oidc-extra-scope: profile,email,openid + ``` 3. Provide third-party OIDC IDP details. @@ -852,11 +853,11 @@ In this example, Palette is used as the IDP, and all users in the `dev-east-2` w - + ## Prerequisites -- A minimum of 2 CPU and 4GB Memory. +- A minimum of 2 CPU and 4 GB Memory. ## Parameters @@ -1198,415 +1199,28 @@ Follow these steps to configure a third-party OIDC IDP. 1. Add the following OIDC parameters to the `apiServer.extraArgs` section of your Kubernetes YAML file when creating a cluster profile. -```yaml -cluster: - config: - clusterConfiguration: - apiServer: - extraArgs: - oidc-issuer-url: "provider URL" - oidc-client-id: "client-id" - oidc-groups-claim: "groups" - oidc-username-claim: "email" -``` + ```yaml + cluster: + config: + clusterConfiguration: + apiServer: + extraArgs: + oidc-issuer-url: "provider URL" + oidc-client-id: "client-id" + oidc-groups-claim: "groups" + oidc-username-claim: "email" + ``` 2. Add the following `kubeadmconfig.clientConfig` section that contains OIDC parameters to your Kubernetes YAML file. -```yaml -kubeadmconfig: - clientConfig: - oidc-issuer-url: "" - oidc-client-id: "" - oidc-client-secret: "" - oidc-extra-scope: profile,email,openid -``` - -3. Provide third-party OIDC IDP details. - -### Use RBAC with OIDC - -You can create a role binding that uses individual users as the subject or specify a group name as the subject to map -many users to a role. The group name is the group assigned in the OIDC provider's configuration. Below is an example. To -learn more, review [Create Role Bindings](../clusters/cluster-management/cluster-rbac.md#create-role-bindings). - -Assume you created a group named `dev-east-2` within an OIDC provider. If you configure the host cluster's Kubernetes -pack with all the correct OIDC settings, you could then create a role binding for the `dev-east-2` group. - -In this example, Palette is used as the IDP, and all users in the `dev-east-2` would inherit the `cluster-admin` role. - -![A subject of the type group is assigned as the subject in a RoleBinding](/clusters_cluster-management_cluster-rbac_cluster-subject-group.webp) - - - - - -## Prerequisites - -- A minimum of 2 CPU and 4GB Memory. - -## Parameters - -| Parameter | Description | -| -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `cluster.config.clusterConfiguration.apiServer.extraArgs` | This parameter contains extra arguments for the Kubernetes API server, such as enabling audit logging, enabling certain authorization modes, and setting profiling and secure-port. | -| `cluster.config.clusterConfiguration.apiServer.extraVolumes` | This parameter describes extra volumes for the Kubernetes API server, such as `audit-log` and `audit-policy`. | -| `cluster.config.clusterConfiguration.controllerManager.extraArgs` | This parameter describes extra arguments for the Kubernetes Controller Manager, such as enabling certain feature gates and setting profiling. | -| `cluster.config.clusterConfiguration.etcd.local.dataDir` | This parameter specifies the data directory for etcd, the distributed key-value store that Kubernetes uses to persist cluster state. | -| `cluster.config.clusterConfiguration.networking.podSubnet` | The IP subnet range to assign to pods. Default: 192.168.0.0/16 | -| `cluster.config.clusterConfiguration.networking.serviceSubnet` | The IP subnet range to assign to services. Default: 192.169.0.0/16 | -| `cluster.config.clusterConfiguration.scheduler.extraArgs` | This parameter contains extra arguments for the Kubernetes scheduler, such as disabling profiling. | -| `cluster.config.initConfiguration.nodeRegistration.kubeletExtraArgs` | This parameter contains extra arguments for kubelet during node registration, such as setting feature gates, protecting kernel defaults, and disabling the read-only port. | -| `pack.palette.config.oidc.identityProvider` | Dynamically enabled OpenID Connect (OIDC) Identity Provider (IDP) setting based on your UI selection when you add the PXK-E pack to your profile. This parameter appears in the YAML file after you make a selection. Refer to [Configure OIDC Identity Provider](#configure-custom-oidc). | - -You can add cloud-init stages exposed by [Kairos](https://kairos.io/docs/architecture/cloud-init/), an open-source -project. For more information, check out the [Cloud Init Stages](../clusters/edge/edge-configuration/cloud-init.md) -reference. - -You can also use pack settings described in the [Palette eXtended Kubernetes](kubernetes.md) guide. - -## Usage - -The Kubeadm configuration file is where you can do the following: - -- Manually configure a third-party OIDC IDP. For more information, check out - [Configure Custom OIDC](kubernetes-edge.md#configure-custom-oidc). - -- Add a certificate for the Spectro Proxy pack if you want to use a reverse proxy with a Kubernetes cluster. For more - information, refer to the [Spectro Proxy](frp.md) guide. - -#### Configuration Changes - -The PXK-E Kubeadm configuration is updated to dynamically enable OIDC based on your IDP selection by adding the -`identityProvider` parameter. - -```yaml -palette: - config: - oidc: - identityProvider: -``` - -#### Example Kubeadm Configuration File - -```yaml -cluster: - config: | - clusterConfiguration: - apiServer: - extraArgs: - advertise-address: "0.0.0.0" - anonymous-auth: "true" - audit-log-maxage: "30" - audit-log-maxbackup: "10" - audit-log-maxsize: "100" - audit-log-path: /var/log/apiserver/audit.log - audit-policy-file: /etc/kubernetes/audit-policy.yaml - authorization-mode: RBAC,Node - default-not-ready-toleration-seconds: "60" - default-unreachable-toleration-seconds: "60" - disable-admission-plugins: AlwaysAdmit - enable-admission-plugins: AlwaysPullImages,NamespaceLifecycle,ServiceAccount,NodeRestriction - profiling: "false" - secure-port: "6443" - tls-cipher-suites: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 - extraVolumes: - - hostPath: /var/log/apiserver - mountPath: /var/log/apiserver - name: audit-log - pathType: DirectoryOrCreate - - hostPath: /etc/kubernetes/audit-policy.yaml - mountPath: /etc/kubernetes/audit-policy.yaml - name: audit-policy - pathType: File - readOnly: true - timeoutForControlPlane: 10m0s - controllerManager: - extraArgs: - feature-gates: RotateKubeletServerCertificate=true - pod-eviction-timeout: 1m0s - profiling: "false" - terminated-pod-gc-threshold: "25" - use-service-account-credentials: "true" - dns: {} - kubernetesVersion: v1.25.2 - etcd: - local: - dataDir: "/etc/kubernetes/etcd" - extraArgs: - listen-client-urls: "https://0.0.0.0:2379" - networking: - podSubnet: 192.168.0.0/16 - serviceSubnet: 192.169.0.0/16 - scheduler: - extraArgs: - profiling: "false" - initConfiguration: - localAPIEndpoint: {} - nodeRegistration: - kubeletExtraArgs: - event-qps: "0" - feature-gates: RotateKubeletServerCertificate=true - protect-kernel-defaults: "true" - read-only-port: "0" - tls-cipher-suites: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 - joinConfiguration: - discovery: {} - nodeRegistration: - kubeletExtraArgs: - event-qps: "0" - feature-gates: RotateKubeletServerCertificate=true - protect-kernel-defaults: "true" - read-only-port: "0" - tls-cipher-suites: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 - -stages: - initramfs: - - sysctl: - vm.overcommit_memory: 1 - kernel.panic: 10 - kernel.panic_on_oops: 1 - commands: - - "ln -s /etc/kubernetes/admin.conf /run/kubeconfig" - files: - - path: /etc/hosts - permission: "0644" - content: | - 127.0.0.1 localhost - - path: "/etc/kubernetes/audit-policy.yaml" - owner_string: "root" - permission: 0600 - content: | - apiVersion: audit.k8s.io/v1 - kind: Policy - rules: - - level: None - users: ["system:kube-proxy"] - verbs: ["watch"] - resources: - - group: "" # core - resources: ["endpoints", "services", "services/status"] - - level: None - users: ["system:unsecured"] - namespaces: ["kube-system"] - verbs: ["get"] - resources: - - group: "" # core - resources: ["configmaps"] - - level: None - users: ["kubelet"] # legacy kubelet identity - verbs: ["get"] - resources: - - group: "" # core - resources: ["nodes", "nodes/status"] - - level: None - userGroups: ["system:nodes"] - verbs: ["get"] - resources: - - group: "" # core - resources: ["nodes", "nodes/status"] - - level: None - users: - - system:kube-controller-manager - - system:kube-scheduler - - system:serviceaccount:kube-system:endpoint-controller - verbs: ["get", "update"] - namespaces: ["kube-system"] - resources: - - group: "" # core - resources: ["endpoints"] - - level: None - users: ["system:apiserver"] - verbs: ["get"] - resources: - - group: "" # core - resources: ["namespaces", "namespaces/status", "namespaces/finalize"] - - level: None - users: ["cluster-autoscaler"] - verbs: ["get", "update"] - namespaces: ["kube-system"] - resources: - - group: "" # core - resources: ["configmaps", "endpoints"] - # Don't log HPA fetching metrics. - - level: None - users: - - system:kube-controller-manager - verbs: ["get", "list"] - resources: - - group: "metrics.k8s.io" - # Don't log these read-only URLs. - - level: None - nonResourceURLs: - - /healthz* - - /version - - /swagger* - # Don't log events requests. - - level: None - resources: - - group: "" # core - resources: ["events"] - # node and pod status calls from nodes are high-volume and can be large, don't log responses for expected updates from nodes - - level: Request - users: ["kubelet", "system:node-problem-detector", "system:serviceaccount:kube-system:node-problem-detector"] - verbs: ["update","patch"] - resources: - - group: "" # core - resources: ["nodes/status", "pods/status"] - omitStages: - - "RequestReceived" - - level: Request - userGroups: ["system:nodes"] - verbs: ["update","patch"] - resources: - - group: "" # core - resources: ["nodes/status", "pods/status"] - omitStages: - - "RequestReceived" - # deletecollection calls can be large, don't log responses for expected namespace deletions - - level: Request - users: ["system:serviceaccount:kube-system:namespace-controller"] - verbs: ["deletecollection"] - omitStages: - - "RequestReceived" - # Secrets, ConfigMaps, and TokenReviews can contain sensitive & binary data, - # so only log at the Metadata level. - - level: Metadata - resources: - - group: "" # core - resources: ["secrets", "configmaps"] - - group: authentication.k8s.io - resources: ["tokenreviews"] - omitStages: - - "RequestReceived" - # Get repsonses can be large; skip them. - - level: Request - verbs: ["get", "list", "watch"] - resources: - - group: "" # core - - group: "admissionregistration.k8s.io" - - group: "apiextensions.k8s.io" - - group: "apiregistration.k8s.io" - - group: "apps" - - group: "authentication.k8s.io" - - group: "authorization.k8s.io" - - group: "autoscaling" - - group: "batch" - - group: "certificates.k8s.io" - - group: "extensions" - - group: "metrics.k8s.io" - - group: "networking.k8s.io" - - group: "policy" - - group: "rbac.authorization.k8s.io" - - group: "settings.k8s.io" - - group: "storage.k8s.io" - omitStages: - - "RequestReceived" - # Default level for known APIs - - level: RequestResponse - resources: - - group: "" # core - - group: "admissionregistration.k8s.io" - - group: "apiextensions.k8s.io" - - group: "apiregistration.k8s.io" - - group: "apps" - - group: "authentication.k8s.io" - - group: "authorization.k8s.io" - - group: "autoscaling" - - group: "batch" - - group: "certificates.k8s.io" - - group: "extensions" - - group: "metrics.k8s.io" - - group: "networking.k8s.io" - - group: "policy" - - group: "rbac.authorization.k8s.io" - - group: "settings.k8s.io" - - group: "storage.k8s.io" - omitStages: - - "RequestReceived" - # Default level for all other requests. - - level: Metadata - omitStages: - - "RequestReceived" - pack: - palette: - config: - oidc: - identityProvider: palette -``` - -### Configure OIDC Identity Provider - -The OIDC IDP feature offers the convenience of managing OIDC at the Kubernetes layer. The OIDC IDP feature is -particularly useful for environments that do not have their own IDP configured. In this scenario, you can leverage -Palette as an IDP without having to configure a third-party IDP. We also support the ability to take advantage of other -OIDC providers by making it possible for you to configure OIDC at the tenant level. For additional flexibility, if you -wish to use a different IDP than the one configured at the tenant level, you can select a different IDP by adding the -OIDC configuration to your cluster profile. - -When you add the PXK-E pack to a cluster profile, Palette displays the OIDC IDP options listed below. - -All the options require you to map a set of users or groups to a Kubernetes RBAC role. To learn how to map a Kubernetes -role to users and groups, refer to -[Create Role Bindings](../clusters/cluster-management/cluster-rbac.md#create-role-bindings). - -You can create a role binding that maps individual users or groups assigned within the OIDC provider's configuration to -a role. To learn more, review [Use RBAC with OIDC](kubernetes-edge.md#use-rbac-with-oidc). You can also configure OIDC -for virtual clusters. For guidance, refer to -[Configure OIDC for a Virtual Cluster](../clusters/palette-virtual-clusters/configure-oidc-virtual-cluster.md). - -- **None**: This is the default setting and there is nothing to configure. This setting displays in the YAML file as - `noauth`. - -- **Custom**: This setting allows you to specify a third-party OIDC provider by configuring OIDC statements in the - Kubeadm configuration file as described in [Configure Custom OIDC](kubernetes-edge.md#configure-custom-oidc). This - setting displays in the YAML file as `none`. - -- **Palette**: This setting makes Palette the IDP. Any user with a Palette account in the tenant and the proper - permissions to view and access the project's resources is able to log into the Kubernetes dashboard. This setting - displays in the YAML file as `palette`. - -- **Inherit from Tenant**: This setting allows you to apply RBAC to multiple clusters and requires you to configure - OpenID Connect (OIDC) in **Tenant Settings**. In Tenant Admin scope, navigate to **Tenant Settings** > **SSO**, choose - **OIDC**, and provide your third-party IDP details. This setting displays in the YAML file as `tenant`. For more - information, check out the [SSO Setup](../user-management/saml-sso/saml-sso.md) guide. - -:::info - -If your IDP uses Security Assertion Markup Language (SAML) authentication, then the **Inherit from Tenant** option will -not work, and you will need to use the **Custom** option instead. This is because Kubernetes supports only OIDC -authentication and not SAML authentication. - -::: - -### Configure Custom OIDC - -Follow these steps to configure a third-party OIDC IDP. - -1. Add the following OIDC parameters to the `apiServer.extraArgs` section of your Kubernetes YAML file when creating a - cluster profile. - -```yaml -cluster: - config: - clusterConfiguration: - apiServer: - extraArgs: - oidc-issuer-url: "provider URL" - oidc-client-id: "client-id" - oidc-groups-claim: "groups" - oidc-username-claim: "email" -``` - -2. Add the following `kubeadmconfig.clientConfig` section that contains OIDC parameters to your Kubernetes YAML file. - -```yaml -kubeadmconfig: - clientConfig: - oidc-issuer-url: "" - oidc-client-id: "" - oidc-client-secret: "" - oidc-extra-scope: profile,email,openid -``` + ```yaml + kubeadmconfig: + clientConfig: + oidc-issuer-url: "" + oidc-client-id: "" + oidc-client-secret: "" + oidc-extra-scope: profile,email,openid + ``` 3. Provide third-party OIDC IDP details. @@ -1629,7 +1243,7 @@ In this example, Palette is used as the IDP, and all users in the `dev-east-2` w :::warning -All versions less than v1.25.x are considered deprecated. Upgrade to a newer version to take advantage of new features. +All versions less than v1.27.x are considered deprecated. Upgrade to a newer version to take advantage of new features. ::: @@ -1640,8 +1254,6 @@ All versions less than v1.25.x are considered deprecated. Upgrade to a newer ver You can reference Kubernetes in Terraform with the following code snippet. -
- ```hcl data "spectrocloud_registry" "public_registry" { name = "Public Repo" diff --git a/docs/docs-content/integrations/kubernetes-generic.md b/docs/docs-content/integrations/kubernetes-generic.md index 0d0f3f3415..d8276a5bd1 100644 --- a/docs/docs-content/integrations/kubernetes-generic.md +++ b/docs/docs-content/integrations/kubernetes-generic.md @@ -499,478 +499,11 @@ clientConfig:
- - -## Prerequisites - -- A minimum of 4 CPU and 4GB Memory. - -- Users or groups mapped to a Kubernetes RBAC role. - -- Operating System (OS) dependencies as listed in the table. - -| OS Distribution | OS Version | Supports Kubernetes 1.26.x | -| --------------- | ---------- | -------------------------- | -| CentOS | 7.7 | ✅ | -| Ubuntu | 22.04 | ✅ | -| Ubuntu | 20.04 | ❌ | -| Ubuntu | 18.04 | ❌ | - -## Parameters - -| Parameter | Description | -| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `pack.palette.config.oidcidentityProvider` | OIDC identity provider configuration. | -| `pack.podCIDR` | The CIDR range for Pods in cluster. This should match the networking layer property. Default: `192.168.0.0/16` | -| `pack.serviceClusterIpRange` | The CIDR range for services in the cluster. This should not overlap with any IP ranges assigned to nodes or pods. Default: `10.96.0.0/12` | -| `pack.serviceDomain` | The cluster DNS service domain. Default: `cluster.local`. To change the default, you must add this parameter to the Kubernetes YAML file at cluster creation and specify the cluster DNS service domain to use. This value cannot be changed after cluster creation is complete. Refer to the [Change Cluster DNS Service Domain](kubernetes-generic.md?platform=AKS&versions=k8s_v1.26#change-cluster-dns-service-domain-1) section. | -| `kubeadmconfig.apiServer.extraArgs` | A list of additional apiServer flags you can set. | -| `kubeadmconfig.apiServer.extraVolumes` | A list of additional volumes to mount on apiServer. | -| `kubeadmconfig.controllerManager.extraArgs` | A list of additional ControllerManager flags to set. | -| `kubeadmconfig.scheduler.extraArgs` | A list of additional Kube scheduler flags to set. | -| `kubeadmconfig.kubeletExtraArgs` | A list of kubelet arguments to set and copy to the nodes. | -| `kubeadmconfig.files` | A list of additional files to copy to the nodes. | -| `kubeadmconfig.preKubeadmCommands` | A list of additional commands to invoke **before** running kubeadm commands. | -| `kubeadmconfig.postKubeadmCommands` | A list of additional commands to invoke **after** running kubeadm commands. | - -## Usage - -The Kubeadm configuration file is where you can do the following: - -- Change the default `podCIDR` and `serviceClusterIpRange` values. CIDR IPs specified in the configuration file take - precedence over other defined CIDR IPs in your environment. - - As you build your cluster, check that the `podCIDR` value does not overlap with any hosts or with the service network - and the `serviceClusterIpRange` value does not overlap with any IP ranges assigned to nodes or pods. For more - information, refer to the [Clusters](../clusters/clusters.md) guide and - [Cluster Deployment Errors](../troubleshooting/cluster-deployment.md). - -- Change the default cluster DNS service domain from `cluster.local` to a DNS domain that you specify. You can only - change the DNS domain during cluster creation. For more information, refer to - [Change Cluster DNS Service Domain](kubernetes-generic.md?platform=AKS&versions=k8s_v1.26#change-cluster-dns-service-domain-1). - -- Add a certificate for the Spectro Proxy pack if you want to use a reverse proxy with a Kubernetes cluster. For more - information, refer to the [Spectro Proxy](frp.md) guide. - -### Change Cluster DNS Service Domain - -The `pack.serviceDomain` parameter with default value `cluster.local` is not visible in the Kubernetes YAML file, and -its value can only be changed at cluster creation. To change the value, you must add `serviceDomain: "cluster.local"` to -the Kubernetes YAML file when you create a cluster, and specify the service domain you want to use. - -```yaml -pack: - k8sHardening: True - podCIDR: "172.16.0.0/16" - serviceClusterIPRange: "10.96.0.0/12" - serviceDomain: "" -``` - -:::warning - -You can only specify the service domain at cluster creation. After cluster creation completes, you cannot update the -value. Attempting to update it results in the error `serviceDomain update is forbidden for existing cluster`. - -::: - -For more information about networking configuration with DNS domains, refer to the Kubernetes -[Networking](https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta3/#kubeadm-k8s-io-v1beta3-Networking) -API documentation. - -### Configuration Changes - -The Kubeadm config is updated with hardening improvements that do the following: - -- Meet CIS standards for operating systems (OS). - -- Enable a Kubernetes audit policy in the pack. The audit policy is hidden, and you cannot customize the default audit - policy. If you want to apply your custom audit policy, refer to the - [Enable Audit Logging](../audit-logs/kube-api-audit-logging.md) guide to learn how to create your custom audit policy - by adjusting API server flags. - -- Replace a deprecated PodSecurityPolicy (PSP) with one that offers three built-in policy profiles for broad security - coverage: - - - **Privileged**: An unrestricted policy that provides wide permission levels and allows for known privilege - escalations. - - - **Baseline**: A policy that offers minimal restrictions and prevents known privilege escalations. As shown in the - example below, you can override the default cluster-wide policy to set baseline enforcement by enabling the - `PodSecurity` Admission plugin in the `enable-admission-plugins` section of the YAML file. You can then add a custom - Admission configuration and set the `admission-control-config-file` flag to the custom Admission. - - ```yaml - kubeadmconfig: - apiServer: - extraArgs: - secure-port: "6443" - anonymous-auth: "true" - profiling: "false" - disable-admission-plugins: "AlwaysAdmit" - default-not-ready-toleration-seconds: "60" - default-unreachable-toleration-seconds: "60" - enable-admission-plugins: "AlwaysPullImages,NamespaceLifecycle,ServiceAccount,NodeRestriction,PodSecurity" - admission-control-config-file: "/etc/kubernetes/pod-security-standard.yaml" - audit-log-path: /var/log/apiserver/audit.log - audit-policy-file: /etc/kubernetes/audit-policy.yaml - ``` - - - **Restricted**: A heavily restricted policy that follows Pod hardening best practices. This policy is set to warn - and audit and identifies Pods that require privileged access. - - You can enforce these policies at the cluster level or the Namespace level. For workloads that require privileged - access, you can relax `PodSecurity` enforcement by adding these labels in the Namespace: - - ```yaml - pod-security.kubernetes.io/enforce: privileged - pod-security.kubernetes.io/enforce-version: v1.26 - ``` - -### Kubeadm Configuration File - -The default pack YAML contains minimal configurations offered by the managed provider. - -### Configure OIDC Identity Provider - -You can configure an OpenID Connect (OIDC) identity provider to authenticate users and groups in your cluster. OIDC is -an authentication layer on top of OAuth 2.0, an authorization framework that allows users to authenticate to a cluster -without using a password. - -OIDC requires a _RoleBinding_ for the users or groups you want to provide cluster access. You must create a RoleBinding -to a Kubernetes role that is available in the cluster. The Kubernetes role can be a custom role you created or a -[default Kubernetes role](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles), such as the -`cluster-admin` role. To learn how to create a RoleBinding through Palette, refer to -[Create Role Bindings](../clusters/cluster-management/cluster-rbac.md#create-role-bindings). - -#### Configure Custom OIDC - -The custom method to configure OIDC and apply RBAC for an OIDC provider can be used for all cloud services except Amazon -Elastic Kubernetes Service (EKS) and [Azure-AKS](../clusters/public-cloud/azure/aks.md). - - - - - -Follow these steps to configure a third-party OIDC IDP. You can apply these steps to all the public cloud providers -except Azure AKS and Amazon EKS clusters. Azure AKS and Amazon EKS require different configurations. AKS requires you to -use Azure Active Directory (AAD) to enable OIDC integration. Refer to -[Enable OIDC in Kubernetes Clusters With Entra ID](../user-management/saml-sso/palette-sso-with-entra-id.md#enable-oidc-in-kubernetes-clusters-with-entra-id) -to learn more. Click the **Amazon EKS** tab for steps to configure OIDC for EKS clusters. - -1. Add the following parameters to your Kubernetes YAML file when creating a cluster profile. Replace the - `identityProvider` value with your OIDC provider name. - -
- -```yaml -pack: - palette: - config: - oidc: - identityProvider: yourIdentityProviderNameHere -``` - -2. Add the following `kubeadmconfig` parameters. Replace the values with your OIDC provider values. - -```yaml -kubeadmconfig: - apiServer: - extraArgs: - oidc-issuer-url: "provider URL" - oidc-client-id: "client-id" - oidc-groups-claim: "groups" - oidc-username-claim: "email" -``` - -3. Under the `clientConfig` parameter section of Kubernetes YAML file, uncomment the `oidc-` configuration lines. - -```yaml -kubeadmconfig: - clientConfig: - oidc-issuer-url: "" - oidc-client-id: "" - oidc-client-secret: "" - oidc-extra-scope: profile,email,openid -``` - -
- - - -Follow these steps to configure OIDC for managed EKS clusters. - -1. In the Kubernetes pack, uncomment the lines in the `oidcIdentityProvider` parameter section of the Kubernetes pack, - and enter your third-party provider details. - -```yaml -oidcIdentityProvider: - identityProviderConfigName: "Spectro-docs" - issuerUrl: "issuer-url" - clientId: "user-client-id-from-Palette" - usernameClaim: "email" - usernamePrefix: "-" - groupsClaim: "groups" - groupsPrefix: "" - requiredClaims: -``` - -2. Under the `clientConfig` parameter section of Kubernetes pack, uncomment the `oidc-` configuration lines. - -```yaml -clientConfig: - oidc-issuer-url: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.issuerUrl }}" - oidc-client-id: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.clientId }}" - oidc-client-secret: yourSecretKeyHere - oidc-extra-scope: profile,email -``` - -3. Provide third-party OIDC IDP details. - -4. Refer to the [Access EKS Cluster](../clusters/public-cloud/aws/eks.md#access-eks-cluster) for guidance on how to - access an EKS cluster. - - -
- -
- - - -## Prerequisites - -- A minimum of 4 CPU and 4GB Memory. - -- Operating System (OS) dependencies as listed in the table. - -| OS Distribution | OS Version | Supports Kubernetes 1.25.x | -| --------------- | ---------- | -------------------------- | -| CentOS | 7.7 | ✅ | -| Ubuntu | 22.04 | ✅ | -| Ubuntu | 20.04 | ❌ | -| Ubuntu | 18.04 | ❌ | - -## Parameters - -| Parameter | Description | -| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `pack.palette.config.oidcidentityProvider` | OIDC identity provider configuration. | -| `pack.podCIDR` | The CIDR range for Pods in cluster. This should match the networking layer property. Default: `192.168.0.0/16` | -| `pack.serviceClusterIpRange` | The CIDR range for services in the cluster. This should not overlap with any IP ranges assigned to nodes or pods. Default: `10.96.0.0/12` | -| `pack.serviceDomain` | The cluster DNS service domain. Default: `cluster.local`. To change the default, you must add this parameter to the Kubernetes YAML file at cluster creation and specify the cluster DNS service domain to use. This value cannot be changed after cluster creation is complete. Refer to the [Change Cluster DNS Service Domain](kubernetes-generic.md?versions=k8s_v1.25#change-cluster-dns-service-domain-2) section. | -| `kubeadmconfig.apiServer.extraArgs` | A list of additional apiServer flags you can set. | -| `kubeadmconfig.apiServer.extraVolumes` | A list of additional volumes to mount on apiServer. | -| `kubeadmconfig.controllerManager.extraArgs` | A list of additional ControllerManager flags to set. | -| `kubeadmconfig.scheduler.extraArgs` | A list of additional Kube scheduler flags to set. | -| `kubeadmconfig.kubeletExtraArgs` | A list of kubelet arguments to set and copy to the nodes. | -| `kubeadmconfig.files` | A list of additional files to copy to the nodes. | -| `kubeadmconfig.preKubeadmCommands` | A list of additional commands to invoke **before** running kubeadm commands. | -| `kubeadmconfig.postKubeadmCommands` | A list of additional commands to invoke **after** running kubeadm commands. | - -## Usage - -The Kubeadm configuration file is where you can do the following: - -- Change the default `podCIDR` and `serviceClusterIpRange` values. CIDR IPs specified in the configuration file take - precedence over other defined CIDR IPs in your environment. - - As you build your cluster, check that the `podCIDR` value does not overlap with any hosts or with the service network - and the `serviceClusterIpRange` value does not overlap with any IP ranges assigned to nodes or pods. For more - information, refer to the [Clusters](../clusters/clusters.md) guide and - [Cluster Deployment Errors](../troubleshooting/cluster-deployment.md). - -- Change the default cluster DNS service domain from `cluster.local` to a DNS domain that you specify. You can only - change the DNS domain during cluster creation. For more information, refer to - [Change Cluster DNS Service Domain](kubernetes-generic.md?versions=k8s_v1.25#change-cluster-dns-service-domain-2). - -- Add a certificate for the Spectro Proxy pack if you want to use a reverse proxy with a Kubernetes cluster. For more - information, refer to the [Spectro Proxy](frp.md) guide. - -### Change Cluster DNS Service Domain - -The `pack.serviceDomain` parameter with default value `cluster.local` is not visible in the Kubernetes YAML file, and -its value can only be changed at cluster creation. To change the value, you must add `serviceDomain: "cluster.local"` to -the Kubernetes YAML file when you create a cluster, and specify the service domain you want to use. - -```yaml -pack: - k8sHardening: True - podCIDR: "172.16.0.0/16" - serviceClusterIPRange: "10.96.0.0/12" - serviceDomain: "" -``` - -:::warning - -You can only specify the service domain at cluster creation. After cluster creation completes, you cannot update the -value. Attempting to update it results in the error `serviceDomain update is forbidden for existing cluster`. - -::: - -For more information about networking configuration with DNS domains, refer to the Kubernetes -[Networking](https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta3/#kubeadm-k8s-io-v1beta3-Networking) -API documentation. - -### Configuration Changes - -The Kubeadm config is updated with hardening improvements that do the following: - -- Meet CIS standards for operating systems (OS). - -- Enable a Kubernetes audit policy in the pack that you can customize by adjusting API server flags. - -- Replace a deprecated PodSecurityPolicy (PSP) with one that offers three built-in policy profiles for broad security - coverage: - - - **Privileged**: An unrestricted policy that provides wide permission levels and allows for known privilege - escalations. - - - **Baseline**: A policy that offers minimal restrictions and prevents known privilege escalations. As shown in the - example below, you can override the default cluster-wide policy to set baseline enforcement by enabling the - `PodSecurity` Admission plugin in the `enable-admission-plugins` section of the YAML file. You can then add a custom - Admission configuration and set the `admission-control-config-file` flag to the custom Admission. - - ```yaml - kubeadmconfig: - apiServer: - extraArgs: - secure-port: "6443" - anonymous-auth: "true" - profiling: "false" - disable-admission-plugins: "AlwaysAdmit" - default-not-ready-toleration-seconds: "60" - default-unreachable-toleration-seconds: "60" - enable-admission-plugins: "AlwaysPullImages,NamespaceLifecycle,ServiceAccount,NodeRestriction,PodSecurity" - admission-control-config-file: "/etc/kubernetes/pod-security-standard.yaml" - audit-log-path: /var/log/apiserver/audit.log - audit-policy-file: /etc/kubernetes/audit-policy.yaml - ``` - - - **Restricted**: A heavily restricted policy that follows Pod hardening best practices. This policy is set to warn - and audit and identifies Pods that require privileged access. - - You can enforce these policies at the cluster level or the Namespace level. For workloads that require privileged - access, you can relax `PodSecurity` enforcement by adding these labels in the Namespace: - - ```yaml - pod-security.kubernetes.io/enforce: privileged - pod-security.kubernetes.io/enforce-version: v1.25 - ``` - -### Kubeadm Configuration File - -The default pack YAML contains minimal configurations offered by the managed provider. - -### Configure OIDC Identity Provider - -You can configure an OpenID Connect (OIDC) identity provider to authenticate users and groups in your cluster. OIDC is -an authentication layer on top of OAuth 2.0, an authorization framework that allows users to authenticate to a cluster -without using a password. - -OIDC requires a _RoleBinding_ for the users or groups you want to provide cluster access. You must create a RoleBinding -to a Kubernetes role that is available in the cluster. The Kubernetes role can be a custom role you created or a -[default Kubernetes role](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles), such as the -`cluster-admin` role. To learn how to create a RoleBinding through Palette, refer to -[Create Role Bindings](../clusters/cluster-management/cluster-rbac.md#create-role-bindings). - -#### Configure Custom OIDC - -The custom method to configure OIDC and apply RBAC for an OIDC provider can be used for all cloud services except Amazon -Elastic Kubernetes Service (EKS) and [Azure-AKS](../clusters/public-cloud/azure/aks.md). - - - - - -Follow these steps to configure a third-party OIDC IDP. You can apply these steps to all the public cloud providers -except Azure AKS and Amazon EKS clusters. Azure AKS and Amazon EKS require different configurations. AKS requires you to -use Azure Active Directory (AAD) to enable OIDC integration. Refer to -[Enable OIDC in Kubernetes Clusters With Entra ID](../user-management/saml-sso/palette-sso-with-entra-id.md#enable-oidc-in-kubernetes-clusters-with-entra-id) -to learn more. Click the **Amazon EKS** tab for steps to configure OIDC for EKS clusters. - -1. Add the following parameters to your Kubernetes YAML file when creating a cluster profile. Replace the - `identityProvider` value with your OIDC provider name. - -```yaml -pack: - palette: - config: - oidc: - identityProvider: palette -``` - -2. Add the following `kubeadmconfig` parameters. Replace the values with your OIDC provider values. - -```yaml -kubeadmconfig: - apiServer: - extraArgs: - oidc-issuer-url: "provider URL" - oidc-client-id: "client-id" - oidc-groups-claim: "groups" - oidc-username-claim: "email" -``` - -3. Under the `clientConfig` parameter section of Kubernetes YAML file, uncomment the `oidc-` configuration lines. - -```yaml -kubeadmconfig: - clientConfig: - oidc-issuer-url: "" - oidc-client-id: "" - oidc-client-secret: "" - oidc-extra-scope: profile,email,openid -``` - - - - - -Follow these steps to configure OIDC for managed EKS clusters. - -1. In the Kubernetes pack, uncomment the lines in the `oidcIdentityProvider` parameter section of the Kubernetes pack, - and enter your third-party provider details. - -
- -```yaml -oidcIdentityProvider: - identityProviderConfigName: "Spectro-docs" - issuerUrl: "issuer-url" - clientId: "user-client-id-from-Palette" - usernameClaim: "email" - usernamePrefix: "-" - groupsClaim: "groups" - groupsPrefix: "" - requiredClaims: -``` - -2. Under the `clientConfig` parameter section of Kubernetes pack, uncomment the `oidc-` configuration lines. - -
- -```yaml -clientConfig: - oidc-issuer-url: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.issuerUrl }}" - oidc-client-id: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.clientId }}" - oidc-client-secret: yourSecretKeyHere - oidc-extra-scope: profile,email -``` - -3. Provide third-party OIDC IDP details. - -4. Refer to the [Access EKS Cluster](../clusters/public-cloud/aws/eks.md#access-eks-cluster) for guidance on how to - access an EKS cluster. - -
-
- -
- :::warning -All versions less than v1.25.x are considered deprecated. Upgrade to a newer version to take advantage of new features. +All versions less than v1.27.x are considered deprecated. Upgrade to a newer version to take advantage of new features. ::: diff --git a/docs/docs-content/integrations/kubernetes.md b/docs/docs-content/integrations/kubernetes.md index f04a5ec2f4..f61495916d 100644 --- a/docs/docs-content/integrations/kubernetes.md +++ b/docs/docs-content/integrations/kubernetes.md @@ -71,20 +71,20 @@ four months. Once we stop supporting the minor version, we initiate the deprecat - + ## Prerequisites -- A minimum of 4 CPU and 4GB Memory. +- A minimum of 4 CPU and 4 GB Memory. - Operating System (OS) dependencies as listed in the table. -| OS Distribution | OS Version | Supports Kubernetes 1.27.x | -| --------------- | ---------- | -------------------------- | -| CentOS | 7.7 | ✅ | -| Ubuntu | 22.04 | ✅ | -| Ubuntu | 20.04 | ❌ | -| Ubuntu | 18.04 | ❌ | + | OS Distribution | OS Version | Supports Kubernetes 1.27.x | + | --------------- | ---------- | -------------------------- | + | CentOS | 7.7 | ✅ | + | Ubuntu | 22.04 | ✅ | + | Ubuntu | 20.04 | ❌ | + | Ubuntu | 18.04 | ❌ | ## Parameters @@ -103,6 +103,8 @@ four months. Once we stop supporting the minor version, we initiate the deprecat | `kubeadmconfig.preKubeadmCommands` | A list of additional commands to invoke **before** running kubeadm commands. | | `kubeadmconfig.postKubeadmCommands` | A list of additional commands to invoke **after** running kubeadm commands. | | `kubeadmconfig.clientConfig` | Settings to manually configure OIDC-based authentication when you choose a third-party (Custom) IDP. Refer to [Configure Custom OIDC](#configure-custom-oidc). | +| `cloud.maas.customEndpoint` | The custom MAAS API or DNS endpoint URL to use for the PXK cluster. This parameter is only available for MAAS. | +| `cloud.maas.customEndpointPort` | The custom MAAS API or DNS endpoint port to use for the PXK cluster. This parameter is only available for MAAS. Default value is `6443`. | ## Usage @@ -338,26 +340,26 @@ to learn more. Click the **Amazon EKS** tab for steps to configure OIDC for EKS 1. Add the following parameters to your Kubernetes YAML file when creating a cluster profile. -```yaml -kubeadmconfig: - apiServer: - extraArgs: - oidc-issuer-url: "provider URL" - oidc-client-id: "client-id" - oidc-groups-claim: "groups" - oidc-username-claim: "email" -``` + ```yaml + kubeadmconfig: + apiServer: + extraArgs: + oidc-issuer-url: "provider URL" + oidc-client-id: "client-id" + oidc-groups-claim: "groups" + oidc-username-claim: "email" + ``` 2. Under the `clientConfig` parameter section of Kubernetes YAML file, uncomment the `oidc-` configuration lines. -```yaml -kubeadmconfig: - clientConfig: - oidc-issuer-url: "" - oidc-client-id: "" - oidc-client-secret: "" - oidc-extra-scope: profile,email,openid -``` + ```yaml + kubeadmconfig: + clientConfig: + oidc-issuer-url: "" + oidc-client-id: "" + oidc-client-secret: "" + oidc-extra-scope: profile,email,openid + ``` @@ -368,27 +370,27 @@ Follow these steps to configure OIDC for managed EKS clusters. 1. In the Kubernetes pack, uncomment the lines in the `oidcIdentityProvider` parameter section of the Kubernetes pack, and enter your third-party provider details. -```yaml -oidcIdentityProvider: - identityProviderConfigName: "Spectro-docs" - issuerUrl: "issuer-url" - clientId: "user-client-id-from-Palette" - usernameClaim: "email" - usernamePrefix: "-" - groupsClaim: "groups" - groupsPrefix: "" - requiredClaims: -``` + ```yaml + oidcIdentityProvider: + identityProviderConfigName: "Spectro-docs" + issuerUrl: "issuer-url" + clientId: "user-client-id-from-Palette" + usernameClaim: "email" + usernamePrefix: "-" + groupsClaim: "groups" + groupsPrefix: "" + requiredClaims: + ``` 2. Under the `clientConfig` parameter section of Kubernetes pack, uncomment the `oidc-` configuration lines. -```yaml -clientConfig: - oidc-issuer-url: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.issuerUrl }}" - oidc-client-id: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.clientId }}" - oidc-client-secret: 1gsranjjmdgahm10j8r6m47ejokm9kafvcbhi3d48jlc3rfpprhv - oidc-extra-scope: profile,email -``` + ```yaml + clientConfig: + oidc-issuer-url: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.issuerUrl }}" + oidc-client-id: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.clientId }}" + oidc-client-secret: ************************************************** + oidc-extra-scope: profile,email + ``` 3. Provide third-party OIDC IDP details. @@ -409,22 +411,48 @@ In this example, Palette is used as the IDP, and all users in the `dev-east-2` w ![A subject of the type group is assigned as the subject in a RoleBinding](/clusters_cluster-management_cluster-rbac_cluster-subject-group.webp) +### Custom MAAS Endpoint + +You can specify a custom MAAS endpoint and port that instructs Palette to direct all MAAS API requests to the provided +endpoint URL. Use the `cloud.maas.customEndpoint` and `cloud.maas.customEndpointPort` parameters to specify the custom +MAAS API URL and port. This is useful in scenarios where the MAAS API endpoint is not resolvable outside of the MAAS +network. + +The following example shows how to specify a custom MAAS endpoint and port in the Kubernetes YAML file. Make sure the +`cloud.maas` section is at the same level as the `pack` section. + +```yaml hideClipboard {10-14} +pack: + k8sHardening: True + podCIDR: "192.168.0.0/16" + serviceClusterIpRange: "10.96.0.0/12" + palette: + config: + dashboard: + identityProvider: palette + +cloud: + maas: + customEndpoint: "maas-api.example.maas.org" + customEndpointPort: "6443" +``` + - + ## Prerequisites -- A minimum of 4 CPU and 4GB Memory. +- A minimum of 4 CPU and 4 GB Memory. - Operating System (OS) dependencies as listed in the table. -| OS Distribution | OS Version | Supports Kubernetes 1.27.x | -| --------------- | ---------- | -------------------------- | -| CentOS | 7.7 | ✅ | -| Ubuntu | 22.04 | ✅ | -| Ubuntu | 20.04 | ❌ | -| Ubuntu | 18.04 | ❌ | + | OS Distribution | OS Version | Supports Kubernetes 1.27.x | + | --------------- | ---------- | -------------------------- | + | CentOS | 7.7 | ✅ | + | Ubuntu | 22.04 | ✅ | + | Ubuntu | 20.04 | ❌ | + | Ubuntu | 18.04 | ❌ | ## Parameters @@ -443,6 +471,8 @@ In this example, Palette is used as the IDP, and all users in the `dev-east-2` w | `kubeadmconfig.preKubeadmCommands` | A list of additional commands to invoke **before** running kubeadm commands. | | `kubeadmconfig.postKubeadmCommands` | A list of additional commands to invoke **after** running kubeadm commands. | | `kubeadmconfig.clientConfig` | Settings to manually configure OIDC-based authentication when you choose a third-party (Custom) IDP. Refer to [Configure Custom OIDC](#configure-custom-oidc). | +| `cloud.maas.customEndpoint` | The custom MAAS API or DNS endpoint URL to use for the PXK cluster. This parameter is only available for MAAS. | +| `cloud.maas.customEndpointPort` | The custom MAAS API or DNS endpoint port to use for the PXK cluster. This parameter is only available for MAAS. Default value is `6443`. | ## Usage @@ -678,26 +708,26 @@ to learn more. Click the **Amazon EKS** tab for steps to configure OIDC for EKS 1. Add the following parameters to your Kubernetes YAML file when creating a cluster profile. -```yaml -kubeadmconfig: - apiServer: - extraArgs: - oidc-issuer-url: "provider URL" - oidc-client-id: "client-id" - oidc-groups-claim: "groups" - oidc-username-claim: "email" -``` + ```yaml + kubeadmconfig: + apiServer: + extraArgs: + oidc-issuer-url: "provider URL" + oidc-client-id: "client-id" + oidc-groups-claim: "groups" + oidc-username-claim: "email" + ``` 2. Under the `clientConfig` parameter section of Kubernetes YAML file, uncomment the `oidc-` configuration lines. -```yaml -kubeadmconfig: - clientConfig: - oidc-issuer-url: "" - oidc-client-id: "" - oidc-client-secret: "" - oidc-extra-scope: profile,email,openid -``` + ```yaml + kubeadmconfig: + clientConfig: + oidc-issuer-url: "" + oidc-client-id: "" + oidc-client-secret: "" + oidc-extra-scope: profile,email,openid + ``` @@ -708,27 +738,27 @@ Follow these steps to configure OIDC for managed EKS clusters. 1. In the Kubernetes pack, uncomment the lines in the `oidcIdentityProvider` parameter section of the Kubernetes pack, and enter your third-party provider details. -```yaml -oidcIdentityProvider: - identityProviderConfigName: "Spectro-docs" - issuerUrl: "issuer-url" - clientId: "user-client-id-from-Palette" - usernameClaim: "email" - usernamePrefix: "-" - groupsClaim: "groups" - groupsPrefix: "" - requiredClaims: -``` + ```yaml + oidcIdentityProvider: + identityProviderConfigName: "Spectro-docs" + issuerUrl: "issuer-url" + clientId: "user-client-id-from-Palette" + usernameClaim: "email" + usernamePrefix: "-" + groupsClaim: "groups" + groupsPrefix: "" + requiredClaims: + ``` 2. Under the `clientConfig` parameter section of Kubernetes pack, uncomment the `oidc-` configuration lines. -```yaml -clientConfig: - oidc-issuer-url: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.issuerUrl }}" - oidc-client-id: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.clientId }}" - oidc-client-secret: 1gsranjjmdgahm10j8r6m47ejokm9kafvcbhi3d48jlc3rfpprhv - oidc-extra-scope: profile,email -``` + ```yaml + clientConfig: + oidc-issuer-url: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.issuerUrl }}" + oidc-client-id: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.clientId }}" + oidc-client-secret: ************************************************** + oidc-extra-scope: profile,email + ``` 3. Provide third-party OIDC IDP details. @@ -749,105 +779,17 @@ In this example, Palette is used as the IDP, and all users in the `dev-east-2` w ![A subject of the type group is assigned as the subject in a RoleBinding](/clusters_cluster-management_cluster-rbac_cluster-subject-group.webp) - - - - -## Prerequisites - -- A minimum of 4 CPU and 4GB Memory. - -- Operating System (OS) dependencies as listed in the table. - -| OS Distribution | OS Version | Supports Kubernetes 1.26.x | -| --------------- | ---------- | -------------------------- | -| CentOS | 7.7 | ✅ | -| Ubuntu | 22.04 | ✅ | -| Ubuntu | 20.04 | ❌ | -| Ubuntu | 18.04 | ❌ | - -## Parameters - -| Parameter | Description | -| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `pack.podCIDR` | The CIDR range for Pods in the cluster. This should match the networking layer property. Default: `192.168.0.0/16` | -| `pack.serviceClusterIpRange` | The CIDR range for services in the cluster. This should not overlap with any IP ranges assigned to nodes or pods. Default: `10.96.0.0/12` | -| `pack.serviceDomain` | The cluster DNS service domain. Default: `cluster.local`. To change the default, you must add this parameter to the Kubernetes YAML file at cluster creation and specify the cluster DNS service domain to use. This value cannot be changed after cluster creation is complete. Refer to the [Change Cluster DNS Service Domain](kubernetes.md?versions=k8s_v1.26#change-cluster-dns-service-domain-1) section. | -| `pack.palette.config.dashboard.identityProvider` | Dynamically enabled OpenID Connect (OIDC) Identity Provider (IDP) setting based on your UI selection when you add the PXK pack to your profile. This parameter appears in the YAML file after you make a selection. Refer to [Configure OIDC Identity Provider](kubernetes.md#configure-oidc-identity-provider). | -| `kubeadmconfig.apiServer.extraArgs` | A list of additional apiServer flags you can set. | -| `kubeadmconfig.apiServer.extraVolumes` | A list of additional volumes to mount on the apiServer. | -| `kubeadmconfig.controllerManager.extraArgs` | A list of additional ControllerManager flags to set. | -| `kubeadmconfig.scheduler.extraArgs` | A list of additional Kube scheduler flags to set. | -| `kubeadmconfig.kubeletExtraArgs` | A list of kubelet arguments to set and copy to the nodes. | -| `kubeadmconfig.files` | A list of additional files to copy to the nodes. | -| `kubeadmconfig.preKubeadmCommands` | A list of additional commands to invoke **before** running kubeadm commands. | -| `kubeadmconfig.postKubeadmCommands` | A list of additional commands to invoke **after** running kubeadm commands. | -| `kubeadmconfig.clientConfig` | Settings to manually configure OIDC-based authentication when you choose a third-party (Custom) IDP. Refer to [Configure Custom OIDC](#configure-custom-oidc). | - -## Usage - -The Kubeadm configuration file is where you can do the following: - -- Change the default `podCIDR` and `serviceClusterIpRange` values. CIDR IPs specified in the configuration file take - precedence over other defined CIDR IPs in your environment. - - As you build your cluster, check that the `podCIDR` value does not overlap with any hosts or with the service network - and the `serviceClusterIpRange` value does not overlap with any IP ranges assigned to nodes or pods. For more - information, refer to the [Clusters](../clusters/clusters.md) guide and - [Cluster Deployment Errors](../troubleshooting/cluster-deployment.md). - -- Manually configure a third-party OpenID Connect (OIDC) Identity Provider (IDP). For more information, check out - [Configure Custom OIDC](#configure-custom-oidc). - -- Change the default cluster DNS service domain from `cluster.local` to a DNS domain that you specify. You can only - change the DNS domain during cluster creation. For more information, refer to - [Change Cluster DNS Service Domain](kubernetes.md?versions=k8s_v1.26#change-cluster-dns-service-domain-1). - -- Add a certificate for the Spectro Proxy pack if you want to use a reverse proxy with a Kubernetes cluster. For more - information, refer to the [Spectro Proxy](frp.md) guide. - -### Change Cluster DNS Service Domain - -The `pack.serviceDomain` parameter with default value `cluster.local` is not visible in the Kubernetes YAML file, and -its value can only be changed at cluster creation. To change the value, you must add `serviceDomain: "cluster.local"` to -the Kubernetes YAML file when you create a cluster, and specify the service domain you want to use. - -```yaml -pack: - k8sHardening: True - podCIDR: "172.16.0.0/16" - serviceClusterIPRange: "10.96.0.0/12" - serviceDomain: "" -``` - -:::warning - -You can only specify the service domain at cluster creation. After cluster creation completes, you cannot update the -value. Attempting to update it results in the error `serviceDomain update is forbidden for existing cluster`. - -::: - -For more information about networking configuration with DNS domains, refer to the Kubernetes -[Networking](https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta3/#kubeadm-k8s-io-v1beta3-Networking) -API documentation. +### Custom MAAS Endpoint -### Configuration Changes +You can specify a custom MAAS endpoint and port that instructs Palette to direct all MAAS API requests to the provided +endpoint URL. Use the `cloud.maas.customEndpoint` and `cloud.maas.customEndpointPort` parameters to specify the custom +MAAS API URL and port. This is useful in scenarios where the MAAS API endpoint is not resolvable outside of the MAAS +network. -The PXK Kubeadm configuration is updated to dynamically enable OIDC based on your IDP selection by adding the -`identityProvider` parameter. +The following example shows how to specify a custom MAAS endpoint and port in the Kubernetes YAML file. Make sure the +`cloud.maas` section is at the same level as the `pack` section. -```yaml -palette: - config: - dashboard: - identityProvider: -``` - -
- -### Example Kubeadm Configuration File - -```yaml +```yaml hideClipboard {10-14} pack: k8sHardening: True podCIDR: "192.168.0.0/16" @@ -856,257 +798,29 @@ pack: config: dashboard: identityProvider: palette -kubeadmconfig: - apiServer: - extraArgs: - secure-port: "6443" - anonymous-auth: "true" - profiling: "false" - disable-admission-plugins: "AlwaysAdmit" - default-not-ready-toleration-seconds: "60" - default-unreachable-toleration-seconds: "60" - enable-admission-plugins: "AlwaysPullImages,NamespaceLifecycle,ServiceAccount,NodeRestriction,PodSecurity" - admission-control-config-file: "/etc/kubernetes/pod-security-standard.yaml" - audit-log-path: /var/log/apiserver/audit.log - audit-policy-file: /etc/kubernetes/audit-policy.yaml - audit-log-maxage: "30" - audit-log-maxbackup: "10" - audit-log-maxsize: "100" - authorization-mode: RBAC,Node - tls-cipher-suites: "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256" - extraVolumes: - - name: audit-log - hostPath: /var/log/apiserver - mountPath: /var/log/apiserver - pathType: DirectoryOrCreate - - name: audit-policy - hostPath: /etc/kubernetes/audit-policy.yaml - mountPath: /etc/kubernetes/audit-policy.yaml - readOnly: true - pathType: File - - name: pod-security-standard - hostPath: /etc/kubernetes/pod-security-standard.yaml - mountPath: /etc/kubernetes/pod-security-standard.yaml - readOnly: true - pathType: File - controllerManager: - extraArgs: - profiling: "false" - terminated-pod-gc-threshold: "25" - pod-eviction-timeout: "1m0s" - use-service-account-credentials: "true" - feature-gates: "RotateKubeletServerCertificate=true" - scheduler: - extraArgs: - profiling: "false" - kubeletExtraArgs: - read-only-port: "0" - event-qps: "0" - feature-gates: "RotateKubeletServerCertificate=true" - protect-kernel-defaults: "true" - tls-cipher-suites: "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256" - files: - - path: hardening/audit-policy.yaml - targetPath: /etc/kubernetes/audit-policy.yaml - targetOwner: "root:root" - targetPermissions: "0600" - - path: hardening/90-kubelet.conf - targetPath: /etc/sysctl.d/90-kubelet.conf - targetOwner: "root:root" - targetPermissions: "0600" - - targetPath: /etc/kubernetes/pod-security-standard.yaml - targetOwner: "root:root" - targetPermissions: "0600" - content: | - apiVersion: apiserver.config.k8s.io/v1 - kind: AdmissionConfiguration - plugins: - - name: PodSecurity - configuration: - apiVersion: pod-security.admission.config.k8s.io/v1 - kind: PodSecurityConfiguration - defaults: - enforce: "baseline" - enforce-version: "v1.26" - audit: "baseline" - audit-version: "v1.26" - warn: "restricted" - warn-version: "v1.26" - audit: "restricted" - audit-version: "v1.26" - exemptions: - # Array of authenticated usernames to exempt. - usernames: [] - # Array of runtime class names to exempt. - runtimeClasses: [] - # Array of namespaces to exempt. - namespaces: [kube-system] - - preKubeadmCommands: - - 'echo "====> Applying kernel parameters for Kubelet"' - - 'sysctl -p /etc/sysctl.d/90-kubelet.conf' - postKubeadmCommands: - - 'echo "List of post kubeadm commands to be executed"' - - # Client configuration to add OIDC based authentication flags in kubeconfig - #clientConfig: - #oidc-issuer-url: "{{ .spectro.pack.kubernetes.kubeadmconfig.apiServer.extraArgs.oidc-issuer-url }}" - #oidc-client-id: "{{ .spectro.pack.kubernetes.kubeadmconfig.apiServer.extraArgs.oidc-client-id }}" - #oidc-client-secret: yourSecretClientSecretGoesHere - #oidc-extra-scope: profile,email -``` - -### Configure OIDC Identity Provider - -Platforms that use PXK can use the OIDC IDP feature, which offers the convenience of managing OIDC at the Kubernetes -layer. The OIDC IDP feature is particularly useful for environments that do not have their own IDP configured. In this -scenario, you can leverage Palette as an IDP without having to configure a third-party IDP. We also support the ability -to take advantage of other OIDC providers by making it possible for you to configure OIDC at the tenant level. For -additional flexibility, if you wish to use a different IDP than the one configured at the tenant level, you can select a -different IDP by adding the OIDC configuration to your cluster profile. - -When you add the PXK pack to a cluster profile, Palette displays the OIDC IDP options listed below. - -All the options require you to map a set of users or groups to a Kubernetes RBAC role. To learn how to map a Kubernetes -role to users and groups, refer to -[Create Role Bindings](../clusters/cluster-management/cluster-rbac.md#create-role-bindings). You can also configure OIDC -for virtual clusters. For guidance, refer to -[Configure OIDC for a Virtual Cluster](../clusters/palette-virtual-clusters/configure-oidc-virtual-cluster.md). - -- **None**: This setting does not require OIDC configuration for the cluster. It displays in the YAML file as `noauth`. - - :::warning - - We do not recommend choosing **None** in a production environment, as it may disable authentication for add-ons that - rely on OIDC. - - ::: - -- **Custom**: This is the default setting and does not require OIDC configuration. However, if desired, it allows you to - specify a third-party OIDC provider by configuring OIDC statements in the YAML file as described in - [Configure Custom OIDC](#configure-custom-oidc). This setting displays in the YAML file as `none`. - -- **Palette**: This setting makes Palette the IDP. Any user with a Palette account in the tenant and the proper - permissions to view and access the project's resources is able to log into the Kubernetes dashboard. This setting - displays in the YAML file as `palette`. - -- **Inherit from Tenant**: This setting allows you to apply RBAC to multiple clusters and requires you to configure - OpenID Connect (OIDC) in **Tenant Settings**. In Tenant Admin scope, navigate to **Tenant Settings** > **SSO**, choose - **OIDC**, and provide your third-party IDP details. This setting displays in the YAML file as `tenant`. For more - information, check out the [SSO Setup](../user-management/saml-sso/saml-sso.md) guide. - - :::info - - If your IDP uses Security Assertion Markup Language (SAML) authentication, then the **Inherit from Tenant** option - will not work, and you will need to use the **Custom** option instead. This is because Kubernetes supports only OIDC - authentication and not SAML authentication. - - ::: - -### Configure Custom OIDC - -The custom method to configure OIDC and apply RBAC for an OIDC provider can be used for all cloud services except Amazon -Elastic Kubernetes Service (EKS) and [Azure-AKS](../clusters/public-cloud/azure/aks.md). - - - - - -Follow these steps to configure a third-party OIDC IDP. You can apply these steps to all the public cloud providers -except Azure AKS and Amazon EKS clusters. Azure AKS and Amazon EKS require different configurations. AKS requires you to -use Azure Active Directory (AAD) to enable OIDC integration. Refer to -[Enable OIDC in Kubernetes Clusters With Entra ID](../user-management/saml-sso/palette-sso-with-entra-id.md#enable-oidc-in-kubernetes-clusters-with-entra-id) -to learn more. Click the **Amazon EKS** tab for steps to configure OIDC for EKS clusters. - -1. Add the following parameters to your Kubernetes YAML file when creating a cluster profile. - -```yaml -kubeadmconfig: - apiServer: - extraArgs: - oidc-issuer-url: "provider URL" - oidc-client-id: "client-id" - oidc-groups-claim: "groups" - oidc-username-claim: "email" -``` -2. Under the `clientConfig` parameter section of Kubernetes YAML file, uncomment the `oidc-` configuration lines. - -```yaml -ubeadmconfig: - clientConfig: - oidc-issuer-url: "" - oidc-client-id: "" - oidc-client-secret: "" - oidc-extra-scope: profile,email,openid +cloud: + maas: + customEndpoint: "maas-api.example.maas.org" + customEndpointPort: "6443" ``` - - -Follow these steps to configure OIDC for managed EKS clusters. - -1. In the Kubernetes pack, uncomment the lines in the `oidcIdentityProvider` parameter section of the Kubernetes pack, - and enter your third-party provider details. - -```yaml hideClipboard -oidcIdentityProvider: - identityProviderConfigName: "Spectro-docs" - issuerUrl: "issuer-url" - clientId: "user-client-id-from-Palette" - usernameClaim: "email" - usernamePrefix: "-" - groupsClaim: "groups" - groupsPrefix: "" - requiredClaims: -``` - -2. Under the `clientConfig` parameter section of Kubernetes pack, uncomment the `oidc-` configuration lines. - -```yaml hideClipboard -clientConfig: - oidc-issuer-url: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.issuerUrl }}" - oidc-client-id: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.clientId }}" - oidc-client-secret: yourSecretClientSecretGoesHere - oidc-extra-scope: profile,email -``` - -3. Provide third-party OIDC IDP details. - - - - - -### Use RBAC with OIDC - -You can create a role binding that uses individual users as the subject or specify a group name as the subject to map -many users to a role. The group name is the group assigned in the OIDC provider's configuration. Below is an example. To -learn more, review [Create Role Bindings](../clusters/cluster-management/cluster-rbac.md#create-role-bindings). - -Assume you created a group named `dev-east-2` within an OIDC provider. If you configure the host cluster's Kubernetes -pack with all the correct OIDC settings, you could then create a role binding for the `dev-east-2` group. - -In this example, Palette is used as the IDP, and all users in the `dev-east-2` would inherit the `cluster-admin` role. - -![A subject of the type group is assigned as the subject in a RoleBinding](/clusters_cluster-management_cluster-rbac_cluster-subject-group.webp) - -
- - + ## Prerequisites -- A minimum of 4 CPU and 4GB Memory. +- A minimum of 4 CPU and 4 GB Memory. - Operating System (OS) dependencies as listed in the table. -| OS Distribution | OS Version | Supports Kubernetes 1.25.x | -| --------------- | ---------- | -------------------------- | -| CentOS | 7.7 | ✅ | -| Ubuntu | 22.04 | ✅ | -| Ubuntu | 20.04 | ❌ | -| Ubuntu | 18.04 | ❌ | + | OS Distribution | OS Version | Supports Kubernetes 1.27.x | + | --------------- | ---------- | -------------------------- | + | CentOS | 7.7 | ✅ | + | Ubuntu | 22.04 | ✅ | + | Ubuntu | 20.04 | ❌ | + | Ubuntu | 18.04 | ❌ | ## Parameters @@ -1114,7 +828,7 @@ In this example, Palette is used as the IDP, and all users in the `dev-east-2` w | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pack.podCIDR` | The CIDR range for Pods in the cluster. This should match the networking layer property. Default: `192.168.0.0/16` | | `pack.serviceClusterIpRange` | The CIDR range for services in the cluster. This should not overlap with any IP ranges assigned to nodes or pods. Default: `10.96.0.0/12` | -| `pack.serviceDomain` | The cluster DNS service domain. Default: `cluster.local`. To change the default, you must add this parameter to the Kubernetes YAML file at cluster creation and specify the cluster DNS service domain to use. This value cannot be changed after cluster creation is complete. Refer to the [Change Cluster DNS Service Domain](kubernetes.md?versions=k8s_v1.25#change-cluster-dns-service-domain) section. | +| `pack.serviceDomain` | The cluster DNS service domain. Default: `cluster.local`. To change the default, you must add this parameter to the Kubernetes YAML file at cluster creation and specify the cluster DNS service domain to use. This value cannot be changed after cluster creation is complete. Refer to the [Change Cluster DNS Service Domain](kubernetes.md?versions=k8s_v1.27#change-cluster-dns-service-domain) section. | | `pack.palette.config.dashboard.identityProvider` | Dynamically enabled OpenID Connect (OIDC) Identity Provider (IDP) setting based on your UI selection when you add the PXK pack to your profile. This parameter appears in the YAML file after you make a selection. Refer to [Configure OIDC Identity Provider](kubernetes.md#configure-oidc-identity-provider). | | `kubeadmconfig.apiServer.extraArgs` | A list of additional apiServer flags you can set. | | `kubeadmconfig.apiServer.extraVolumes` | A list of additional volumes to mount on the apiServer. | @@ -1138,12 +852,12 @@ The Kubeadm configuration file is where you can do the following: information, refer to the [Clusters](../clusters/clusters.md) guide and [Cluster Deployment Errors](../troubleshooting/cluster-deployment.md). -- Manually configure a third-party OpenID Connect (OIDC) Identity Provider (IDP). For more information, check out - [Configure Custom OIDC](#configure-custom-oidc). - - Change the default cluster DNS service domain from `cluster.local` to a DNS domain that you specify. You can only change the DNS domain during cluster creation. For more information, refer to - [Change Cluster DNS Service Domain](kubernetes.md?versions=k8s_v1.25#change-cluster-dns-service-domain). + [Change Cluster DNS Service Domain](kubernetes.md?versions=k8s_v1.27#change-cluster-dns-service-domain). + +- Manually configure a third-party OpenID Connect (OIDC) Identity Provider (IDP). For more information, check out + [Configure Custom OIDC](#configure-custom-oidc). - Add a certificate for the Spectro Proxy pack if you want to use a reverse proxy with a Kubernetes cluster. For more information, refer to the [Spectro Proxy](frp.md) guide. @@ -1154,7 +868,7 @@ The `pack.serviceDomain` parameter with default value `cluster.local` is not vis its value can only be changed at cluster creation. To change the value, you must add `serviceDomain: "cluster.local"` to the Kubernetes YAML file when you create a cluster, and specify the service domain you want to use. -```yaml +```yaml hideClipboard pack: k8sHardening: True podCIDR: "172.16.0.0/16" @@ -1178,7 +892,7 @@ API documentation. The PXK Kubeadm configuration is updated to dynamically enable OIDC based on your IDP selection by adding the `identityProvider` parameter. -```yaml hideClipboard +```yaml palette: config: dashboard: @@ -1267,13 +981,13 @@ kubeadmconfig: kind: PodSecurityConfiguration defaults: enforce: "baseline" - enforce-version: "v1.25" + enforce-version: "v1.26" audit: "baseline" - audit-version: "v1.25" + audit-version: "v1.26" warn: "restricted" - warn-version: "v1.25" + warn-version: "v1.26" audit: "restricted" - audit-version: "v1.25" + audit-version: "v1.26" exemptions: # Array of authenticated usernames to exempt. usernames: [] @@ -1282,9 +996,11 @@ kubeadmconfig: # Array of namespaces to exempt. namespaces: [kube-system] - preKubeadmCommands: + preKubeadmCommands: - 'echo "====> Applying kernel parameters for Kubelet"' - - "sysctl -p /etc/sysctl.d/90-kubelet.conf" + - 'sysctl -p /etc/sysctl.d/90-kubelet.conf' + postKubeadmCommands: + - 'echo "List of post kubeadm commands to be executed"' # Client configuration to add OIDC based authentication flags in kubeconfig #clientConfig: @@ -1307,12 +1023,11 @@ When you add the PXK pack to a cluster profile, Palette displays the OIDC IDP op All the options require you to map a set of users or groups to a Kubernetes RBAC role. To learn how to map a Kubernetes role to users and groups, refer to -[Create Role Bindings](../clusters/cluster-management/cluster-rbac.md#create-role-bindings). You can also configure OIDC -for virtual clusters. For guidance, refer to +[Create Role Bindings](/clusters/cluster-management/cluster-rbac#create-role-bindings). You can also configure OIDC for +virtual clusters. For guidance, refer to [Configure OIDC for a Virtual Cluster](../clusters/palette-virtual-clusters/configure-oidc-virtual-cluster.md). -- **None**: This is the default setting and there is nothing to configure. This setting displays in the YAML file as - `noauth`. +- **None**: This setting does not require OIDC configuration for the cluster. It displays in the YAML file as `noauth`. :::warning @@ -1321,9 +1036,9 @@ for virtual clusters. For guidance, refer to ::: -- **Custom**: This setting allows you to specify a third-party OIDC provider by configuring OIDC statements in the - Kubeadm configuration file as described in [Configure Custom OIDC](#configure-custom-oidc). This setting displays in - the YAML file as `none`. +- **Custom**: This is the default setting and does not require OIDC configuration. However, if desired, it allows you to + specify a third-party OIDC provider by configuring OIDC statements in the YAML file as described in + [Configure Custom OIDC](#configure-custom-oidc). This setting displays in the YAML file as `none`. - **Palette**: This setting makes Palette the IDP. Any user with a Palette account in the tenant and the proper permissions to view and access the project's resources is able to log into the Kubernetes dashboard. This setting @@ -1359,29 +1074,26 @@ to learn more. Click the **Amazon EKS** tab for steps to configure OIDC for EKS 1. Add the following parameters to your Kubernetes YAML file when creating a cluster profile. -```yaml hideClipboard -kubeadmconfig: - apiServer: - extraArgs: - oidc-issuer-url: "provider URL" - oidc-client-id: "client-id" - oidc-groups-claim: "groups" - oidc-username-claim: "email" -``` + ```yaml + kubeadmconfig: + apiServer: + extraArgs: + oidc-issuer-url: "provider URL" + oidc-client-id: "client-id" + oidc-groups-claim: "groups" + oidc-username-claim: "email" + ``` 2. Under the `clientConfig` parameter section of Kubernetes YAML file, uncomment the `oidc-` configuration lines. -```yaml hideClipboard -kubeadmconfig: - clientConfig: - oidc-issuer-url: "" - oidc-client-id: "" - oidc-client-secret: "" - oidc-extra-scope: profile,email,openid -``` - -3. Provide third-party OIDC IDP details. Refer to the [SAML & SSO Setup](/user-management/saml-sso) for guidance on - configuring a third party IDP with Palette. + ```yaml + kubeadmconfig: + clientConfig: + oidc-issuer-url: "" + oidc-client-id: "" + oidc-client-secret: "" + oidc-extra-scope: profile,email,openid + ``` @@ -1392,27 +1104,29 @@ Follow these steps to configure OIDC for managed EKS clusters. 1. In the Kubernetes pack, uncomment the lines in the `oidcIdentityProvider` parameter section of the Kubernetes pack, and enter your third-party provider details. -```yaml - oidcIdentityProvider: hideClipboard - identityProviderConfigName: 'Spectro-docs' - issuerUrl: 'issuer-url' - clientId: 'user-client-id-from-Palette' - usernameClaim: "email" - usernamePrefix: "-" - groupsClaim: "groups" - groupsPrefix: "" - requiredClaims: -``` + ```yaml + oidcIdentityProvider: + identityProviderConfigName: "Spectro-docs" + issuerUrl: "issuer-url" + clientId: "user-client-id-from-Palette" + usernameClaim: "email" + usernamePrefix: "-" + groupsClaim: "groups" + groupsPrefix: "" + requiredClaims: + ``` 2. Under the `clientConfig` parameter section of Kubernetes pack, uncomment the `oidc-` configuration lines. -```yaml -clientConfig: - oidc-issuer-url: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.issuerUrl }}" - oidc-client-id: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.clientId }}" - oidc-client-secret: yourSecretClientSecretGoesHere - oidc-extra-scope: profile,email -``` + ```yaml + clientConfig: + oidc-issuer-url: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.issuerUrl }}" + oidc-client-id: "{{ .spectro.pack.kubernetes-eks.managedControlPlane.oidcIdentityProvider.clientId }}" + oidc-client-secret: ************************************************** + oidc-extra-scope: profile,email + ``` + +3. Provide third-party OIDC IDP details. @@ -1437,7 +1151,7 @@ In this example, Palette is used as the IDP, and all users in the `dev-east-2` w :::warning -All versions less than v1.25.x are considered deprecated. Upgrade to a newer version to take advantage of new features. +All versions less than v1.27.x are considered deprecated. Upgrade to a newer version to take advantage of new features. ::: diff --git a/docs/docs-content/integrations/longhorn.md b/docs/docs-content/integrations/longhorn.md index 375ef98efb..ec545eb4b0 100644 --- a/docs/docs-content/integrations/longhorn.md +++ b/docs/docs-content/integrations/longhorn.md @@ -84,6 +84,10 @@ The following known issues exist in the Longhorn 1.5.X release. [known issue](https://github.com/longhorn/longhorn/issues/6962) in the Longhorn GitHub repository and a fix is on the roadmap. +- Using Longhorn together in airgap environments with an external registry requires you to update the Longhorn pack + image references to use the base URL of the Harbor registry. For more information, refer to + [Longhorn Deployer Stuck in Init State in Airgap Environments](#using-longhorn-with-harbor-registry-in-airgap-environments). +
@@ -123,7 +127,7 @@ when learning how to use Longhorn. - [How to Create Volumes](https://longhorn.io/docs/1.4.4/volumes-and-nodes/create-volumes/). -- [Access the Longhorn UI](https://longhorn.io/docs/1.4.4/deploy/accessing-the-ui/) +- [Access the Longhorn UI](https://longhorn.io/docs/latest/deploy/accessing-the-ui/#accessing-the-longhorn-ui) - [Longhorn Networking](https://longhorn.io/docs/1.4.4/references/networking/) @@ -136,6 +140,72 @@ when learning how to use Longhorn. We also recommend you check out the [Examples](https://longhorn.io/docs/1.4.4/references/examples/) section of the Longhorn documentation. The examples section contains several use cases of how to configure Longhorn. +### Using Longhorn with Harbor Registry in Airgap Environments + +When you use the Longhorn pack in an airgapped environment, the Harbor Edge-Native Config pack is required for your +cluster to function. However, you must change the image references in the Longhorn pack to use the base URL of the local +Harbor registry. Otherwise, the cluster will fail to deploy, with the `longhorn-driver-deployer` pod stuck in the `Init` +state. + +1. Log in to Palette. + +2. From the left **Main Menu**, select **Profiles**. + +3. Select the cluster profile you use to deploy the cluster with Longhorn. + +4. In the pack YAML for the Longhorn pack, replace the base URL of each image referenced in the pack with the Harbor + registry. + + For example, the following is a snippet of the Longhorn pack's YAML before and after you replace the base URL. + + + + + + ```yaml + pack: + namespace: "longhorn-system" + namespaceLabels: + "longhorn-system": + "pod-security.kubernetes.io/enforce=privileged,pod-security.kubernetes.io/enforce-version=v{{ + .spectro.system.kubernetes.version | substr 0 4 }}" + content: + images: + - image: gcr.io/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-engine:v1.5.3 + - image: gcr.io/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-manager:v1.5.3 + - image: gcr.io/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-ui:v1.5.3 + - image: gcr.io/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-instance-manager:v1.5.3 + - image: gcr.io/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-share-manager:v1.5.3 + ``` + + + + + + ```yaml + pack: + namespace: "longhorn-system" + namespaceLabels: + "longhorn-system": + "pod-security.kubernetes.io/enforce=privileged,pod-security.kubernetes.io/enforce-version=v{{ + .spectro.system.kubernetes.version | substr 0 4 }}" + content: + images: + - image: 10.10.137.220:30003/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-engine:v1.5.3 + - image: 10.10.137.220:30003/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-manager:v1.5.3 + - image: 10.10.137.220:30003/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-ui:v1.5.3 + - image: 10.10.137.220:30003/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-instance-manager:v1.5.3 + - image: 10.10.137.220:30003/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-share-manager:v1.5.3 + ``` + + + + + + Refer to [Harbor Edge-Native Config](./harbor-edge.md#log-in-to-harbor-web-ui) pack documentation to learn how to + find the node IP and port of the Harbor registry. If you have given the registry a domain name, you can use the + domain name instead of the node IP. + @@ -175,7 +245,7 @@ when learning how to use Longhorn. - [How to Create Volumes](https://longhorn.io/docs/1.4.4/volumes-and-nodes/create-volumes/). -- [Access the Longhorn UI](https://longhorn.io/docs/1.4.4/deploy/accessing-the-ui/) +- [Access the Longhorn UI](https://longhorn.io/docs/latest/deploy/accessing-the-ui/#accessing-the-longhorn-ui) - [Longhorn Networking](https://longhorn.io/docs/1.4.4/references/networking/) @@ -188,6 +258,72 @@ when learning how to use Longhorn. We also recommend you check out the [Examples](https://longhorn.io/docs/1.4.4/references/examples/) section of the Longhorn documentation. The examples section contains several use cases of how to configure Longhorn. +### Using Longhorn with Harbor Registry in Airgap Environments + +When you use the Longhorn pack in an airgapped environment, the Harbor Edge-Native Config pack is required for your +cluster to function. However, you must change the image references in the Longhorn pack to use the base URL of the local +Harbor registry. Otherwise, the cluster will fail to deploy, with the `longhorn-driver-deployer` pod stuck in the `Init` +state. + +1. Log in to Palette. + +2. From the left **Main Menu**, select **Profiles**. + +3. Select the cluster profile you use to deploy the cluster with Longhorn. + +4. In the pack YAML for the Longhorn pack, replace the base URL of each image referenced in the pack with the Harbor + registry. + + For example, the following is a snipped of the Longhorn pack's YAML before and after you replace the base URL: + + + + + + ```yaml + pack: + namespace: "longhorn-system" + namespaceLabels: + "longhorn-system": + "pod-security.kubernetes.io/enforce=privileged,pod-security.kubernetes.io/enforce-version=v{{ + .spectro.system.kubernetes.version | substr 0 4 }}" + content: + images: + - image: gcr.io/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-engine:v1.5.3 + - image: gcr.io/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-manager:v1.5.3 + - image: gcr.io/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-ui:v1.5.3 + - image: gcr.io/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-instance-manager:v1.5.3 + - image: gcr.io/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-share-manager:v1.5.3 + ``` + + + + + + ```yaml + pack: + namespace: "longhorn-system" + namespaceLabels: + "longhorn-system": + "pod-security.kubernetes.io/enforce=privileged,pod-security.kubernetes.io/enforce-version=v{{ + .spectro.system.kubernetes.version | substr 0 4 }}" + content: + images: + - image: 10.10.137.220:30003/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-engine:v1.5.3 + - image: 10.10.137.220:30003/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-manager:v1.5.3 + - image: 10.10.137.220:30003/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-ui:v1.5.3 + - image: 10.10.137.220:30003/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-instance-manager:v1.5.3 + - image: 10.10.137.220:30003/spectro-images-public/packs/csi-longhorn/1.5.3/longhorn-share-manager:v1.5.3 + ``` + + + + + + Refer to [Harbor Edge-Native Config](./harbor-edge.md#log-in-to-harbor-web-ui) pack documentation to learn how to + find the node IP and port of the Harbor registry. If you have given the registry a domain name, you can use the + domain name instead of the node IP. +
diff --git a/docs/docs-content/integrations/ngrok.md b/docs/docs-content/integrations/ngrok.md index 09bb5c23a6..813dcabd87 100644 --- a/docs/docs-content/integrations/ngrok.md +++ b/docs/docs-content/integrations/ngrok.md @@ -4,7 +4,7 @@ title: "ngrok" description: "Learn about using ngrok Kubernetes Ingress to access applications in Palette." hide_table_of_contents: true type: "integration" -category: ["ingress", "kubernetes", "amd64", "community"] +category: ["ingress", "amd64", "community"] sidebar_class_name: "hide-from-sidebar" logoUrl: "https://registry.spectrocloud.com/v1/ngrok-ingress-controller/blobs/sha256:a723399d53d716c5441d57d021a7975d961e5b7db79ccb2bc10f7524ba7e67c1?type=image.webp" tags: ["packs", "ngrok", "network", "kubernetes"] diff --git a/docs/docs-content/integrations/nutanix-csi.md b/docs/docs-content/integrations/nutanix-csi.md index 3cf11d1492..f69b71549b 100644 --- a/docs/docs-content/integrations/nutanix-csi.md +++ b/docs/docs-content/integrations/nutanix-csi.md @@ -36,9 +36,8 @@ platform with Kubernetes by implementing a node controller function. ## Parameters -The table below lists commonly used parameters you can configure when adding the Nutanix CSI pack. Review the -[Nutanix CSI Pack](https://github.com/spectrocloud/pax/edit/master/stable/storage/nutanix-csi-2.6.6/README.md) GitHub -page for a complete parameters list. +The table below lists commonly used parameters you can configure when adding the Nutanix CSI pack. Review the Nutanix +CSI Pack README for a complete list of parameters. | **Parameter** | **Description** | **Default** | | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------- | @@ -102,4 +101,3 @@ data "spectrocloud_pack_simple" "nutanix-csi" { - [Nutanix Documentation](https://www.nutanixbible.com) - [Nutanix Cloud Controller Manager on GitHub](https://github.com/nutanix-cloud-native/cloud-provider-nutanix) - [Nutanix CSI Volume Driver Documentation](https://portal.nutanix.com/page/documents/details?targetId=CSI-Volume-Driver-v2_6:CSI-Volume-Driver-v2_6) -- [Nutanix CSI Pack on GitHub](https://github.com/spectrocloud/pax/tree/master/stable/storage/nutanix-csi-2.6.6) diff --git a/docs/docs-content/integrations/portworx.md b/docs/docs-content/integrations/portworx.md index b21e0fa264..1a8881baef 100644 --- a/docs/docs-content/integrations/portworx.md +++ b/docs/docs-content/integrations/portworx.md @@ -72,7 +72,7 @@ The default installation of Portworx will deploy the following components in the - [Lighthouse](https://portworx.com/blog/manage-portworx-clusters-using-lighthouse/) - [Stork](https://github.com/libopenstorage/stork) and - [Stork on Portworx](https://docs.portworx.com/portworx-install-with-kubernetes/storage-operations/stork/) + [Stork on Portworx](https://docs.portworx.com/portworx-enterprise/platform/openshift/ocp-gcp/operations/storage-operations/stork.html) - Storage class making use of portworx-volume provisioner. @@ -525,8 +525,6 @@ manifests: - [Portworx Install with Kubernetes](https://docs.portworx.com/portworx-install-with-kubernetes/) -- [Lighthouse](https://legacy-docs.portworx.com/enterprise/lighthouse-new.html) - - [Installation Prerequisites](https://docs.portworx.com/install-portworx/prerequisites/) -- [Install Portworx on AWS ASG using the DaemonSet](https://docs.portworx.com/install-portworx/cloud/aws/aws-asg/daemonset/) +- [Install Portworx on AWS ASG](https://docs.portworx.com/portworx-enterprise/install-portworx/kubernetes/aws/aws-asg) diff --git a/docs/docs-content/integrations/portworx_operator.md b/docs/docs-content/integrations/portworx_operator.md index 9252088742..13cfa78eca 100644 --- a/docs/docs-content/integrations/portworx_operator.md +++ b/docs/docs-content/integrations/portworx_operator.md @@ -531,7 +531,7 @@ vsphereSecret: To activate the Pure Flash Array integration, you will need to create a Kubernetes secret named `px-pure-secret` on your cluster containing your -[Flash Array license JSON](https://docs.portworx.com/portworx-enterprise/cloud-references/auto-disk-provisioning/pure-flash-array.html#deploy-portworx). +[Flash Array license JSON](https://docs.portworx.com/portworx-enterprise/install-portworx/kubernetes/install-flasharray.html#create-a-json-configuration-file). The secret must be created in the namespace that contains the `StorageCluster` resource. The namespace is `portworx` by default. @@ -1138,7 +1138,7 @@ vsphereSecret: To activate the Pure Flash Array integration, you will need to create a Kubernetes secret named `px-pure-secret` on your cluster containing your -[Flash Array license JSON](https://docs.portworx.com/portworx-enterprise/cloud-references/auto-disk-provisioning/pure-flash-array.html#deploy-portworx). +[Flash Array license JSON](https://docs.portworx.com/portworx-enterprise/install-portworx/kubernetes/install-flasharray.html#create-a-json-configuration-file). The secret must be created in the namespace that contains the `StorageCluster` resource. The namespace is `kube-system` by default. @@ -1727,7 +1727,7 @@ vsphereSecret: To activate the Pure Flash Array integration, you will need to create a Kubernetes secret named `px-pure-secret` on your cluster containing your -[Flash Array license JSON](https://docs.portworx.com/portworx-enterprise/cloud-references/auto-disk-provisioning/pure-flash-array.html#deploy-portworx). +[Flash Array license JSON](https://docs.portworx.com/portworx-enterprise/install-portworx/kubernetes/install-flasharray.html#create-a-json-configuration-file). The secret must be created in the namespace that contains the `StorageCluster` resource. The namespace is `kube-system` by default. @@ -1910,4 +1910,4 @@ data "spectrocloud_pack_simple" "portworx-operator" { - [Portworx Central](https://docs.portworx.com/portworx-central-on-prem/install/px-central.html) -- [Flash Array License JSON](https://docs.portworx.com/portworx-enterprise/cloud-references/auto-disk-provisioning/pure-flash-array.html#deploy-portworx) +- [Flash Array License JSON](https://docs.portworx.com/portworx-enterprise/install-portworx/kubernetes/install-flasharray.html#create-a-json-configuration-file) diff --git a/docs/docs-content/integrations/prometheus-operator.md b/docs/docs-content/integrations/prometheus-operator.md index bc638000fc..e691ade455 100644 --- a/docs/docs-content/integrations/prometheus-operator.md +++ b/docs/docs-content/integrations/prometheus-operator.md @@ -934,7 +934,7 @@ The Prometheus Operator pack installs the following dependencies: ## Parameters The Prometheus operator supports all the parameters exposed by the kube-prometheus-stack Helm Chart. Refer to the -[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stackn) +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) documentation for details. The Prometheus Operator pack has one parameter you must initialize `grafana.adminPassword`: @@ -1083,7 +1083,7 @@ The Prometheus Operator pack installs the following dependencies: ## Parameters The Prometheus operator supports all the parameters exposed by the kube-prometheus-stack Helm Chart. Refer to the -[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stackn) +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) documentation for details. The Prometheus Operator pack has one parameter you must initialize `grafana.adminPassword`: diff --git a/docs/docs-content/integrations/rke2.md b/docs/docs-content/integrations/rke2.md index 1c3c32746d..be056d4c94 100644 --- a/docs/docs-content/integrations/rke2.md +++ b/docs/docs-content/integrations/rke2.md @@ -13,8 +13,6 @@ logoUrl: "https://registry.dev.spectrocloud.com/v1/kubernetes-rke2/blobs/sha256: the U.S. Federal Government sector. To meet the Kubernetes security and compliance goals required by the U.S. Federal Government, RKE2 establishes the following: -
- 1. Provides defaults and configuration options that allow clusters to pass the CIS Kubernetes Benchmark v1.6 with minimal operator intervention. @@ -38,10 +36,9 @@ the respective owner. Once we stop supporting the minor version, we initiate the The following RKE2 versions are supported to work with Palette. -
- - + + ## Prerequisites @@ -63,8 +60,6 @@ guide to learn more. RKE2 offers several customization options, ranging from networking to security. We recommend you review the following RKE2 documentation: -
- - [Configuration Options](https://docs.rke2.io/install/configuration) - [Inbound Network Rules](https://docs.rke2.io/install/requirements#inbound-network-rules) @@ -78,7 +73,8 @@ Many of the Day-2 cluster management responsibilities are handled by Palette. Re Palette and Day-2 operations.
- + + ## Prerequisites @@ -100,8 +96,6 @@ guide to learn more. RKE2 offers several customization options, ranging from networking to security. We recommend you review the following RKE2 documentation: -
- - [Configuration Options](https://docs.rke2.io/install/configuration) - [Inbound Network Rules](https://docs.rke2.io/install/requirements#inbound-network-rules) @@ -115,7 +109,7 @@ Many of the Day-2 cluster management responsibilities are handled by Palette. Re Palette and Day-2 operations.
- + ## Prerequisites @@ -137,44 +131,6 @@ guide to learn more. RKE2 offers several customization options, ranging from networking to security. We recommend you review the following RKE2 documentation: -
- -- [Configuration Options](https://docs.rke2.io/install/configuration) - -- [Inbound Network Rules](https://docs.rke2.io/install/requirements#inbound-network-rules) - -- [Registries Configuration](https://docs.rke2.io/install/containerd_registry_configuration) - -- [Advanced Options](https://docs.rke2.io/advanced) - -Many of the Day-2 cluster management responsibilities are handled by Palette. Review the -[Cluster Management](../clusters/cluster-management/cluster-management.md) reference resource to learn more about -Palette and Day-2 operations. - -
- - -## Prerequisites - -- A Linux operating system. Refer to the official [RKE2 requirements](https://docs.rke2.io/install/requirements) for - more details on supported Linux distributions and versions. - -- 8 GB Memory - -- 4 CPU - -- An Edge host. Refer to the [Edge](../clusters/edge/edge.md) documentation to learn more about Edge. - -## Usage - -You can add RKE2 to an Edge cluster profile as the Kubernetes layer. To learn more, refer to the -[Create Cluster Profiles](../profiles/cluster-profiles/create-cluster-profiles/create-cluster-profiles.md) guide. - -RKE2 offers several customization options, ranging from networking to security. We recommend you review the following -RKE2 documentation: - -
- - [Configuration Options](https://docs.rke2.io/install/configuration) - [Inbound Network Rules](https://docs.rke2.io/install/requirements#inbound-network-rules) @@ -191,7 +147,7 @@ Palette and Day-2 operations. -All version of RKE2 prior to 1.25.x are deprecated and no longer supported by Palette. We recommend you upgrade to a +All version of RKE2 prior to 1.27.x are deprecated and no longer supported by Palette. We recommend you upgrade to a supported version of RKE2. diff --git a/docs/docs-content/integrations/rook-ceph.md b/docs/docs-content/integrations/rook-ceph.md index 3771f3c2e5..c38b44da4a 100644 --- a/docs/docs-content/integrations/rook-ceph.md +++ b/docs/docs-content/integrations/rook-ceph.md @@ -1,7 +1,9 @@ --- sidebar_label: "rook-ceph" title: "Rook Ceph" -description: "Rook Ceph storage pack in Spectro Cloud" +description: "Rook is an open-source cloud-native storage orchestrator that provides the platform, framework, and support for Ceph +storage to natively integrate with cloud-native environments. Ceph is a distributed storage system that provides file, +block, and object storage and is deployed in large-scale production clusters. This page talks about how to use the Rook Ceph storage pack in Spectro Cloud" hide_table_of_contents: true type: "integration" category: ["storage", "amd64"] @@ -11,58 +13,419 @@ logoUrl: tags: ["packs", "rook-ceph", "storage"] --- +Rook is an open-source cloud-native storage orchestrator that provides the platform, framework, and support for Ceph +storage to natively integrate with cloud-native environments. Ceph is a distributed storage system that provides file, +block, and object storage and is deployed in large-scale production clusters. + Rook turns storage software into self-managing, self-scaling, and self-healing storage services. It automates deployment, bootstrapping, configuration, provisioning, scaling, upgrading, migration, disaster recovery, monitoring, and resource management. Rook uses the facilities provided by the underlying cloud-native container management, scheduling, and orchestration platform to perform its duties. -The pack provides the following two configurations: +The pack has two presets that provide the following two configurations: -- A three-node Ceph cluster (recommended). -- A single node Ceph cluster. +- A multi-node Ceph cluster. +- A single-node Ceph cluster. -Please make sure that your worker node pool size satisfies the minimum nodes requirement for your Ceph cluster. -Additional disks should be attached to your worker pool nodes to deploy a Ceph cluster. For example, suppose you are -using existing appliances for your Kubernetes cluster (typical for edge clusters); you will need to ensure that -additional disks (1 or 3 - based on your Ceph cluster settings) are attached to the appliance. The device filter needs -to be configured in the pack settings for such cases. As an example, if the additional disks were sdd, sde, sdf, the -following configuration would be required: +## Versions Supported -Example YAML + -```yaml -storage: - useAllNodes: true - useAllDevices: false - deviceFilter: ^sd[d-f] - config: - osdsPerDevice: "1" # this value can be overridden at the node or device level -``` + -## Versions Supported +## Prerequisites - +- Kubernetes v1.21 or higher. + +- If you are using Rook on Edge, the Edge host needs to be created with at least two hard disks. + +## Parameters + +| Parameter | Description | Default | +| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------ | +| cluster.contents.spec.storage.useAllDevices | Allows the cluster to use all available devices on the nodes for storage. | true | +| cluster.contents.spec.storage.deviceFilter | A regex filter that filters storage devices. Only device names that match the filter are used by Ceph clusters. | Empty String | +| cluster.contents.spec.dashboard.enabled | Whether to enable the Ceph dashboard. | true | +| cluster.operator.contents.data.LOG_LEVEL | The log level of Rook Operator. Accepted values are `DEBUG`, `INFO`. `WARNING`, and `ERROR`. | `INFO` | + +## Usage + +### Rook on Edge Clusters + +To use Rook-Ceph on Edge clusters, you need to make a few changes to the cluster profile depending on your cluster +configuration. + +1. In the YAML file for BYO-OS pack, add the following blocks to the `stages` configuration in the OS pack of the + cluster profile. + + ```yaml + stages: + initramfs: + - files: + - path: /etc/modules-load.d/ceph.conf + permissions: 644 + owner: 0 + group: 0 + content: | + rbd + ceph + encoding: "" + ownerstring: "" + after-upgrade: + - name: "Erase Old Partitions on Boot Disk" + commands: + - wipefs -a /dev/sdb + ``` + +2. Click on the Rook-Ceph layer. In the upper-right corner of the Rook-Ceph layer's YAML editing interface, click + **Presets**. Set the preset to either single-node or multi-node depending on your cluster configuration. + +3. If you chose the **Single Node Cluster** preset, skip this step. + + If you chose the **Multi Node Cluster with Replicas** preset, set the value of + `manifests.storageClass.volumeBindingMode` to `Immediate`. + +### Access Ceph Dashboard + +The Ceph dashboard gives you an overview of the status of your Ceph cluster, including overall health, and the status of +all Ceph daemons. By default, the Dashboard is exposed as a ClusterIP-type service on the port 7000 on single node +clusters. + +1. Issue the following command to view the service and find its cluster IP and port. + + ```shell + kukubectl --namespace rook-ceph get svc | grep dashboard + ``` + + ```hideClipboard + rook-ceph-mgr-dashboard ClusterIP 192.169.32.142 7000/TCP 15m + ``` + +2. If you are on a node of the cluster, you can visit the dashboard by visiting the cluster IP and the exposed port. + + If you are remotely accessing the cluster, you can issue the following command to enable port forwarding from your + local machine to the dashboard service. + + ```shell + kukubectl port-forward svc/rook-ceph-mgr-dashboard -n rook-ceph 8443:7000 & + ``` + + If your dashboard service is exposed on a different port, replace 7000 with the port that the dashboard service is + exposed on. + +3. Once you can connect to the dashboard, you need to provide the login credentials to access the dashboard. Rook + creates a default user named `admin` and generates a secret called `rook-ceph-dashboard-password` in the namespace of + the Rook-Ceph cluster. To retrieve the generated password, issue the following command: + + ```shell + kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo + ``` + +4. Use the password you receive in the output with the username `admin` to log in to the Ceph Dashboard. + +### Known Issues + +- If a cluster experiences network issues, it's possible for the file mount to become unavailable and remain unavailable + even after the network is restored. This a known issue disclosed in the + [Rook GitHub repository](https://github.com/rook/rook/issues/13818). Refer to the + [Troubleshooting section](#file-mount-becomes-unavailable-after-cluster-experiences-network-issues) for a workaround + if you observe this issue in your cluster. + + + + + +## Prerequisites + +- Kubernetes v1.21 or higher. + +- If you are using Rook on Edge, the Edge host needs to be created with at least two hard disks. The actual required + number of disks depend on your cluster configuration. + +## Parameters + +| Parameter | Description | Default | +| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------ | +| cluster.contents.spec.storage.useAllDevices | Allows the cluster to use all available devices on the nodes for storage. | true | +| cluster.contents.spec.storage.deviceFilter | A regex filter that filters storage devices. Only device names that match the filter are used by Ceph clusters. | Empty String | +| cluster.contents.spec.dashboard.enabled | Whether to enable the Ceph dashboard. | true | +| cluster.operator.contents.data.LOG_LEVEL | The log level of Rook Operator. Accepted values are `DEBUG`, `INFO`. `WARNING`, and `ERROR`. | `INFO` | + +## Usage + +### Rook on Edge Clusters + +To use Rook-Ceph on Edge clusters, you need to make a few changes to the cluster profile depending on your cluster +configuration. + +1. In the YAML file for BYO-OS pack, add the following blocks to the `stages` configuration in the OS pack of the + cluster profile. + + ```yaml + stages: + initramfs: + - files: + - path: /etc/modules-load.d/ceph.conf + permissions: 644 + owner: 0 + group: 0 + content: | + rbd + ceph + encoding: "" + ownerstring: "" + after-upgrade: + - name: "Erase Old Partitions on Boot Disk" + commands: + - wipefs -a /dev/sdb + ``` + +2. Click on the Rook-Ceph layer. In the upper-right corner of the Rook-Ceph layer's YAML editing interface, click + **Presets**. Set the preset to either single-node or multi-node depending on your cluster configuration. + +3. If you chose the **Single Node Cluster** preset, skip this step. + + If you chose the **Multi Node Cluster with Replicas** preset, set the value of + `manifests.storageClass.volumeBindingMode` to `Immediate`. + +### Access Ceph Dashboard + +The Ceph dashboard gives you an overview of the status of your Ceph cluster, including overall health, and the status of +all Ceph daemons. By default, the Dashboard is exposed as a ClusterIP-type service on the port 7000 on single node +clusters. + +1. Issue the following command to view the service and find its cluster IP and port. + + ```shell + kukubectl --namespace rook-ceph get svc | grep dashboard + ``` + + ```hideClipboard + rook-ceph-mgr-dashboard ClusterIP 192.169.32.142 7000/TCP 15m + ``` + +2. If you are on a node of the cluster, you can visit the dashboard by visiting the cluster IP and the exposed port. + + If you are remotely accessing the cluster, you can issue the following command to enable port forwarding from your + local machine to the dashboard service. + + ```shell + kukubectl port-forward svc/rook-ceph-mgr-dashboard -n rook-ceph 8443:7000 & + ``` + + If your dashboard service is exposed on a different port, replace 7000 with the port that the dashboard service is + exposed on. - +3. Once you can connect to the dashboard, you need to provide the login credentials to access the dashboard. Rook + creates a default user named `admin` and generates a secret called `rook-ceph-dashboard-password` in the namespace of + the Rook-Ceph cluster. To retrieve the generated password, issue the following command: -**1.9.2** + ```shell + kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo + ``` + +4. Use the password you receive in the output with the username `admin` to log in to the Ceph Dashboard. + +### Known Issues + +- If a cluster experiences network issues, it's possible for the file mount to become unavailable and remain unavailable + even after the network is restored. This a known issue disclosed in the + [Rook GitHub repository](https://github.com/rook/rook/issues/13818). Refer to the + [Troubleshooting section](#file-mount-becomes-unavailable-after-cluster-experiences-network-issues) for a workaround + if you observe this issue in your cluster. - + + +## Prerequisites + +- Kubernetes v1.21 or higher. + +- If you are using Rook on Edge, the Edge host needs to be created with at least two hard disks. The actual required + number of disks depend on your cluster configuration. + +## Parameters + +| Parameter | Description | Default | +| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------ | +| cluster.contents.spec.storage.useAllDevices | Allows the cluster to use all available devices on the nodes for storage. | true | +| cluster.contents.spec.storage.deviceFilter | A regex filter that filters storage devices. Only device names that match the filter are used by Ceph clusters. | Empty String | +| cluster.contents.spec.dashboard.enabled | Whether to enable the Ceph dashboard. | true | +| cluster.operator.contents.data.LOG_LEVEL | The log level of Rook Operator. Accepted values are `DEBUG`, `INFO`. `WARNING`, and `ERROR`. | `INFO` | + +## Usage + +### Rook on Edge Clusters + +To use Rook-Ceph on Edge clusters, you need to make a few changes to the cluster profile depending on your cluster +configuration. + +1. In the YAML file for BYO-OS pack, add the following blocks to the `stages` configuration in the OS pack of the + cluster profile. + + ```yaml + stages: + initramfs: + - files: + - path: /etc/modules-load.d/ceph.conf + permissions: 644 + owner: 0 + group: 0 + content: | + rbd + ceph + encoding: "" + ownerstring: "" + after-upgrade: + - name: "Erase Old Partitions on Boot Disk" + commands: + - wipefs -a /dev/sdb + ``` + +2. Click on the Rook-Ceph layer. In the upper-right corner of the Rook-Ceph layer's YAML editing interface, click + **Presets**. Set the preset to either single-node or multi-node depending on your cluster configuration. + +3. If you chose the **Single Node Cluster** preset, skip this step. + + If you chose the **Multi Node Cluster with Replicas** preset, set the value of + `manifests.storageClass.volumeBindingMode` to `Immediate`. + +### Access Ceph Dashboard + +The Ceph dashboard gives you an overview of the status of your Ceph cluster, including overall health, and the status of +all Ceph daemons. By default, the Dashboard is exposed as a ClusterIP-type service on the port 7000 on single node +clusters. + +1. Issue the following command to view the service and find its cluster IP and port. + + ```shell + kukubectl --namespace rook-ceph get svc | grep dashboard + ``` + + ```hideClipboard + rook-ceph-mgr-dashboard ClusterIP 192.169.32.142 7000/TCP 15m + ``` + +2. If you are on a node of the cluster, you can visit the dashboard by visiting the cluster IP and the exposed port. + + If you are remotely accessing the cluster, you can issue the following command to enable port forwarding from your + local machine to the dashboard service. + + ```shell + kukubectl port-forward svc/rook-ceph-mgr-dashboard -n rook-ceph 8443:7000 & + ``` + + If your dashboard service is exposed on a different port, replace 7000 with the port that the dashboard service is + exposed on. + +3. Once you can connect to the dashboard, you need to provide the login credentials to access the dashboard. Rook + creates a default user named `admin` and generates a secret called `rook-ceph-dashboard-password` in the namespace of + the Rook-Ceph cluster. To retrieve the generated password, issue the following command: + + ```shell + kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo + ``` + +4. Use the password you receive in the output with the username `admin` to log in to the Ceph Dashboard. -**1.8.3** +### Known Issues + +- If a cluster experiences network issues, it's possible for the file mount to become unavailable and remain unavailable + even after the network is restored. This a known issue disclosed in the + [Rook GitHub repository](https://github.com/rook/rook/issues/13818). Refer to the + [Troubleshooting section](#file-mount-becomes-unavailable-after-cluster-experiences-network-issues) for a workaround + if you observe this issue in your cluster. - + -**1.5.9** +The older versions of this pack are deprecated. Please use the later versions to take advantage of new features and +improvements. +## Troubleshooting + +### File Mount Becomes Unavailable after Cluster Experiences Network Issues + +A known issue exists with Rook-Ceph where file mounts become unavailable and remain unavailable even after network +issues are resolved. + +#### Debug Steps + +1. One way to debug is to reboot the node that is experiencing the issues. If you are unable to reboot the node, or if + rebooting the node does not fix the issue, continue to the following steps. + +2. Connect to your cluster via the command-line. For more information, refer to + [Access Cluster with CLI](/docs/docs-content/clusters/cluster-management/palette-webctl.md). + +3. Issue the following command to identify Persistent Volume Claims (PVC) from Ceph File System (FS). + + ```shell + kubectl get pvc --all | grep "cephFS" + ``` + +4. Scale down all workloads, including pods, deployments, and StatefulSets using the PVC to zero. + + To scale down a deployment, use the following command. Replace `deployment-name` with the name of the deployment. + + ```shell + kubectl scale deployment deployment-name --replicas=0 + ``` + + To scale down a StatefulSet, use the following command. Replace `statefulset-name` with the name of the StatefulSet. + + ```shell + kubectl scale statefulset statefulset-name --replicas=0 + ``` + + To scale down a pod, delete it. Make sure you delete the deployments and StatefulSets first. If a pod belongs to a + StatefulSet or a deployment, it will simply be recreated. + + ```shell + kubectl delete pods pod-name + ``` + + :::tip + + If you do not know which workloads use the PVC, you can start by getting a list of all pods that are using PVCs and + their PVC names with the following command. + + ```shell + kubectl get pods --all-namespaces --output=json | jq '.items[] | {name: .metadata.name, namespace: .metadata.namespace, claimName: .spec | select( has ("volumes") ).volumes[] | select( has ("persistentVolumeClaim") ).persistentVolumeClaim.claimName }' + ``` + + You can then find workloads that are associated with the pods and scale them down to zero. + + ::: + +5. Once all the workloads are scaled down, all existing volume mounts will be unmounted, followed by fresh new mounts of + cephFS volumes. Ensure that all workloads are scaled down to zero. Even if one pod remains that uses the PVC, the + unmount will not happen and the issue will not be resolved. + +6. Scale the workloads back to their original state. + +## Terraform + +```tf +data "spectrocloud_registry" "registry" { + name = "Public Repo" +} + +data "spectrocloud_pack_simple" "pack" { + name = "csi-rook-ceph-addon" + version = "1.12.7" + type = "helm" + registry_uid = data.spectrocloud_registry.registry.id +} +``` + ## References -- [Rook Cepth Documentation](https://rook.io/docs/rook/v1.10/Getting-Started/intro/) +- [Rook Ceph Documentation](https://rook.io/docs/rook/v1.10/Getting-Started/intro/) + +- [Ceph Dashboard](https://rook.io/docs/rook/latest-release/Storage-Configuration/Monitoring/ceph-dashboard/) diff --git a/docs/docs-content/integrations/vault.md b/docs/docs-content/integrations/vault.md index 2ba38f1384..2bad5981a8 100644 --- a/docs/docs-content/integrations/vault.md +++ b/docs/docs-content/integrations/vault.md @@ -88,7 +88,7 @@ unseal Vault. You can do so by following these steps: kubectl port-forward $APP_NAME 8200:8200 --namespace $VAULT_NAMESPACE ``` -8. Open your browser and access the [Vault UI](https://localhost:8200/ui). You will receive a warning due to using a +8. Open your browser and access the Vault UI at `https://localhost:8200/ui`. You will receive a warning due to using a self-signed certificate, but you can ignore this warning. Follow the prompts on the UI to initialize your root token. :::tip diff --git a/docs/docs-content/legal-licenses/oss-licenses.md b/docs/docs-content/legal-licenses/oss-licenses.md index b3f3c5212f..78befd725b 100644 --- a/docs/docs-content/legal-licenses/oss-licenses.md +++ b/docs/docs-content/legal-licenses/oss-licenses.md @@ -11,460 +11,483 @@ tags: ["legal", "licenses"] The following table lists the open-source licenses tied to the libraries and modules currently in use by Palette. If you have any questions or concerns, contact us at support@spectrocloud.com -| **Library** | **License** | -| --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | -| github.com/hashicorp/golang-lru | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/Masterminds/goutils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/googleapis/enterprise-certificate-proxy/client | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/azure-sdk-for-go | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/go-autorest/autorest/azure/auth | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mitchellh/mapstructure | [MIT](https://opensource.org/license/mit/) | -| github.com/josharian/intern | [MIT](https://opensource.org/license/mit/) | -| github.com/ghodss/yaml | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources | [MIT](https://opensource.org/license/mit/) | -| github.com/klauspost/compress/zstd/internal/xxhash | [MIT](https://opensource.org/license/mit/) | -| github.com/hashicorp/go-uuid | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/asaskevich/govalidator | [MIT](https://opensource.org/license/mit/) | -| github.com/huandu/xstrings | [MIT](https://opensource.org/license/mit/) | -| github.com/golang-jwt/jwt/v4 | [MIT](https://opensource.org/license/mit/) | -| k8s.io/metrics/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jlaffaye/ftp | [ISC](https://opensource.org/license/isc-license-txt) | -| github.com/mitchellh/reflectwalk | [MIT](https://opensource.org/license/mit/) | -| github.com/shopspring/decimal | [MIT](https://opensource.org/license/mit/) | -| gopkg.in/square/go-jose.v2/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/spf13/cast | [MIT](https://opensource.org/license/mit/) | -| github.com/dimchansky/utfbom | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gofrs/uuid | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| go.uber.org/atomic | [MIT](https://opensource.org/license/mit/) | -| github.com/dgraph-io/ristretto/z | [MIT](https://opensource.org/license/mit/) | -| github.com/hashicorp/go-version | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/structured-merge-diff/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) | -| k8s.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| go.uber.org/multierr | [MIT](https://opensource.org/license/mit/) | -| github.com/andreburgaud/crypt2go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/Azure/go-autorest/autorest/azure/cli | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/bxcodec/faker/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/go-errors/errors | [MIT](https://opensource.org/license/mit/) | -| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| go.mongodb.org/mongo-driver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/aws/aws-sdk-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jmespath/go-jmespath | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/phpdave11/gofpdi | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/sys | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| cloud.google.com/go/compute/metadata | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/evanphx/json-patch/v5 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/stretchr/testify/assert | [MIT](https://opensource.org/license/mit/) | -| go.opencensus.io | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/klog/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/youmark/pkcs8 | [MIT](https://opensource.org/license/mit/) | -| github.com/google/s2a-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/jsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/modern-go/concurrent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/go-autorest/autorest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mitchellh/copystructure | [MIT](https://opensource.org/license/mit/) | -| github.com/jessevdk/go-flags | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/stripe/stripe-go/v71 | [MIT](https://opensource.org/license/mit/) | -| github.com/gorhill/cronexpr | [APL-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| google.golang.org/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| google.golang.org/appengine | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription | [MIT](https://opensource.org/license/mit/) | -| github.com/spf13/pflag | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/nats-io/nats.go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/jsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apimachinery | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| emperror.dev/errors | [MIT](https://opensource.org/license/mit/) | -| github.com/klauspost/pgzip | [MIT](https://opensource.org/license/mit/) | -| k8s.io/client-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/yaml | [MIT](https://opensource.org/license/mit/) | -| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mitchellh/go-homedir | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/go-autorest/autorest/date | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xdg-go/scram | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/gofuzz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/golang/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/gophercloud/gophercloud | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gorilla/mux | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/go-openapi/strfmt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/xdg-go/stringprep | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/go-autorest/autorest/to | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/aws/aws-sdk-go/internal/sync/singleflight | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/Masterminds/sprig/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/dgraph-io/ristretto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/square/go-jose.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork | [MIT](https://opensource.org/license/mit/) | -| github.com/golang/snappy | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/klauspost/compress/internal/snapref | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/Azure/azure-sdk-for-go/sdk/azidentity | [MIT](https://opensource.org/license/mit/) | -| github.com/russellhaering/goxmldsig | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/nats-io/nkeys | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/googleapis/gax-go/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4 | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/Azure/go-autorest/logger | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/montanaflynn/stats | [MIT](https://opensource.org/license/mit/) | -| github.com/golang/glog | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/beevik/etree | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/pkg/errors | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/Azure/go-autorest/autorest/adal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jonboulle/clockwork | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/golang/groupcache/lru | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/pkg/browser | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/gophercloud/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Masterminds/semver | [MIT](https://opensource.org/license/mit/) | -| github.com/magisterquis/connectproxy | [Zlib](https://www.zlib.net/zlib_license.html) | -| golang.org/x/sync/errgroup | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/mattermost/xml-roundtrip-validator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/kelseyhightower/envconfig | [MIT](https://opensource.org/license/mit/) | -| github.com/Masterminds/semver/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/x448/float16 | [MIT](https://opensource.org/license/mit/) | -| github.com/nats-io/jwt/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage | [MIT](https://opensource.org/license/mit/) | -| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mailru/easyjson | [MIT](https://opensource.org/license/mit/) | -| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) | -| github.com/AzureAD/microsoft-authentication-library-for-go/apps | [MIT](https://opensource.org/license/mit/) | -| github.com/Narasimha1997/ratelimiter | [MIT](https://opensource.org/license/mit/) | -| github.com/evanphx/json-patch | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/mongodb/mongo-tools-common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mongodb/mongo-tools | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-webauthn/x/revoke | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/golang-jwt/jwt/v5 | [MIT](https://opensource.org/license/mit/) | -| github.com/signintech/gopdf | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/go-autorest/autorest/validation | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/runtime/middleware/denco | [MIT](https://opensource.org/license/mit/) | -| github.com/imdario/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/pmezard/go-difflib/difflib | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| google.golang.org/api/internal/third_party/uritemplates | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/go-mail/mail | [MIT](https://opensource.org/license/mit/) | -| github.com/xdg-go/pbkdf2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/coreos/go-oidc/v3/oidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/azure-sdk-for-go/sdk/internal | [MIT](https://opensource.org/license/mit/) | -| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/kylelemons/godebug | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/loads | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/klauspost/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/vmware/govmomi | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/go-autorest/tracing | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/go-tpm | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/googleapis/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice | [MIT](https://opensource.org/license/mit/) | -| github.com/vmware/govmomi/simulator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/analysis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/modern-go/reflect2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/opentracing/opentracing-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/fxamacker/cbor/v2 | [MIT](https://opensource.org/license/mit/) | -| github.com/russellhaering/gosaml2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/azure-sdk-for-go/sdk/azcore | [MIT](https://opensource.org/license/mit/) | -| github.com/vmware/govmomi/vim25/xml | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/oklog/ulid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-webauthn/webauthn | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/nats-io/nuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) | -| github.com/go-openapi/swag | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/yaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mholt/archiver/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/prometheus/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/cert-manager/cert-manager/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/coredns/corefile-migration/migration | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/antlr/antlr4/runtime/Go/antlr | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/andybalholm/brotli | [MIT](https://opensource.org/license/mit/) | -| gomodules.xyz/jsonpatch/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| cloud.google.com/go/container/apiv1/containerpb | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/distribution | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/cluster-api/test/infrastructure/docker/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/pierrec/lz4/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/blang/semver | [MIT](https://opensource.org/license/mit/) | -| k8s.io/component-base | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/subosito/gotenv | [MIT](https://opensource.org/license/mit/) | -| github.com/google/cel-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/azure-pipeline-go/pipeline | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/gateway-api/apis/v1alpha2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/hashicorp/errwrap | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/MakeNowJust/heredoc | [MIT](https://opensource.org/license/mit/) | -| k8s.io/kube-openapi/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha6 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/ulikunitz/xz | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/utils/internal/third_party/forked/golang/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| go.opentelemetry.io/otel/trace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apiserver/pkg/storage/names | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/PaesslerAG/jsonpath | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/nwaples/rardecode | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/loft-sh/vcluster/pkg/constants | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/azure-storage-blob-go/azblob | [MIT](https://opensource.org/license/mit/) | -| github.com/dsnet/compress | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/hashicorp/hcl | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/spf13/viper | [MIT](https://opensource.org/license/mit/) | -| github.com/pelletier/go-toml/v2 | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/mod/sumdb/dirhash | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/apimachinery/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/emicklei/go-restful/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/stoewer/go-strcase | [MIT](https://opensource.org/license/mit/) | -| github.com/matttproud/golang_protobuf_extensions/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/go-github/v45/github | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/kube-openapi/pkg/validation/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/prometheus/client_model/go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/client-go/third_party/forked/golang/template | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/aws/amazon-vpc-cni-k8s/pkg/apis/crd/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apiextensions-apiserver/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/cluster-api-provider-azure | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/spf13/afero | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/fsnotify/fsnotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| sigs.k8s.io/cluster-api-provider-aws | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/cluster-bootstrap/token | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/opencontainers/go-digest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/ini.v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/metal3-io/ip-address-manager/api/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/drone/envsubst/v2 | [MIT](https://opensource.org/license/mit/) | -| github.com/awslabs/goformation/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/cluster-api-provider-gcp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/coredns/caddy/caddyfile | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/blang/semver/v4 | [MIT](https://opensource.org/license/mit/) | -| github.com/sanathkr/yaml | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 | [MIT](https://opensource.org/license/mit/) | -| github.com/magiconair/properties | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/valyala/fastjson | [MIT](https://opensource.org/license/mit/) | -| k8s.io/apiextensions-apiserver/third_party/forked/celopenapi/model | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| go.opentelemetry.io/otel | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| google.golang.org/genproto/googleapis/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mitchellh/hashstructure | [MIT](https://opensource.org/license/mit/) | -| github.com/hashicorp/go-multierror | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| sigs.k8s.io/cluster-api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/apparentlymart/go-cidr/cidr | [MIT](https://opensource.org/license/mit/) | -| github.com/PaesslerAG/gval | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/kube-openapi/pkg/validation/strfmt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kube-openapi/pkg/validation/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apimachinery/third_party/forked/golang | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| sigs.k8s.io/controller-runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/go-querystring/query | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/spf13/jwalterweatherman | [MIT](https://opensource.org/license/mit/) | -| github.com/sanathkr/go-yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute | [MIT](https://opensource.org/license/mit/) | -| libvirt.org/go/libvirt | [MIT](https://opensource.org/license/mit/) | -| github.com/onsi/gomega | [MIT](https://opensource.org/license/mit/) | -| github.com/gobuffalo/flect | [MIT](https://opensource.org/license/mit/) | -| github.com/mattn/go-ieproxy | [MIT](https://opensource.org/license/mit/) | -| libvirt.org/libvirt-go-xml | [MIT](https://opensource.org/license/mit/) | -| k8s.io/kube-openapi/pkg/validation/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) | -| github.com/jaypipes/pcidb | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/tklauser/go-sysconf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/docker/cli/cli/config | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jaypipes/ghw | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/containerd/containerd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| golang.org/x/sync | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| oras.land/oras-go/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/pytimer/k8sutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/avast/retry-go | [MIT](https://opensource.org/license/mit/) | -| k8s.io/apiextensions-apiserver/pkg/apis/apiextensions | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/ztrue/shutdown | [MIT](https://opensource.org/license/mit/) | -| github.com/tklauser/numcpus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/shirou/gopsutil/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/opencontainers/image-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/go-metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/go-connections | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/morikuni/aec | [MIT](https://opensource.org/license/mit/) | -| github.com/shirou/gopsutil | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/docker/docker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/jpillora/backoff | [MIT](https://opensource.org/license/mit/) | -| github.com/docker/docker-credential-helpers | [MIT](https://opensource.org/license/mit/) | -| github.com/moby/term | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/moby/locker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/goharbor/go-client/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/otiai10/copy | [MIT](https://opensource.org/license/mit/) | -| github.com/wayneashleyberry/terminal-dimensions | [MIT](https://opensource.org/license/mit/) | -| github.com/vishvananda/netlink | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/pterm/pterm | [MIT](https://opensource.org/license/mit/) | -| atomicgo.dev/cursor | [MIT](https://opensource.org/license/mit/) | -| github.com/gookit/color | [MIT](https://opensource.org/license/mit/) | -| k8s.io/kubelet/config/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apiserver/pkg/endpoints/deprecation | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/aybabtme/rgbterm | [MIT](https://opensource.org/license/mit/) | -| github.com/lann/builder | [MIT](https://opensource.org/license/mit/) | -| atomicgo.dev/schedule | [MIT](https://opensource.org/license/mit/) | -| github.com/go-git/go-billy/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/lucasb-eyer/go-colorful | [MIT](https://opensource.org/license/mit/) | -| github.com/xeipuuv/gojsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gobwas/glob | [MIT](https://opensource.org/license/mit/) | -| github.com/lib/pq | [MIT](https://opensource.org/license/mit/) | -| github.com/rancher/system-upgrade-controller/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mudler/entities/pkg/entities | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| pault.ag/go/modprobe | [MIT](https://opensource.org/license/mit/) | -| gopkg.in/yaml.v1 | [LGPL-3.0](https://gnu.org/licenses/lgpl-3.0.en.html#license-text) | -| github.com/mattn/go-runewidth | [MIT](https://opensource.org/license/mit/) | -| github.com/containerd/stargz-snapshotter/estargz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/moby/spdystream | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/kustomize/kyaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xlab/treeprint | [MIT](https://opensource.org/license/mit/) | -| github.com/zcalusic/sysinfo/cpuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/skip2/go-qrcode | [MIT](https://opensource.org/license/mit/) | -| github.com/rancher/wrangler/pkg/genericcondition | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-gorp/gorp/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/containerd/console | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/zcalusic/sysinfo | [MIT](https://opensource.org/license/mit/) | -| pault.ag/go/topsort | [MIT](https://opensource.org/license/mit/) | -| github.com/joho/godotenv | [MIT](https://opensource.org/license/mit/) | -| github.com/vbatts/tar-split/archive/tar | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/stretchr/objx | [MIT](https://opensource.org/license/mit/) | -| github.com/twpayne/go-vfs/v4 | [MIT](https://opensource.org/license/mit/) | -| atomicgo.dev/keyboard | [MIT](https://opensource.org/license/mit/) | -| github.com/containerd/continuity | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/cluster-bootstrap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-git/gcfg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/emirpasic/gods | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/google/btree | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/liggitt/tabwriter | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/schollz/progressbar/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/pierrec/lz4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/packethost/packngo/metadata | [MIT](https://opensource.org/license/mit/) | -| github.com/google/gnostic-models | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/qri-io/starlib/util | [MIT](https://opensource.org/license/mit/) | -| github.com/xo/terminfo | [MIT](https://opensource.org/license/mit/) | -| gopkg.in/djherbis/times.v1 | [MIT](https://opensource.org/license/mit/) | -| gopkg.in/natefinch/lumberjack.v2 | [MIT](https://opensource.org/license/mit/) | -| github.com/chuckpreslar/emission | [MIT](https://opensource.org/license/mit/) | -| github.com/lithammer/fuzzysearch/fuzzy | [MIT](https://opensource.org/license/mit/) | -| github.com/qeesung/image2ascii | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/rubenv/sql-migrate | [MIT](https://opensource.org/license/mit/) | -| github.com/mudler/go-pluggable | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/sergi/go-diff/diffmatchpatch | [MIT](https://opensource.org/license/mit/) | -| github.com/cheggaaa/pb | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| sigs.k8s.io/kustomize/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/stretchr/testify | [MIT](https://opensource.org/license/mit/) | -| github.com/gosuri/uitable/util/wordwrap | [MIT](https://opensource.org/license/mit/) | -| github.com/lann/ps | [MIT](https://opensource.org/license/mit/) | -| github.com/tredoe/osutil/v2/userutil/crypt | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/satori/go.uuid | [MIT](https://opensource.org/license/mit/) | -| github.com/denisbrodbeck/machineid | [MIT](https://opensource.org/license/mit/) | -| github.com/kairos-io/kairos-sdk | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jbenet/go-context/io | [MIT](https://opensource.org/license/mit/) | -| github.com/cyphar/filepath-securejoin | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/libp2p/go-reuseport | [ISC](https://opensource.org/license/isc-license-txt) | -| github.com/xanzy/ssh-agent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/warnings.v0 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/mudler/yip/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/c-robinson/iplib | [MIT](https://opensource.org/license/mit/) | -| github.com/exponent-io/jsonpath | [MIT](https://opensource.org/license/mit/) | -| github.com/kevinburke/ssh_config | [MIT](https://opensource.org/license/mit/) | -| github.com/spf13/cobra | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/rancher-sandbox/linuxkit/providers | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/pkg/xattr | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/twpayne/go-vfs | [MIT](https://opensource.org/license/mit/) | -| github.com/kairos-io/kairos | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/rivo/uniseg | [MIT](https://opensource.org/license/mit/) | -| github.com/itchyny/gojq | [MIT](https://opensource.org/license/mit/) | -| k8s.io/kubernetes/cmd/kubeadm/app | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/cli-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/go-containerregistry | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/phayes/permbits | [MIT](https://opensource.org/license/mit/) | -| github.com/gosuri/uitable | [MIT](https://opensource.org/license/mit/) | -| github.com/peterbourgon/diskv | [MIT](https://opensource.org/license/mit/) | -| github.com/disintegration/imaging | [MIT](https://opensource.org/license/mit/) | -| github.com/mitchellh/go-wordwrap | [MIT](https://opensource.org/license/mit/) | -| github.com/ProtonMail/go-crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/kubectl/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jmoiron/sqlx | [MIT](https://opensource.org/license/mit/) | -| github.com/rubenv/sql-migrate/sqlparse | [MIT](https://opensource.org/license/mit/) | -| github.com/monochromegane/go-gitignore | [MIT](https://opensource.org/license/mit/) | -| github.com/moby/moby/libnetwork/resolvconf | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/vmware/vmw-guestinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/diskfs/go-diskfs | [MIT](https://opensource.org/license/mit/) | -| github.com/xeipuuv/gojsonschema | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/go-yaml/yaml | [MIT](https://opensource.org/license/mit/) | -| github.com/gregjones/httpcache | [MIT](https://opensource.org/license/mit/) | -| github.com/nfnt/resize | [ISC](https://opensource.org/license/isc-license-txt) | -| github.com/matttproud/golang_protobuf_extensions/v2/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Masterminds/squirrel | [MIT](https://opensource.org/license/mit/) | -| github.com/chai2010/gettext-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/itchyny/timefmt-go | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/image | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/xeipuuv/gojsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| helm.sh/helm/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/fatih/color | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/exp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/go-git/go-git/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mitchellh/colorstring | [MIT](https://opensource.org/license/mit/) | -| github.com/russross/blackfriday/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/mattn/go-isatty | [MIT](https://opensource.org/license/mit/) | -| github.com/mattn/go-colorable | [MIT](https://opensource.org/license/mit/) | -| go.starlark.net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/BurntSushi/toml | [MIT](https://opensource.org/license/mit/) | -| github.com/vishvananda/netns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/eliukblau/pixterm/pkg/ansimage | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/cavaliergopher/grab | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/sys/unix | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/component-base/config | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gorilla/handlers | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/kr/pretty | [MIT](https://opensource.org/license/mit/) | -| github.com/klauspost/compress | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/kr/text | [MIT](https://opensource.org/license/mit/) | -| github.com/bshuster-repo/logrus-logstash-hook | [MIT](https://opensource.org/license/mit/) | -| github.com/docker/distribution/uuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| golang.org/x/net/idna | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/docker/libtrust | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/check.v1 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/google/martian/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/openshift/custom-resource-status/conditions/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| kubevirt.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/corvus-ch/logr | [MIT](https://opensource.org/license/mit/) | -| github.com/openshift/api/config/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jasonlvhit/gocron | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/bketelsen/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/pborman/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| kubevirt.io/containerized-data-importer-api/pkg/apis/core | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/kyverno/go-wildcard | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/juliangruber/go-intersect | [MIT](https://opensource.org/license/mit/) | -| kubevirt.io/controller-lifecycle-operator-sdk/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/validator.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| golang.org/x/crypto/ed25519 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/google/go-github/github | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/gorilla/websocket | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/PuerkitoBio/urlesc | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/go-stack/stack | [MIT](https://opensource.org/license/mit/) | -| github.com/PuerkitoBio/purell | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| google.golang.org/genproto/googleapis/rpc/status | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kube-openapi/pkg/util/proto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/controller-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/klog | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/flynn/go-shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| golang.org/x/crypto/pkcs12 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/xi2/xz#License-1-ov-file | [Custom License](https://github.com/xi2/xz#License-1-ov-file) | +| **Library** | **License** | +| --------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | +| atomicgo.dev/cursor | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| atomicgo.dev/keyboard | [MIT](https://opensource.org/license/mit/) | +| atomicgo.dev/schedule | [MIT](https://opensource.org/license/mit/) | +| cloud.google.com/go/compute/metadata | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| cloud.google.com/go/container/apiv1/containerpb | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| dario.cat/mergo | [MIT](https://opensource.org/license/mit/) | +| emperror.dev/errors | [MIT](https://opensource.org/license/mit/) | +| github.com/andreburgaud/crypt2go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/andybalholm/brotli | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/antlr/antlr4/runtime/Go/antlr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/apparentlymart/go-cidr/cidr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/asaskevich/govalidator | [MIT](https://opensource.org/license/mit/) | +| github.com/avast/retry-go | [MIT](https://opensource.org/license/mit/) | +| github.com/aws/amazon-vpc-cni-k8s/pkg/apis/crd/v1alpha1 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/aws/aws-sdk-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/aws/aws-sdk-go/internal/sync/singleflight | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/awslabs/goformation/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/aybabtme/rgbterm | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/azure-pipeline-go/pipeline | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/azure-sdk-for-go | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/azcore | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/azidentity | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/internal | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4 | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-storage-blob-go/azblob | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/Azure/go-autorest/autorest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/adal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/azure/auth | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/azure/cli | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/date | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/to | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/validation | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/logger | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/tracing | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/AzureAD/microsoft-authentication-library-for-go/apps | [MIT](https://opensource.org/license/mit/) | +| github.com/beevik/etree | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/beorn7/perks/quantile | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/bketelsen/logr | [MIT](https://opensource.org/license/mit/) | +| github.com/blang/semver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/blang/semver/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/bshuster-repo/logrus-logstash-hook | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/BurntSushi/toml | [MIT](https://opensource.org/license/mit/) | +| github.com/bxcodec/faker/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/c-robinson/iplib | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/canonical/cluster-api-bootstrap-provider-microk8s/apis/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/canonical/cluster-api-control-plane-provider-microk8s/api/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/cavaliergopher/grab | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/cert-manager/cert-manager/pkg/apis | [MIT](https://opensource.org/license/mit/) | +| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/chai2010/gettext-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/cheggaaa/pb | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/chuckpreslar/emission | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/cloudflare/circl | [MIT](https://opensource.org/license/mit/) | +| github.com/containerd/console | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/containerd/containerd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/containerd/continuity | [MIT](https://opensource.org/license/mit/) | +| github.com/containerd/fifo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/containerd/stargz-snapshotter/estargz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/containerd/ttrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/containerd/typeurl/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/containers/podman/v2/pkg/ctime | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/coredns/caddy/caddyfile | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/coredns/corefile-migration/migration | [MIT](https://opensource.org/license/mit/) | +| github.com/coreos/go-oidc/v3/oidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/corvus-ch/logr | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/coxedge/cluster-api-provider-cox/api/v1beta1 | [ISC](https://opensource.org/license/isc-license-txt) | +| github.com/cyphar/filepath-securejoin | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) | +| github.com/denisbrodbeck/machineid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/dgraph-io/ristretto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/dgraph-io/ristretto/z | [MIT](https://opensource.org/license/mit/) | +| github.com/dimchansky/utfbom | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/disintegration/imaging | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/diskfs/go-diskfs | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/docker/cli/cli/config | [MIT](https://opensource.org/license/mit/) | +| github.com/docker/distribution | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/distribution/uuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/docker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/docker-credential-helpers | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/docker/go-connections | [MIT](https://opensource.org/license/mit/) | +| github.com/docker/go-events | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/docker/go-metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/libtrust | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/drone/envsubst/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/dsnet/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) | +| github.com/eliukblau/pixterm/pkg/ansimage | [MIT](https://opensource.org/license/mit/) | +| github.com/emicklei/go-restful/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/emirpasic/gods | [MIT](https://opensource.org/license/mit/) | +| github.com/evanphx/json-patch | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/evanphx/json-patch/v5 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/exponent-io/jsonpath | [MIT](https://opensource.org/license/mit/) | +| github.com/fatih/color | [MIT](https://opensource.org/license/mit/) | +| github.com/flynn/go-shlex | [MIT](https://opensource.org/license/mit/) | +| github.com/fsnotify/fsnotify | [MIT](https://opensource.org/license/mit/) | +| github.com/fxamacker/cbor/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/gdamore/encoding | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gdamore/tcell/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/ghodss/yaml | [MIT](https://opensource.org/license/mit/) | +| github.com/go-errors/errors | [MIT](https://opensource.org/license/mit/) | +| github.com/go-git/gcfg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-git/go-billy/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-git/go-git/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-gorp/gorp/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-mail/mail | [MIT](https://opensource.org/license/mit/) | +| github.com/go-openapi/analysis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/jsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/jsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/loads | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/runtime/middleware/denco | [MIT](https://opensource.org/license/mit/) | +| github.com/go-openapi/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/strfmt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/swag | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-stack/stack | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/go-webauthn/webauthn | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/go-webauthn/x/revoke | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/gobuffalo/flect | [MIT](https://opensource.org/license/mit/) | +| github.com/gobwas/glob | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/gofrs/uuid | [MIT](https://opensource.org/license/mit/) | +| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/goharbor/go-client/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/golang-jwt/jwt/v4 | [MIT](https://opensource.org/license/mit/) | +| github.com/golang-jwt/jwt/v5 | [MIT](https://opensource.org/license/mit/) | +| github.com/golang/glog | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/golang/groupcache/lru | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/golang/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/golang/snappy | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/btree | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/cel-go | [MIT](https://opensource.org/license/mit/) | +| github.com/google/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/gnostic-models | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/go-containerregistry | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/go-github/github | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/go-github/v45/github | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/go-querystring/query | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/go-tpm | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/gofuzz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/martian/log | [MIT](https://opensource.org/license/mit/) | +| github.com/google/s2a-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/googleapis/enterprise-certificate-proxy/client | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/googleapis/gax-go/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/googleapis/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gookit/color | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/gophercloud/gophercloud | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gophercloud/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gorhill/cronexpr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gorilla/handlers | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gorilla/mux | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/gorilla/websocket | [MIT](https://opensource.org/license/mit/) | +| github.com/gosuri/uitable | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/gosuri/uitable/util/wordwrap | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/gregjones/httpcache | [ISC](https://opensource.org/license/isc-license-txt) | +| github.com/hashicorp/errwrap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/hashicorp/go-multierror | [MIT](https://opensource.org/license/mit/) | +| github.com/hashicorp/go-uuid | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/go-version | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/golang-lru | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/hcl | [MIT](https://opensource.org/license/mit/) | +| github.com/huandu/xstrings | [MIT](https://opensource.org/license/mit/) | +| github.com/imdario/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/itchyny/gojq | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/itchyny/timefmt-go | [MIT](https://opensource.org/license/mit/) | +| github.com/jasonlvhit/gocron | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/jaypipes/ghw | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/jaypipes/pcidb | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/jbenet/go-context/io | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/jessevdk/go-flags | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/jlaffaye/ftp | [ISC](https://opensource.org/license/isc-license-txt) | +| github.com/jmespath/go-jmespath | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/jmoiron/sqlx | [MIT](https://opensource.org/license/mit/) | +| github.com/joho/godotenv | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/jonboulle/clockwork | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/josharian/intern | [MIT](https://opensource.org/license/mit/) | +| github.com/jpillora/backoff | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) | +| github.com/juliangruber/go-intersect | [MIT](https://opensource.org/license/mit/) | +| github.com/kairos-io/kairos | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/kairos-io/kairos-sdk | [MIT](https://opensource.org/license/mit/) | +| github.com/kelseyhightower/envconfig | [MIT](https://opensource.org/license/mit/) | +| github.com/kevinburke/ssh_config | [MIT](https://opensource.org/license/mit/) | +| github.com/klauspost/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/klauspost/compress/internal/snapref | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/klauspost/compress/zstd/internal/xxhash | [MIT](https://opensource.org/license/mit/) | +| github.com/klauspost/pgzip | [MIT](https://opensource.org/license/mit/) | +| github.com/kr/pretty | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/kr/text | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/kylelemons/godebug | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/kyverno/go-wildcard | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/lann/builder | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/lann/ps | [MIT](https://opensource.org/license/mit/) | +| github.com/lib/pq | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/libp2p/go-reuseport | [MIT](https://opensource.org/license/mit/) | +| github.com/liggitt/tabwriter | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/lithammer/fuzzysearch/fuzzy | [MIT](https://opensource.org/license/mit/) | +| github.com/loft-sh/cluster-api-provider-vcluster/api/v1alpha1 | [MIT](https://opensource.org/license/mit/) | +| github.com/loft-sh/vcluster/pkg/constants | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/lucasb-eyer/go-colorful | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/magiconair/properties | [MIT](https://opensource.org/license/mit/) | +| github.com/magisterquis/connectproxy | [Zlib](https://www.zlib.net/zlib_license.html) | +| github.com/mailru/easyjson | [MIT](https://opensource.org/license/mit/) | +| github.com/MakeNowJust/heredoc | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/Masterminds/goutils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Masterminds/semver | [MIT](https://opensource.org/license/mit/) | +| github.com/Masterminds/semver/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/Masterminds/sprig/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/Masterminds/squirrel | [MIT](https://opensource.org/license/mit/) | +| github.com/mattermost/xml-roundtrip-validator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mattn/go-colorable | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mattn/go-ieproxy | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mattn/go-isatty | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mattn/go-runewidth | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/matttproud/golang_protobuf_extensions/pbutil | [MIT](https://opensource.org/license/mit/) | +| github.com/matttproud/golang_protobuf_extensions/v2/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/metal3-io/ip-address-manager/api/v1alpha1 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/mholt/archiver/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/colorstring | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mitchellh/copystructure | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/go-homedir | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/go-wordwrap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mitchellh/hashstructure | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/mapstructure | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/reflectwalk | [MIT](https://opensource.org/license/mit/) | +| github.com/moby/locker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/moby/moby/libnetwork/resolvconf | [MIT](https://opensource.org/license/mit/) | +| github.com/moby/spdystream | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/moby/sys/mountinfo | [MIT](https://opensource.org/license/mit/) | +| github.com/moby/sys/signal | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/moby/term | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/modern-go/concurrent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/modern-go/reflect2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mongodb/mongo-tools | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mongodb/mongo-tools-common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/monochromegane/go-gitignore | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/montanaflynn/stats | [MIT](https://opensource.org/license/mit/) | +| github.com/morikuni/aec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mudler/entities/pkg/entities | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mudler/go-pluggable | [MIT](https://opensource.org/license/mit/) | +| github.com/mudler/yip/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/Narasimha1997/ratelimiter | [MIT](https://opensource.org/license/mit/) | +| github.com/nats-io/jwt/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/nats-io/nats.go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/nats-io/nkeys | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/nats-io/nuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/nfnt/resize | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/nicksnyder/go-i18n/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/nwaples/rardecode | [MIT](https://opensource.org/license/mit/) | +| github.com/oklog/ulid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/onsi/gomega | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/opencontainers/go-digest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/opencontainers/image-spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/opencontainers/runc/libcontainer/user | [MIT](https://opensource.org/license/mit/) | +| github.com/opencontainers/runtime-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/opencontainers/selinux | [MIT](https://opensource.org/license/mit/) | +| github.com/openshift/api/config/v1 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/openshift/custom-resource-status/conditions/v1 | [MIT](https://opensource.org/license/mit/) | +| github.com/opentracing/opentracing-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/packethost/packngo/metadata | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/PaesslerAG/gval | [MIT](https://opensource.org/license/mit/) | +| github.com/PaesslerAG/jsonpath | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/pborman/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/pelletier/go-toml/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/peterbourgon/diskv | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/phayes/permbits | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/phpdave11/gofpdi | [MIT](https://opensource.org/license/mit/) | +| github.com/pierrec/lz4 | [MIT](https://opensource.org/license/mit/) | +| github.com/pierrec/lz4/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/pjbgf/sha1cd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/pkg/browser | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/pkg/errors | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/pkg/xattr | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/pmezard/go-difflib/difflib | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/prometheus/client_model/go | [MIT](https://opensource.org/license/mit/) | +| github.com/prometheus/common | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg | [MIT](https://opensource.org/license/mit/) | +| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/ProtonMail/go-crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/pterm/pterm | [MIT](https://opensource.org/license/mit/) | +| github.com/PuerkitoBio/purell | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/PuerkitoBio/urlesc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/qeesung/image2ascii | [MIT](https://opensource.org/license/mit/) | +| github.com/rancher-sandbox/linuxkit/providers | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/rancher/system-upgrade-controller/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/rancher/wrangler/pkg/genericcondition | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/rivo/tview | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/rivo/uniseg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/rubenv/sql-migrate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/rubenv/sql-migrate/sqlparse | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/russellhaering/gosaml2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/russellhaering/goxmldsig | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/russross/blackfriday/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/sagikazarmark/slog-shim | [MIT](https://opensource.org/license/mit/) | +| github.com/sanathkr/go-yaml | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/sanathkr/yaml | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/satori/go.uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/schollz/progressbar/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/sergi/go-diff/diffmatchpatch | [MIT](https://opensource.org/license/mit/) | +| github.com/shirou/gopsutil | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/shirou/gopsutil/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/shopspring/decimal | [MIT](https://opensource.org/license/mit/) | +| github.com/signintech/gopdf | [MIT](https://opensource.org/license/mit/) | +| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) | +| github.com/skeema/knownhosts | [MIT](https://opensource.org/license/mit/) | +| github.com/skip2/go-qrcode | [MIT](https://opensource.org/license/mit/) | +| github.com/spf13/afero | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/spf13/cast | [MIT](https://opensource.org/license/mit/) | +| github.com/spf13/cobra | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/spf13/jwalterweatherman | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/spf13/pflag | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/spf13/viper | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/stoewer/go-strcase | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/stretchr/objx | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/stretchr/testify | [MIT](https://opensource.org/license/mit/) | +| github.com/stretchr/testify/assert | [MIT](https://opensource.org/license/mit/) | +| github.com/stripe/stripe-go/v71 | [MIT](https://opensource.org/license/mit/) | +| github.com/subosito/gotenv | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tklauser/go-sysconf | [MIT](https://opensource.org/license/mit/) | +| github.com/tklauser/numcpus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tredoe/osutil/v2/userutil/crypt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/twpayne/go-vfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/twpayne/go-vfs/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/ulikunitz/xz | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/valyala/fastjson | [MIT](https://opensource.org/license/mit/) | +| github.com/vbatts/tar-split/archive/tar | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/vishvananda/netlink | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/vishvananda/netns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/vmware/govmomi | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/vmware/govmomi/simulator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/vmware/govmomi/vim25/xml | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/vmware/vmw-guestinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/wayneashleyberry/terminal-dimensions | [MIT](https://opensource.org/license/mit/) | +| github.com/willdonnelly/passwd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/x448/float16 | [MIT](https://opensource.org/license/mit/) | +| github.com/xanzy/ssh-agent | [MIT](https://opensource.org/license/mit/) | +| github.com/xdg-go/pbkdf2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xdg-go/scram | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xdg-go/stringprep | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xeipuuv/gojsonpointer | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/xeipuuv/gojsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xeipuuv/gojsonschema | [MIT](https://opensource.org/license/mit/) | +| github.com/xi2/xz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xlab/treeprint | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/xo/terminfo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/youmark/pkcs8 | [MIT](https://opensource.org/license/mit/) | +| github.com/zcalusic/sysinfo | [MIT](https://opensource.org/license/mit/) | +| github.com/zcalusic/sysinfo/cpuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/ztrue/shutdown | [MIT](https://opensource.org/license/mit/) | +| go.mongodb.org/mongo-driver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| go.opencensus.io | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| go.opentelemetry.io/otel | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| go.opentelemetry.io/otel/trace | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| go.starlark.net | [MIT](https://opensource.org/license/mit/) | +| go.uber.org/atomic | [MIT](https://opensource.org/license/mit/) | +| go.uber.org/multierr | [MIT](https://opensource.org/license/mit/) | +| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/crypto/ed25519 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| golang.org/x/crypto/pkcs12 | [MIT](https://opensource.org/license/mit/) | +| golang.org/x/exp | [MIT](https://opensource.org/license/mit/) | +| golang.org/x/image | [MIT](https://opensource.org/license/mit/) | +| golang.org/x/mod/sumdb/dirhash | [MIT](https://opensource.org/license/mit/) | +| golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/net/idna | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sync | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sync/errgroup | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sys | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sys/unix | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| gomodules.xyz/jsonpatch/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| google.golang.org/api/internal/third_party/uritemplates | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| google.golang.org/appengine | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/genproto/googleapis/api | [MIT](https://opensource.org/license/mit/) | +| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/genproto/googleapis/rpc/status | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/genproto/protobuf/field_mask | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| gopkg.in/check.v1 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| gopkg.in/djherbis/times.v1 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| gopkg.in/ini.v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| gopkg.in/natefinch/lumberjack.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| gopkg.in/square/go-jose.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| gopkg.in/square/go-jose.v2/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| gopkg.in/validator.v2 | [MIT](https://opensource.org/license/mit/) | +| gopkg.in/warnings.v0 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| gopkg.in/yaml.v1 | [MIT](https://opensource.org/license/mit/) | +| gopkg.in/yaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) | +| helm.sh/helm/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/apiextensions-apiserver/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/apiextensions-apiserver/pkg/apis/apiextensions | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apiextensions-apiserver/third_party/forked/celopenapi/model | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| k8s.io/apimachinery | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/apimachinery/pkg | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apimachinery/third_party/forked/golang | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apimachinery/third_party/forked/golang/reflect | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/apiserver/pkg/endpoints/deprecation | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apiserver/pkg/storage/names | [MIT](https://opensource.org/license/mit/) | +| k8s.io/cli-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/client-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/client-go/third_party/forked/golang/template | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/cluster-bootstrap | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| k8s.io/cluster-bootstrap/token | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/component-base | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| k8s.io/component-base/config | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/klog | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| k8s.io/klog/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/kube-openapi/pkg | [MIT](https://opensource.org/license/mit/) | +| k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/kube-openapi/pkg/util/proto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| k8s.io/kube-openapi/pkg/validation/errors | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| k8s.io/kube-openapi/pkg/validation/spec | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| k8s.io/kube-openapi/pkg/validation/strfmt | [MIT](https://opensource.org/license/mit/) | +| k8s.io/kube-openapi/pkg/validation/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/kubectl/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/kubelet/config/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/kubernetes/cmd/kubeadm/app | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/metrics/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/metrics/pkg/apis/metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/utils/internal/third_party/forked/golang/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| kubevirt.io/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| kubevirt.io/containerized-data-importer-api/pkg/apis/core | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| kubevirt.io/controller-lifecycle-operator-sdk/api | [MIT](https://opensource.org/license/mit/) | +| libvirt.org/go/libvirt | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| libvirt.org/libvirt-go-xml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| oras.land/oras-go/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| pault.ag/go/modprobe | [MIT](https://opensource.org/license/mit/) | +| pault.ag/go/topsort | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| sigs.k8s.io/cluster-api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/cluster-api-provider-aws | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| sigs.k8s.io/cluster-api-provider-azure | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/cluster-api-provider-gcp | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha6 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1 | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/cluster-api/test/infrastructure/docker/api | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/controller-runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/controller-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/gateway-api/apis/v1alpha2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/kustomize/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/kustomize/kyaml | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/go-yaml/yaml | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/qri-io/starlib/util | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/structured-merge-diff/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/yaml | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/yaml/goyaml.v2 | [MIT](https://opensource.org/license/mit/) |
diff --git a/docs/docs-content/palette-cli/commands/commands.md b/docs/docs-content/palette-cli/commands/commands.md index fd3bab1b97..dd33001697 100644 --- a/docs/docs-content/palette-cli/commands/commands.md +++ b/docs/docs-content/palette-cli/commands/commands.md @@ -21,6 +21,8 @@ The following list contains all the supported Palette CLI subcommands. Click on - [`ec`](ec.md) - Palette Enterprise Cluster installation & pre-validation. +- [`fips-validate`](fips-validate.md) - Validate the FIPS compliance of your Kubernetes clusters. + - [`import`](import.md) - Import clusters into Palette. - [`login`](login.md) - Login to Palette. @@ -51,6 +53,8 @@ Palette CLI supports the following global flags. - [EC](ec.md) +- [FIPS Validate](fips-validate.md) + - [Login](login.md) - [PCG](pcg.md) diff --git a/docs/docs-content/palette-cli/commands/ec.md b/docs/docs-content/palette-cli/commands/ec.md index 30a1916eda..6d216b1965 100644 --- a/docs/docs-content/palette-cli/commands/ec.md +++ b/docs/docs-content/palette-cli/commands/ec.md @@ -14,6 +14,8 @@ install kind or any other dependencies. The CLI includes all the required depend can use the `ec` command to install a [self-hosted Palette](../../enterprise-version/install-palette/install-palette.md) instance or a self-hosted [VerteX](../../vertex/install-palette-vertex/install-palette-vertex.md) instance. +## Subcommands + The `ec` command exposes the following subcommand.
diff --git a/docs/docs-content/palette-cli/commands/fips-validate.md b/docs/docs-content/palette-cli/commands/fips-validate.md new file mode 100644 index 0000000000..2e6bea5365 --- /dev/null +++ b/docs/docs-content/palette-cli/commands/fips-validate.md @@ -0,0 +1,341 @@ +--- +sidebar_label: "FIPS Validate" +title: "FIPS Validate" +description: "Learn how to validate the FIPS compliance of your Palette clusters." +hide_table_of_contents: false +sidebar_position: 15 +tags: ["palette-cli"] +--- + +The `fips-validate` command checks the +[Federal Information Processing Standards](https://www.nist.gov/standardsgov/compliance-faqs-federal-information-processing-standards-fips) +(FIPS) compliance of your Kubernetes clusters. You can use the command to ensure that your clusters are FIPS-compliant +by scanning the images and exposed service endpoints in your clusters. + +:::info + +If you have the environment variable `KUBECONFIG` set, the `fips-validate` will automatically use the kubeconfig file +and skip prompting you for the kubeconfig file path. + +::: + +## Subcommands + +The `fips-validate` command exposes the following subcommands: + +- [`images`](#images): Validate the FIPS compliance of the images in your clusters. + +- [`services`](#services): Validate the FIPS compliance of the service endpoints in your clusters. + +- [`clean`](#clean): Remove the FIPS validation resources from your clusters. + +## Prerequisites + +The `fips-validate` command requires the following prerequisites: + +- Ensure you have access to the kubeconfig file for the cluster that you want to validate. The file needs to be + accessible from the machine where you issue the `fips-validate` command. Refer to the + [Set up Kubectl](../../clusters/cluster-management/palette-webctl.md#access-cluster-with-cli) guide to learn how to + get the kubeconfig file for your cluster. + +- Sufficient permissions to create a new namespace and deploy resources in the namespace. We recommend using an elevated + ClusterRole such as [_cluster-admin_](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles) + to ensure that the command can create the necessary resources. + +- The Kubernetes cluster must be accessible from the machine where you issue the `fips-validate` command. Ensure that + the kubeconfig file is correctly configured to access the cluster. + +- The Kubernetes cluster must have internet access to download the images when using the `images` subcommand. + +## Limitations + +- The only supported runtime is Go. Images with binaries compiled in other languages are marked as `unknown` in the + report. + +- Only services exposing port `443` are verified. + +- Non-HTTP based service endpoints are not supported. + +## Images + +The `images` subcommand validates the FIPS compliance of the images in your clusters. The command scans all the images +of active containers. The image is downloaded from the source and unpacked through [Luet](https://luet.io/docs/) and all +files that are Executable and Linkable Format binaries are scanned. The scan checks if the binaries are compiled with +FIPS compliant cryptographic libraries. + +To enable the scan, the command deploys resources into a Kubernetes namespace named `vertex-ns`, unless otherwise +specified, in the target cluster. Upon completion of the scan, the command prints the results of the scan to the +terminal and cleans up the resources from the cluster. + +The `images` subcommand accepts the following flags: + +| **Short Flag** | **Long Flag** | **Description** | **Type** | +| -------------- | ------------- | ------------------------------------------------------------------------------------------------------ | -------- | +| `-n` | `--namespace` | The namespace in which to deploy the resources for the FIPS scan. The default namespace is `vertex-ns` | string | +| `-f` | `--out` | The output file path to save the scan results. The default output is the terminal. | string | +| `-h` | `--help` | Display the help message for the `images` subcommand. | boolean | + +### Limitations + +- Images hosted in private registries are not supported. +- Only Go binaries are supported. Images with binaries compiled in other languages are marked as `unknown` in the + report. + +### Examples + +Validate the FIPS compliance of the images in your cluster. + +```shell +palette fips-validate images +``` + +Validate the FIPS compliance of the images in your cluster and save the results to a file. + +```shell +palette fips-validate images --out /path/to/fips-scan-results.txt +``` + +Validate the FIPS compliance of the images in your cluster and deploy the resources in a custom namespace. + +```shell +palette fips-validate images --namespace my-scan-ns +``` + +### Review Results + +The report contains a list of images and the FIPS compliance status of the binaries in the images. Each row in the +report contains the following columns: + +| **Column** | **Description** | +| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `NO.` | The number of the image in the order of the scan. | +| `BINARY` | The name of the executable binary. | +| `ARCH` | The architecture of the binary. | +| `PATH` | The path of the binary in the image. | +| `VERSION` | The version of the programming language used to create the binary. Go is the only supported language from a version detection capability. | +| `EXE` | How the binary was compiled, either statically or dynamically. | +| `CRYPTO` | The cryptographic library used to compile the binary. | + +The following is an example of the FIPS compliance report. The validated image is FIPS compliant as the binary is +compiled with the BoringSSL cryptographic library. + +```text +--------------------------------------------------------------- +image: gcr.io/spectro-images-public/release-fips/cluster-api-aws/cluster-api-aws-controller:v1.5.2-spectro-4.3.0 +┌─────┬─────────┬────────┬──────────┬──────────┬────────┬────────┐ +│ NO. │ BINARY │ ARCH │ PATH │ VERSION │ EXE │ CRYPTO │ +├─────┼─────────┼────────┼──────────┼──────────┼────────┼────────┤ +│ 1 │ manager │ x86-64 │ /manager │ go1.21.6 │ static │ boring │ +└─────┴─────────┴────────┴──────────┴──────────┴────────┴────────┘ +``` + +If the scan is not able to determine the FIPS compliance status of a binary, the status is marked as `unknown` in the +summary section. The individual row will contain a note stating the reason for the unknown status. + +```text +image: ghcr.io/spectrocloud/hello-universe:1.1.1 +note: binaries are not using boring crypto and/or not statically linked +┌─────┬──────────────────┬────────┬─────────────────────────────────┬─────────┬────────┬─────────┐ +│ NO. │ BINARY │ ARCH │ PATH │ VERSION │ EXE │ CRYPTO │ +├─────┼──────────────────┼────────┼─────────────────────────────────┼─────────┼────────┼─────────┤ +│ 1 │ legacy.so │ x86-64 │ /usr/lib/ossl-modules/legacy.so │ unknown │ static │ openssl │ +│ 2 │ padlock.so │ x86-64 │ /usr/lib/engines-3/padlock.so │ unknown │ static │ openssl │ +│ 3 │ libcurl.so.4.8.0 │ x86-64 │ /usr/lib/libcurl.so.4.8.0 │ unknown │ static │ openssl │ +│ 4 │ node │ x86-64 │ /usr/local/bin/node │ unknown │ static │ openssl │ +│ 5 │ libcrypto.so.3 │ x86-64 │ /lib/libcrypto.so.3 │ unknown │ static │ openssl │ +└─────┴──────────────────┴────────┴─────────────────────────────────┴─────────┴────────┴─────────┘ +``` + +The end of the report contains a summary of the scan results. The summary includes all the images scanned and the status +of each image. + +```text +┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─────────┐ +│ IMAGE │ STATUS │ +|---------------------------------------------------------------------------------------------------------------------------| +│ gcr.io/spectro-dev-public/vishu/spectro-drive:latest │ unknown │ +│ gcr.io/spectro-images-public/release/kube-rbac-proxy:spectro-v0.14.0-20230508 │ failed │ +│ gcr.io/spectro-images-public/release-fips/system-upgrade-controller:v0.11.4_spectro │ passed │ +│ us-east1-docker.pkg.dev/spectro-palette-images/public/daily-fips/upgrade:20240305.0000 │ passed │ +│ gcr.io/spectro-images-fips/kube-scheduler:v1.28.5 │ passed │ +└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴─────────┘ +``` + +## Services + +The `services` subcommand validates the FIPS compliance of the service endpoints in your clusters. The command scans the +service endpoints and conducts a handshake with each endpoint through [testssl](https://testssl.sh/). The handshake is +used to verify if the service endpoint is using FIPS compliant TLS versions and cryptographic ciphers. The service +endpoint's certificate is also verified if it's within a valid timeframe by verifying its start and expiration dates. + +The following flags are available for the `services` subcommand: + +| **Short Flag** | **Long Flag** | **Description** | **Type** | +| -------------- | ------------- | ------------------------------------------------------------------------------------------------------ | -------- | +| `-n` | `--namespace` | The namespace in which to deploy the resources for the FIPS scan. The default namespace is `vertex-ns` | string | +| `-f` | `--out` | The output file path to save the scan results. The default output is the terminal. | string | +| `-h` | `--help` | Display the help message for the `images` subcommand. | boolean | + +### Checks + +The following is a list of checks is performed by the `services` subcommand: + +| Check | Description | +| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| cipher-tls1*2* | Verifies TLS 1.2 cipher suites. | +| cipher-tls1*3* | Verifies TLS 1.3 cipher suites. | +| SSLv2, SSLv3, TLS1, TLS1_1 | Checks for the presence of deprecated SSL/TLS versions. | +| cipherlist_NULL | Checks for the presence of NULL encryption cipher suites. | +| cipherlist_aNULL | Checks for the presence of aNULL encryption cipher suites. | +| cipherlist_EXPORT | Checks for the presence of EXPORT encryption cipher suites. | +| cipherlist_3DES_IDEA | Checks for the presence of 3DES and IDEA encryption cipher suites. | +| cipherlist_OBSOLETED | Checks for the presence of obsoleted encryption cipher suites. | +| cipherlist_LOW | Checks for the presence of LOW encryption cipher suites. | +| cert_notBefore | Validates the start date of the certificate. | +| cert_notAfter | Validates the expiration date of the certificate. | +| FS_TLS12_sig_algs | Verifies the supported signature algorithms for TLS 1.2. | +| HSTS | Validates the presence of HTTP Strict Transport Security (HSTS) headers. | +| DNS_CAArecord | Confirms the presence of DNS Certification Authority Authorization (CAA) records. | +| security_headers | Checks for the presence of recommended security headers. Refer to [testssl.sh](https://testssl.sh/doc/testssl.1.html) documentation for more context. Search for the `--header` description. | +| overall_grade | Assesses the overall security grade of the configuration. | +| cert\_ | Ensures certificate-related configurations meet requirements, excluding specific cases. | + +### Examples + +Validate the FIPS compliance of the service endpoints in your cluster. + +```shell +palette fips-validate services +``` + +Validate the FIPS compliance of the service endpoints in your cluster and save the results to a file. + +```shell +palette fips-validate services --out /path/to/fips-scan-results.txt +``` + +Validate the FIPS compliance of the service endpoints in your cluster and deploy the resources in a custom namespace. + +```shell +palette fips-validate services --namespace my-scan-ns +``` + +### Review Results + +The report contains a list of service endpoints and the FIPS compliance status of the service endpoints. Each row in the +report contains the following columns: + +| **Column** | **Description** | +| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `NO.` | The number of the service endpoint in the order of the scan. | +| `ID` | The finding identifier. | +| `FINDING` | The description of the finding. Depending on the finding, you may receive a technical finding. Refer to the [Findings](#findings) section in case you receive a technical finding. | +| `SEVERITY` | The severity of the finding. | +| `STATUS` | The status of the finding. Allowed values are `PASSED` or `FAILED`. | + +```text +endpoint: oldrelease-vc1.cluster-65ea4b3b9fe382461d51fbb3 +┌─────┬────────────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────┬────────┐ +│ NO. │ ID │ FINDING │ SEVERITY │ STATUS │ +├─────┼────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────┼────────┤ +│ 1 │ cipherlist_OBSOLETED │ offered │ CRITICAL │ FAILED │ +│ 2 │ cipher-tls1_2_xcca9 │ TLSv1.2 xcca9 ECDHE-ECDSA-CHACHA20-POLY1305 ECDH 521 ChaCha20 256 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 │ HIGH │ FAILED │ +│ 3 │ cipher-tls1_3_x1303 │ TLSv1.3 x1303 TLS_CHACHA20_POLY1305_SHA256 ECDH 253 ChaCha20 256 TLS_CHACHA20_POLY1305_SHA256 │ HIGH │ FAILED │ +│ 4 │ Cache-Control_multiple │ Multiple Cache-Control headers. Using first header: no-cache, private │ MEDIUM │ FAILED │ +│ 5 │ LUCKY13 │ potentially vulnerable, uses TLS CBC ciphers │ LOW │ FAILED │ +└─────┴────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────┴────────┘ +``` + +#### Findings + +A finding is a result of a failed check. The `FINDING` column may contain technical details of the finding. The +technical finding contains the following information: + +- The TLS version + +- The cipher suite HEX code. + +- The name of the cipher suite. + +- The key exchange algorithm. + +- The encryption algorithm. + +- The encryption key length. + +- The authentication algorithm. + +To help you better understand technical findings values, use the following example. + +```text +TLSv1.3 x1303 TLS_CHACHA20_POLY1305_SHA256 ECDH 253 ChaCha20 256 TLS_CHACHA20_POLY1305_SHA256 +``` + +The table below explains the example finding value and what each value represents. The values are separated by a space. + +| **Value** | **Explanation** | +| ------------------------------ | ----------------------------- | +| `TLSv1.3` | The TLS version. | +| `x1303` | The cipher suite HEX code. | +| `TLS_CHACHA20_POLY1305_SHA256` | The name of the cipher suite. | +| `ECDH 253` | The key exchange algorithm. | +| `ChaCha20` | The encryption algorithm. | +| `256` | The encryption key length. | +| `TLS_CHACHA20_POLY1305_SHA256` | The authentication algorithm. | + +The service endpoint is using the `TLSv1.3` version with `TLS_CHACHA20_POLY1305_SHA256` cipher suit. The TLS version and +the cipher suite is not considered FIPS compliant and the status is marked as `FAILED`. + +A successful check will not have a finding identifier. The following is an example of a successful check. + +```text +--------------------------------------------------------------- +endpoint: palette-webhook-service.palette-system +note: all validations passed +--------------------------------------------------------------- +``` + +The end of the report contains a summary of the scan results. The summary includes all the service endpoints scanned and +the status of each endpoint. Below is an example of the summary section. + +```text +┌────────────────────────────────────────────────────────────────┬────────┐ +│ ENDPOINT │ STATUS │ +├────────────────────────────────────────────────────────────────┼────────┤ +│ capa-webhook-service.capi-webhook-system │ passed │ +│ capi-kubeadm-bootstrap-webhook-service.capi-webhook-system │ passed │ +│ capi-kubeadm-control-plane-webhook-service.capi-webhook-system │ passed │ +│ capi-webhook-service.capi-webhook-system │ passed │ +│ capvc-webhook-service.capi-webhook-system │ failed │ +│ cert-manager-webhook.cert-manager │ passed │ +│ metrics-server.cluster-65e4cb59cbfc84ea5877af4c │ passed │ +│ oldrelease-vc1.cluster-65ea4b3b9fe382461d51fbb3 │ failed │ +│ oldrelease-vc1-headless.cluster-65ea4b3b9fe382461d51fbb3 │ failed │ +│ oldrelease-vc1-lb.cluster-65ea4b3b9fe382461d51fbb3 │ failed │ +│ kubernetes.default │ passed │ +│ palette-webhook-service.palette-system │ passed │ +│ 10-0-3-97.kubernetes.default:2380 │ failed │ +│ 10-0-3-97.kubernetes.default:10250 │ passed │ +└────────────────────────────────────────────────────────────────┴────────┘ +``` + +## Clean + +The `clean` subcommand removes the FIPS validation resources from your clusters. The command is intended to be used in +scenarios where the `images` or `services` subcommands may fail to clean up the resources from the cluster. As a +workaround, you can manually trigger the `clean` subcommand to remove the resources from the cluster. + +The `clean` subcommand accepts the following flags: + +| **Short Flag** | **Long Flag** | **Description** | **Type** | +| -------------- | ------------- | ---------------------------------------------------- | -------- | +| `-h` | `--help` | Display the help message for the `clean` subcommand. | boolean | + +### Examples + +Remove the FIPS validation resources from your cluster. + +```shell +export KUBECONFIG=/path/to/kubeconfig +palette fips-validate clean +``` diff --git a/docs/docs-content/palette-cli/commands/pcg.md b/docs/docs-content/palette-cli/commands/pcg.md index 07fbef1aad..982f807dd4 100644 --- a/docs/docs-content/palette-cli/commands/pcg.md +++ b/docs/docs-content/palette-cli/commands/pcg.md @@ -12,6 +12,8 @@ installation. A local [kind](https://kind.sigs.k8s.io/) cluster is created to fa target environment. You do not need to install kind or any other dependencies. The CLI includes all the required dependencies to set up the kind cluster. +## Subcommands + The `pcg` command exposes the following subcommand.
diff --git a/docs/docs-content/palette-cli/commands/pde.md b/docs/docs-content/palette-cli/commands/pde.md index 54c2173ebf..ceff062d6e 100644 --- a/docs/docs-content/palette-cli/commands/pde.md +++ b/docs/docs-content/palette-cli/commands/pde.md @@ -10,6 +10,8 @@ tags: ["palette-cli"] The `pde` command interacts with the Palette Dev Engine (PDE) platform and its resources. You can use the `pde` command to log in to Palette, manage virtual clusters, and switch the project scope. +## Subcommands + The `pde` command exposes the following subcommands. - [`app`](#app) - Manage Palette Apps deployments. diff --git a/docs/docs-content/palette-cli/commands/project.md b/docs/docs-content/palette-cli/commands/project.md index 8e04a33380..aa5d2468df 100644 --- a/docs/docs-content/palette-cli/commands/project.md +++ b/docs/docs-content/palette-cli/commands/project.md @@ -10,7 +10,7 @@ tags: ["palette-cli"] Use the `project` command to manage projects, the project scope for the CLI, and list all available projects. The `project` command supports the following subcommands. -
+## Subcommands - `deactivate` - Deactivate your active Palette project. This command requires you to have tenant admin privileges. diff --git a/docs/docs-content/palette-cli/commands/validator.md b/docs/docs-content/palette-cli/commands/validator.md index 16e3e19769..caae8ee87b 100644 --- a/docs/docs-content/palette-cli/commands/validator.md +++ b/docs/docs-content/palette-cli/commands/validator.md @@ -11,12 +11,18 @@ The Palette CLI has built-in support for the open-source [Validator](https://git framework and its plugins ecosystem. You can use the Validator to verify your environment is ready for an installation of self-hosted Palette, VerteX, or for deployment of Kubernetes clusters through Palette. +## Subcommands + The `validator` command exposes the following subcommands. +- [`describe`](#describe) - Describe the Validator results in a Kubernetes cluster. + - [`install`](#install) - Install the Validator framework and configure Validator plugins. - [`uninstall`](#uninstall) - Uninstall the Validator framework and remove all Validator plugins. +- [`upgrade`](#upgrade) - Upgrade Validator & reconfigure validator plugins. + ## Prerequisites The Validator requires the following dependencies. @@ -48,11 +54,13 @@ can install the Validator into an existing Kubernetes cluster by using the Helm The `install` subcommand accepts the following flags. -| **Short Flag** | **Long Flag** | **Description** | **Type** | -| -------------- | --------------- | ------------------------------------------------------------------------------------------------------------- | -------- | -| `-f` | `--config-file` | Install the Validator using a configuration file (optional). Provide the file path to the configuration file. | string | -| `-o` | `--config-only` | Generate a configuration file without proceeding with an actual install. Default: false | boolean | -| `-h` | `--help` | Help with any command. | - | +| **Short Flag** | **Long Flag** | **Description** | **Type** | +| -------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `-f` | `--config-file` | Install the Validator using a configuration file (optional). Provide the file path to the configuration file. | string | +| `-o` | `--config-only` | Generate a configuration file without proceeding with an actual install. Default: false | boolean | +| `-h` | `--help` | Help with any command. | - | +| `-r` | `--reconfigure` | Reconfigure Validator and plugins prior to installation. The `--config-file` flag must be included. Default: false. | boolean | +| `-p` | `--password` | Update credentials provided in the configuration file. This does not proceed with installation. The `--config-file` flag must be included. Default: false. | boolean | ### Examples @@ -77,6 +85,13 @@ Generate a configuration file without proceeding with an actual installation palette validator install --config-only ``` +Update credentials provided in the configuration file. This does proceed with installation but will prompt for new +credentials. + +```shell +palette validator install --password --config-file /Users/demo/.palette/validator/validator-20231109135306/validator.yaml +``` + ### Configuration Files After the install wizard completes, the Validator will generate a configuration file. You can use the generated @@ -138,6 +153,13 @@ validatorconfigs.validation.spectrocloud.labs 2023-11-09T21:02:12Z You can use the `kubectl` command to view the validation results. To review all the results collectively, use the `describe` command to display the `validationresults` CR. +:::tip + +Use the `validator describe` command to view the validation results. The `validator describe`command provides a more +user-friendly output of the validation results. Refer to the [Describe](#describe) section for more information. + +::: + ```shell kubectl describe validationresults --namespace validator ``` @@ -292,6 +314,13 @@ changed. Once you resolve the failure, the Validator will update the `Validation Use the `kubectl describe` command to view the validation results. +:::tip + +Use the `validator describe` command to view the validation results. The `validator describe` command provides a more +user-friendly output of the validation results. Refer to the [Describe](#describe) section for more information. + +::: + ```shell kubectl describe validationresults --namespace validator ``` @@ -326,3 +355,127 @@ palette validator uninstall \ --config-file /Users/demo/.palette/validator/validator-20231109135306/validator.yaml \ --delete-cluster=false ``` + +## Describe + +Use the `describe` subcommand to describe the Validator results in a Kubernetes cluster. The `describe` subcommand +prints out the validation results in a user-friendly format. + +The `describe` subcommand accepts the following flags. + +| **Short Flag** | **Long Flag** | **Description** | **Type** | +| -------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `-f` | `--config-file` | File path to the configuration file. This flag is required. Refer to the [Configuration Files](#configuration-files) section to learn more about configuration files. | string | +| `-h` | `--help` | Help with any command. | - | + +### Examples + +The following example uses the `describe` subcommand to display the validation results in a user-friendly format. + +```shell hideClipboard +palette validator describe \ + --config-file /Users/demo/.palette/validator/validator-20231109135306/validator.yaml +``` + +```shell hideClipboard +Using kubeconfig from validator configuration file: /home/ubuntu/.palette/validator/validator-20240311151646/kind-cluster.kubeconfig + +================= +Validation Result +================= + +Plugin: AWS +Name: validator-plugin-aws-validator-plugin-aws-iam-base +Namespace: validator +State: Failed +Sink State: N/A + +------------ +Rule Results +------------ + +Validation Rule: validation-SpectroCloudRole +Validation Type: aws-iam-role-policy +Status: False +Last Validated: 2024-03-11T15:20:58Z +Message: One or more required SCP permissions was not found, or a condition was not met + +-------- +Failures +-------- +- Action: autoscaling:DescribeAutoScalingGroups is denied due to an Organization level SCP policy for role: SpectroCloudRole +- Action: autoscaling:DescribeInstanceRefreshes is denied due to an Organization level SCP policy for role: SpectroCloudRole +- Action: ec2:AllocateAddress is denied due to an Organization level SCP policy for role: SpectroCloudRole +- Action: ec2:AssociateRouteTable is denied due to an Organization level SCP policy for role: SpectroCloudRole +- Action: ec2:AttachInternetGateway is denied due to an Organization level SCP policy for role: SpectroCloudRol +``` + +## Upgrade + +Use the `upgrade` subcommand to upgrade Validator and reconfigure the Validator plugins. The `upgrade` subcommand +requires the Validator configuration file. Use the `--config-file` flag to specify the configuration file. + +The `upgrade` subcommand accepts the following flags. + +| **Short Flag** | **Long Flag** | **Description** | **Type** | +| -------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `-f` | `--config-file` | Upgrade using a configuration file. Refer to the [Configuration Files](#configuration-files) section to learn more about configuration files. | string | +| `-h` | `--help` | Help for the upgrade command. | - | + +### Examples + +In the following example, the Validator version is upgraded. The configuration file located at +`/Users/demo/.palette/validator/validator-20231109135306/validator.yaml` was updated to use Validator version `v0.0.36` +from version `v0.0.30`. + +```yaml {5} hideClipboard +helmRelease: + chart: + name: validator + repository: https://spectrocloud-labs.github.io/validator + version: v0.0.36 + insecureSkipVerify: true + values: "" +helmReleaseSecret: +``` + +Once the configuration file is updated, use the `upgrade` subcommand to upgrade the Validator. + +```shell +palette validator upgrade \ +--config-file /Users/demo/.palette/validator/validator-20231109135306/validator.yaml +``` + +```shell hideClipboard +==== Installing/upgrading validator Helm chart ==== +helm upgrade validator validator --repo https://spectrocloud-labs.github.io/validator --version v0.0.36 --insecure-skip-tls-verify --kubeconfig /tmp/2773008921 --namespace validator --install --create-namespace --values /tmp/1655869680 + +==== Kubectl Command ==== +/home/ubuntu/.palette/bin/kubectl wait --for=condition=available --timeout=600s deployment/validator-controller-manager -n validator --kubeconfig=/home/ubuntu/.palette/validator/validator-20240311153652/kind-cluster.kubeconfig +deployment.apps/validator-controller-manager condition met +Pausing for 20s for validator to establish a lease & begin plugin installation + +==== Kubectl Command ==== +/home/ubuntu/.palette/bin/kubectl wait --for=condition=available --timeout=600s deployment/validator-plugin-aws-controller-manager -n validator --kubeconfig=/home/ubuntu/.palette/validator/validator-20240311153652/kind-cluster.kubeconfig +deployment.apps/validator-plugin-aws-controller-manager condition met + +validator and validator plugin(s) installed successfully + +==== Applying AWS plugin validator(s) ==== + +==== Kubectl Command ==== +/home/ubuntu/.palette/bin/kubectl apply -f /home/ubuntu/.palette/validator/validator-20240311154338/manifests/rules.yaml --kubeconfig=/home/ubuntu/.palette/validator/validator-20240311153652/kind-cluster.kubeconfig +awsvalidator.validation.spectrocloud.labs/rules unchanged + +==== Kubectl Command ==== +/home/ubuntu/.palette/bin/kubectl apply -f /home/ubuntu/.palette/validator/validator-20240311154338/manifests/awsvalidator-iam-role-spectro-cloud-base.yaml --kubeconfig=/home/ubuntu/.palette/validator/validator-20240311153652/kind-cluster.kubeconfig +awsvalidator.validation.spectrocloud.labs/validator-plugin-aws-iam-base unchanged + +Plugins will now execute validation checks. + +You can list validation results via the following command: +kubectl -n validator get validationresults --kubeconfig /home/ubuntu/.palette/validator/validator-20240311153652/kind-cluster.kubeconfig + +And you can view all validation result details via the following command: +kubectl -n validator describe validationresults --kubeconfig /home/ubuntu/.palette/validator/validator-20240311153652/kind-cluster.kubeconfig +``` diff --git a/docs/docs-content/palette-cli/install-palette-cli.md b/docs/docs-content/palette-cli/install-palette-cli.md index 30d33b07ef..7a0fbca699 100644 --- a/docs/docs-content/palette-cli/install-palette-cli.md +++ b/docs/docs-content/palette-cli/install-palette-cli.md @@ -41,20 +41,14 @@ The Palette CLI is available for the following operating systems and architectur 4. Move the binary to a folder that is part of your system's `PATH` environment variable. Use the following command to move the binary to the **/usr/local/bin** folder. -
- ```shell sudo mv ~/Downloads/palette /usr/local/bin/palette && \ chmod +x /usr/local/bin/palette ``` -
- 5. Log in to Palette by using the `login` command. Replace `` with your Palette API key. If you are using a Palette self-hosted instance or Palette VerteX, replace the `--console-url` with your custom Palette URL. -
- ```shell palette login --api-key --console-url https://console.spectrocloud.com/ ``` @@ -63,14 +57,12 @@ The Palette CLI is available for the following operating systems and architectur Verify the Palette CLI is part of your system path by issuing the Palette CLI `version` command. -
- ```shell palette version ``` ```shell hideClipboard -Palette CLI version: 4.2.2 +Palette CLI version: 4.3.4 ``` ## Next Steps diff --git a/docs/docs-content/profiles/app-profiles/clone-app-profile.md b/docs/docs-content/profiles/app-profiles/clone-app-profile.md index d25725bc42..ac2ccd8243 100644 --- a/docs/docs-content/profiles/app-profiles/clone-app-profile.md +++ b/docs/docs-content/profiles/app-profiles/clone-app-profile.md @@ -26,17 +26,17 @@ You can clone an app profile across multiple projects within the same [tenant](. 5. Provide the following information for the app profile you want to clone and click **Confirm**. -| **Parameter** | **Description** | -| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Name** | A custom name for the cloned app profile. | -| **Profile Version** | Assign a version number for the cloned app profile. You can create multiple versions of an App Profile using the format `major.minor.patch`. The default value is `1.0.0`. | -| **Source Profile Version** | The version number of the source profile. | -| **Target Project** | The target project to which the profile will be cloned. Select the project name from the **drop-down Menu**. | + | **Parameter** | **Description** | + | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | A custom name for the cloned app profile. | + | **Profile Version** | Assign a version number for the cloned app profile. You can create multiple versions of an App Profile using the format `major.minor.patch`. The default value is `1.0.0`. | + | **Source Profile Version** | The version number of the source profile. | + | **Target Project** | The target project to which the profile will be cloned. Select the project name from the **drop-down Menu**. | -To learn how to create multiple profile versions that use the same name, check out -[Version an App Profile](../app-profiles/modify-app-profiles/version-app-profile.md). + To learn how to create multiple profile versions that use the same name, check out + [Version an App Profile](../app-profiles/modify-app-profiles/version-app-profile.md). -You can now use the app profile when deploying virtual clusters in the target project or tenant. + You can now use the app profile when deploying virtual clusters in the target project or tenant. ## Validate diff --git a/docs/docs-content/profiles/app-profiles/create-app-profiles/create-helm-app-profile.md b/docs/docs-content/profiles/app-profiles/create-app-profiles/create-helm-app-profile.md index 0b908ca46d..a7191eb469 100644 --- a/docs/docs-content/profiles/app-profiles/create-app-profiles/create-helm-app-profile.md +++ b/docs/docs-content/profiles/app-profiles/create-app-profiles/create-helm-app-profile.md @@ -32,15 +32,15 @@ Engine. 4. Provide the following basic information for your app profile and click **Next**. -| **Parameter** | **Description** | -| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **App Profile Name** | A custom name for the app profile. | -| **Version** | An optional version number for the new app profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | -| **Description** | Use the description to provide context about the profile. | -| **Tag** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when apps are created from this app profile. Example: `owner` or `region`. | + | **Parameter** | **Description** | + | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **App Profile Name** | A custom name for the app profile. | + | **Version** | An optional version number for the new app profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Tag** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when apps are created from this app profile. Example: `owner` or `region`. | -To learn how to create multiple profile versions that use the same name, check out -[Version an App Profile](../modify-app-profiles/version-app-profile.md). + To learn how to create multiple profile versions that use the same name, check out + [Version an App Profile](../modify-app-profiles/version-app-profile.md). 5. Select **Helm** to start configuring your app profile. @@ -54,16 +54,16 @@ To learn how to create multiple profile versions that use the same name, check o 7. You can add manifests to the app profile. To do this, click on **Add Manifests** and provide the manifest name. -:::warning + :::warning -When adding a manifest-type layer to an app profile, make sure you specify a namespace. Otherwise, the manifest -deployment will be deployed to the `Default` namespace. + When adding a manifest-type layer to an app profile, make sure you specify a namespace. Otherwise, the manifest + deployment will be deployed to the `Default` namespace. -```yaml -namespace: yourNamespaceNameHere -``` + ```yaml + namespace: yourNamespaceNameHere + ``` -::: + ::: 8. You can add services to the app profile as needed. To do this, click `+` next to the **Configure tier** pane. To rearrange layers in the profile, select a service and drag it up or down in the pane. Each service becomes a layer in @@ -86,15 +86,15 @@ Use the following steps to validate that your app profile is available and ready 4. Hover your cursor over each profile layer to learn more about them, including the service name, version, and registry. -![A view of a cursor triggering the info box for a helm layer.](/profiles_app-profiles_create-app-profiles_helm-layer-infobox.webp) + ![A view of a cursor triggering the info box for a helm layer.](/profiles_app-profiles_create-app-profiles_helm-layer-infobox.webp) -:::info + :::info -Use the tool-tip that displays when you select a layer to gather information required for creating Terraform templates -for app profiles. Check out our Terraform registry for -[Application Profiles](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs/resources/application_profile). + Use the tool-tip that displays when you select a layer to gather information required for creating Terraform + templates for app profiles. Check out our Terraform registry for + [Application Profiles](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs/resources/application_profile). -::: + ::: 5. Deploy your application to a virtual cluster to verify all the required configurations and dependencies are correct. Review [Create and Manage Apps](../../../devx/apps/create-app.md) to learn how to deploy an app to a virtual cluster. diff --git a/docs/docs-content/profiles/app-profiles/create-app-profiles/create-manifest-app-profile.md b/docs/docs-content/profiles/app-profiles/create-app-profiles/create-manifest-app-profile.md index a7dd7bff52..7cb4be6d95 100644 --- a/docs/docs-content/profiles/app-profiles/create-app-profiles/create-manifest-app-profile.md +++ b/docs/docs-content/profiles/app-profiles/create-app-profiles/create-manifest-app-profile.md @@ -37,28 +37,28 @@ Engine. 4. Provide the following basic information for your app profile and click **Next**. -| **Parameter** | **Description** | -| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **App Profile Name** | A custom name for the app profile. | -| **Version** | An optional version number for the new app profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | -| **Description** | Use the description to provide context about the profile. | -| **Tag** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when apps are created from this app profile. Example: `owner` or `region`. | + | **Parameter** | **Description** | + | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **App Profile Name** | A custom name for the app profile. | + | **Version** | An optional version number for the new app profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Tag** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when apps are created from this app profile. Example: `owner` or `region`. | -To learn how to create multiple profile versions that use the same name, check out -[Version an App Profile](../modify-app-profiles/version-app-profile.md). + To learn how to create multiple profile versions that use the same name, check out + [Version an App Profile](../modify-app-profiles/version-app-profile.md). 5. Select **Manifest** to start configuring your app profile. -:::warning + :::warning -When adding a manifest-type layer to an app profile, make sure you specify a namespace. Otherwise, the manifest -deployment will be deployed to the `Default` namespace. + When adding a manifest-type layer to an app profile, make sure you specify a namespace. Otherwise, the manifest + deployment will be deployed to the `Default` namespace. -```yaml -namespace: yourNamespaceNameHere -``` + ```yaml + namespace: yourNamespaceNameHere + ``` -::: + ::: 6. Provide a custom name for your manifest. @@ -66,7 +66,7 @@ namespace: yourNamespaceNameHere manifests as needed. For an example of how to create a custom add-on pack using a manifest, review [Add an Add-on Pack](../../../registries-and-packs/adding-add-on-packs.md#manifests) guide. -![A view showing an arrow that points to the blue-circled checkmark the user clicks to add a manifest.](/profiles_app-profiles_create-app-profiles_add-manifest.webp) + ![A view showing an arrow that points to the blue-circled checkmark the user clicks to add a manifest.](/profiles_app-profiles_create-app-profiles_add-manifest.webp) 8. You can add more services to the app profile as needed. To do this, click `+` next to the **Configure tier** pane. To rearrange layers in the profile, select a service and drag it up or down in the pane. Each service becomes a layer in @@ -89,15 +89,15 @@ Use the following steps to validate that your app profile is available and ready 4. Hover your cursor over each profile layer to learn more about them, including the service name, version, and registry. -![A view of a cursor triggering the info box for a manifest layer.](/profiles_app-profiles_create-app-profiles_manifest-layer-infobox.webp) + ![A view of a cursor triggering the info box for a manifest layer.](/profiles_app-profiles_create-app-profiles_manifest-layer-infobox.webp) -:::info + :::info -Use the tool-tip that displays when you select a layer to gather information required for creating Terraform templates -for app profiles. Check out our Terraform registry for -[Application Profiles](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs/resources/application_profile). + Use the tool-tip that displays when you select a layer to gather information required for creating Terraform + templates for app profiles. Check out our Terraform registry for + [Application Profiles](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs/resources/application_profile). -::: + ::: 5. Deploy your application to a virtual cluster to verify all the required configurations and dependencies are correct. Review [Create and Manage Apps](../../../devx/apps/create-app.md) to learn how to deploy an app to a virtual cluster. diff --git a/docs/docs-content/profiles/app-profiles/modify-app-profiles/update-app-profile.md b/docs/docs-content/profiles/app-profiles/modify-app-profiles/update-app-profile.md index dc9f3589f6..2e6fbe88ef 100644 --- a/docs/docs-content/profiles/app-profiles/modify-app-profiles/update-app-profile.md +++ b/docs/docs-content/profiles/app-profiles/modify-app-profiles/update-app-profile.md @@ -30,12 +30,12 @@ previous update. You can apply updates to Apps individually at any time. 4. Click on **Settings** and choose **Basic Information** in the slide-out panel. You can modify the name, description, and tags. -:::info + :::info -Updated tags are not propagated to previously created Apps. However, tag changes will apply to new Apps you deploy that -use the updated profile. + Updated tags are not propagated to previously created Apps. However, tag changes will apply to new Apps you deploy + that use the updated profile. -::: + ::: 5. Save your changes. diff --git a/docs/docs-content/profiles/cluster-profiles/clone-cluster-profile.md b/docs/docs-content/profiles/cluster-profiles/clone-cluster-profile.md index 8646c99069..e58aaee250 100644 --- a/docs/docs-content/profiles/cluster-profiles/clone-cluster-profile.md +++ b/docs/docs-content/profiles/cluster-profiles/clone-cluster-profile.md @@ -24,18 +24,18 @@ You can clone a cluster profile across multiple projects within the same [tenant 4. Provide the following information for your cloned cluster profile and click **Confirm**. -| **Parameter** | **Description** | -| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Name** | A custom name for the cloned cluster profile. | -| **Profile Version** | An optional version number for the new cluster profile. The default value is 1.0.0. You can create multiple versions of a cluster profile using the format `major.minor.patch`. | -| **Source Profile Version** | The version number of the source profile. | -| **Scope** | Choose the target scope the cluster profile will apply to: **project** or **tenant**. When you select **project**, a **Project** field displays. Selecting **tenant** will make the profile available to the organization. | -| **Project** | This field displays when you select **project** scope. Select a target project from the **drop-down Menu**. | - -To learn how to create multiple profile versions that use the same name, check out -[Version a Cluster Profile](../cluster-profiles/modify-cluster-profiles/version-cluster-profile.md). - -You can now use the cluster profile when deploying clusters in the target project or tenant. + | **Parameter** | **Description** | + | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | A custom name for the cloned cluster profile. | + | **Profile Version** | An optional version number for the new cluster profile. The default value is 1.0.0. You can create multiple versions of a cluster profile using the format `major.minor.patch`. | + | **Source Profile Version** | The version number of the source profile. | + | **Scope** | Choose the target scope the cluster profile will apply to: **project** or **tenant**. When you select **project**, a **Project** field displays. Selecting **tenant** will make the profile available to the organization. | + | **Project** | This field displays when you select **project** scope. Select a target project from the **drop-down Menu**. | + + To learn how to create multiple profile versions that use the same name, check out + [Version a Cluster Profile](../cluster-profiles/modify-cluster-profiles/version-cluster-profile.md). + + You can now use the cluster profile when deploying clusters in the target project or tenant. ## Validate diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md index fc627e0791..15ea7ed79c 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md @@ -26,46 +26,46 @@ Use the following steps to create a cluster profile by adding layers using Helm 4. Fill out the following input values and ensure you select **Add-on** for the type. Click on **Next** to continue. -| **Field** | **Description** | -| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Name** | A custom name for the cluster profile. | -| **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | -| **Description** | Use the description to provide context about the profile. | -| **Type** | **Add-on** | -| **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | + | **Field** | **Description** | + | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | A custom name for the cluster profile. | + | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Type** | **Add-on** | + | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | -To learn how to create multiple profile versions, check out -[Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). + To learn how to create multiple profile versions, check out + [Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). 5. Select **Add Helm Chart** and use the **drop-down Menu** to choose public or private packs. 6. To add a chart from a public registry, choose a Helm chart from the list displayed on the next page. You can search charts by name. Pack details and the configuration file are displayed on the next page. -To add a chart from a private registry, select a registry from the **drop-down Menu** and provide the chart name and -version. + To add a chart from a private registry, select a registry from the **drop-down Menu** and provide the chart name and + version. 7. Configure parameters as needed. In the configuration file, ensure you specify a namespace. Otherwise, the chart will deploy to the `Default` namespace. -```yaml -pack: - namespace: your_namespace_here -``` + ```yaml + pack: + namespace: your_namespace_here + ``` -Optionally, you can add configurable layer values and specify the layer -[install order](./create-addon-profile.md#install-order). + Optionally, you can add configurable layer values and specify the layer + [install order](./create-addon-profile.md#install-order). -:::warning + :::warning -Palette requires a namespace using the `namespace` parameter in the configuration file to identify the namespace on the -target cluster. For more information about customizing with namespaces, refer to -[Profile Customization](../../../profile-customization.md). + Palette requires a namespace using the `namespace` parameter in the configuration file to identify the namespace on + the target cluster. For more information about customizing with namespaces, refer to + [Profile Customization](../../../profile-customization.md). -For examples of pack structure for a Helm chart-based pack, review -[Build a Pack](../../../../registries-and-packs/deploy-pack.md#build-a-pack), and select the appropriate tab. + For examples of pack structure for a Helm chart-based pack, review + [Build a Pack](../../../../registries-and-packs/deploy-pack.md#build-a-pack), and select the appropriate tab. -::: + ::: 8. When you are done, click **Confirm & Create**, then click **Next** to review the profile. diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md index 437fb33330..1d905cc0bc 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md @@ -26,16 +26,16 @@ create a cluster profile by adding layers using manifests. 4. Fill out the following input values and ensure you select **Add-on** for the type. Click on **Next** to continue. -| **Field** | **Description** | -| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Name** | A custom name for the cluster profile. | -| **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | -| **Description** | Use the description to provide context about the profile. | -| **Type** | **Add-on** | -| **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | + | **Field** | **Description** | + | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | A custom name for the cluster profile. | + | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Type** | **Add-on** | + | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | -To learn how to create multiple profile versions, check out -[Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). + To learn how to create multiple profile versions, check out + [Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). 5. Select **Add Manifest** and provide a display name for this layer. Optionally, you can specify the layer [install order](./create-addon-profile.md#install-order). @@ -45,20 +45,20 @@ To learn how to create multiple profile versions, check out 7. Create your manifest. Ensure you specify a namespace. Otherwise, the manifest will deploy to the `Default` namespace. -```yaml -namespace: your_namespace_here -``` + ```yaml + namespace: your_namespace_here + ``` -:::warning + :::warning -Palette requires a namespace using the `namespace` parameter in the configuration file to identify the namespace on the -target cluster. For more information about customizing with namespaces, refer to -[Profile Customization](../../../profile-customization.md). + Palette requires a namespace using the `namespace` parameter in the configuration file to identify the namespace on + the target cluster. For more information about customizing with namespaces, refer to + [Profile Customization](../../../profile-customization.md). -For examples of pack structure for a manifest-based pack, review -[Build a Pack](../../../../registries-and-packs/deploy-pack.md#build-a-pack), and select the appropriate tab. + For examples of pack structure for a manifest-based pack, review + [Build a Pack](../../../../registries-and-packs/deploy-pack.md#build-a-pack), and select the appropriate tab. -::: + ::: 8. If you want to add more manifests, repeat steps 6 and 7. Otherwise, click **Confirm & Create**, then click **Next** to review the profile. diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md index d3ff01ecf2..d25ef2e6cd 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md @@ -25,16 +25,16 @@ Use the following steps to create a cluster profile by adding one or more layers 4. Fill out the following input values and ensure you select **Add-on** for the type. Click on **Next** to continue. -| **Field** | **Description** | -| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Name** | A custom name for the cluster profile. | -| **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | -| **Description** | Use the description to provide context about the profile. | -| **Type** | **Add-on** | -| **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | - -To learn more about creating multiple profile versions, check out -[Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). + | **Field** | **Description** | + | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | A custom name for the cluster profile. | + | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Type** | **Add-on** | + | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | + + To learn more about creating multiple profile versions, check out + [Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). 5. Select **Add New Pack**. In the next window that displays, choose a registry and select the pack to add to your profile. You can search packs by name. diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md index 94d9daac63..190d41792f 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md @@ -27,47 +27,47 @@ and Storage. Next, add layers using add-on profiles to expand the functionality 4. Fill out the following input values and ensure you select **Full** for the type. Click on **Next** to continue. -| **Field** | **Description** | -| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Name** | The name of the profile. | -| **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | -| **Description** | Use the description to provide context about the profile. | -| **Type** | **Full** | -| **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | + | **Field** | **Description** | + | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | The name of the profile. | + | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Type** | **Full** | + | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | -To learn how to create multiple profile versions that use the same name, check out -[Version a Cluster Profile](../modify-cluster-profiles/version-cluster-profile.md). + To learn how to create multiple profile versions that use the same name, check out + [Version a Cluster Profile](../modify-cluster-profiles/version-cluster-profile.md). 5. Select the Infrastructure Provider, Managed Kubernetes, or Tech Preview cloud type for your environment and click **Next**. -:::info + :::info -Cluster profiles created from a Tech Preview cloud type are intended for clusters that a cloud provider deploys using -Palette's generic framework built upon the open-source Cluster API (CAPI) initiative. + Cluster profiles created from a Tech Preview cloud type are intended for clusters that a cloud provider deploys using + Palette's generic framework built upon the open-source Cluster API (CAPI) initiative. -When creating a profile using a Tech Preview cloud type, you do not have to specify anything for the OS or Kubernetes -layers. Out-of-the-box packs are provided for the network and storage profile layers. + When creating a profile using a Tech Preview cloud type, you do not have to specify anything for the OS or Kubernetes + layers. Out-of-the-box packs are provided for the network and storage profile layers. -::: + ::: 6. Configure the infrastructure layers by selecting the registry, pack name, and pack version for each layer. Click **Next Layer** to configure each infrastructure layer. -| **Layer** | **Description** | -| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Operating System** | Select an OS to use with your Kubernetes clusters. Use the **Bring Your Own OS (BYOOS)** to use a different or custom OS. Refer to the [Bring Your Own OS (BYOOS)](../../../byoos/byoos.md) section to learn more. | -| **Kubernetes** | The Kubernetes pack to use with the cluster. Palette eXtended Kubernetes (PXK) allows you to manage OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured - you can use Palette as an IDP without having to configure a third-party IDP. Refer to [Configure OIDC Identity Provider](../../../integrations/kubernetes.md#configure-custom-oidc) for more information. | -| **Network** | Select a network pack to use with your clusters. | -| **Storage** | Select a storage pack to use with your clusters. | + | **Layer** | **Description** | + | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Operating System** | Select an OS to use with your Kubernetes clusters. Use the **Bring Your Own OS (BYOOS)** to use a different or custom OS. Refer to the [Bring Your Own OS (BYOOS)](../../../byoos/byoos.md) section to learn more. | + | **Kubernetes** | The Kubernetes pack to use with the cluster. Palette eXtended Kubernetes (PXK) allows you to manage OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured - you can use Palette as an IDP without having to configure a third-party IDP. Refer to [Configure OIDC Identity Provider](../../../integrations/kubernetes.md#configure-custom-oidc) for more information. | + | **Network** | Select a network pack to use with your clusters. | + | **Storage** | Select a storage pack to use with your clusters. | 7. Select the type of layer to add to the cluster profile: pack, manifest, or Helm chart. For guidance, refer to [Add a Pack](../create-cluster-profiles/create-addon-profile/create-pack-addon.md), [Add a Manifest](../create-cluster-profiles/create-addon-profile/create-manifest-addon.md), or [Add a Helm Chart](../create-cluster-profiles/create-addon-profile/create-helm-addon.md). -For more information about the layers, applying pack versions, configuration parameters, and presets, review -[Profile Layers](../cluster-profiles.md#profile-layers). + For more information about the layers, applying pack versions, configuration parameters, and presets, review + [Profile Layers](../cluster-profiles.md#profile-layers). 8. Fill out the required input fields for each layer and click on **Confirm & Create**. diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md index ba952ce69a..5e0a9a1620 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md @@ -27,44 +27,44 @@ packs. 4. Fill out the following input values and ensure you select **Infrastructure** for the type. Click on **Next** to continue. -| **Field** | **Description** | -| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Name** | A custom name for the profile. | -| **Version** | You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | -| **Description** | Use the description to provide context about the profile. | -| **Type** | **Infrastructure** | -| **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | + | **Field** | **Description** | + | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | A custom name for the profile. | + | **Version** | You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Type** | **Infrastructure** | + | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | -To learn more about creating multiple profile versions, check out -[Version a Cluster Profile](../modify-cluster-profiles/version-cluster-profile.md). + To learn more about creating multiple profile versions, check out + [Version a Cluster Profile](../modify-cluster-profiles/version-cluster-profile.md). 5. Select the Infrastructure Provider, Managed Kubernetes, or Tech Preview cloud type for your environment and click **Next**. -:::info + :::info -Cluster profiles created from a Tech Preview cloud type are intended for clusters that a cloud provider deploys using -Palette's generic framework built upon the open-source Cluster API (CAPI) initiative. + Cluster profiles created from a Tech Preview cloud type are intended for clusters that a cloud provider deploys using + Palette's generic framework built upon the open-source Cluster API (CAPI) initiative. -When creating a profile using a Tech Preview cloud type, you do not have to specify anything for the OS or Kubernetes -layers. Out-of-the-box packs are provided for the network and storage profile layers. + When creating a profile using a Tech Preview cloud type, you do not have to specify anything for the OS or Kubernetes + layers. Out-of-the-box packs are provided for the network and storage profile layers. -::: + ::: 6. Configure the infrastructure layers by selecting the registry, pack name, and pack version for each layer. Click **Next Layer** to configure each infrastructure layer. -For more information about layer types, applying pack versions, configuration parameters, and presets, review -[Profile Layers](../cluster-profiles.md#profile-layers). + For more information about layer types, applying pack versions, configuration parameters, and presets, review + [Profile Layers](../cluster-profiles.md#profile-layers). -| **Layer** | **Description** | -| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Operating System** | Select an OS to use with your Kubernetes clusters. Use **Bring Your Own OS (BYOOS)** if you want to upload your own OS images. | -| **Kubernetes** | The Kubernetes pack to use with the cluster. Palette eXtended Kubernetes (PXK) allows you to manage OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured - you can use Palette as an IDP without having to configure a third-party IDP. Refer to [Configure OIDC Identity Provider](../../../integrations/kubernetes.md#configure-oidc-identity-provider) for more information. | -| **Network** | Select a network pack to use with your clusters. | -| **Storage** | Select a storage pack to use with your clusters. | + | **Layer** | **Description** | + | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Operating System** | Select an OS to use with your Kubernetes clusters. Use **Bring Your Own OS (BYOOS)** if you want to upload your own OS images. | + | **Kubernetes** | The Kubernetes pack to use with the cluster. Palette eXtended Kubernetes (PXK) allows you to manage OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured - you can use Palette as an IDP without having to configure a third-party IDP. Refer to [Configure OIDC Identity Provider](../../../integrations/kubernetes.md#configure-oidc-identity-provider) for more information. | + | **Network** | Select a network pack to use with your clusters. | + | **Storage** | Select a storage pack to use with your clusters. | -As you add each layer, Palette displays the YAML file in the editor at right. You can edit the YAML as needed. + As you add each layer, Palette displays the YAML file in the editor at right. You can edit the YAML as needed. 7. When all the infrastructure layers are added, click on **Confirm**. Palette displays the profile stack with your specified pack layers. @@ -89,11 +89,11 @@ operations. Now you are ready to deploy a cluster using the infrastructure cluster profile you created. If desired, you can add layers to your infrastructure profile using add-on profiles. For more information, check out the -[Create an Add-on Profile](../create-cluster-profiles/create-addon-profile/) guide. +[Create an Add-on Profile](../create-cluster-profiles/create-addon-profile/create-addon-profile.md) guide. ## Resources -- [Create an Add-on Profile](../create-cluster-profiles/create-addon-profile/) +- [Create an Add-on Profile](../create-cluster-profiles/create-addon-profile/create-addon-profile.md) - [Create a Full Profile](../create-cluster-profiles/create-full-profile.md) diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/define-profile-variables.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/define-profile-variables.md new file mode 100644 index 0000000000..7cebca6390 --- /dev/null +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/define-profile-variables.md @@ -0,0 +1,188 @@ +--- +sidebar_label: "Define and Manage Profile Variables" +title: "Define and Manage Profile Variables" +description: "Learn what cluster profile variables are and how to use them." +sidebar_position: 40 +tags: ["profiles", "cluster profiles"] +--- + +Cluster profile variables enable you to create placeholders for parameters in profile layer configurations, which you +can then populate for individual clusters during deployment. Meaning you can use a single cluster profile to deploy +multiple clusters with unique requirements for security, networking, resource allocation, and so on. + +When defining a cluster profile variable, you can set specific constraints on the expected values, such as format, +optionality, masking, and so on, to ensure scalable, error-free cluster deployments. + +:::preview + +This is a Tech Preview feature currently available in the [local UI](../../../clusters/edge/local-ui/local-ui.md). Do +not use this feature in production workloads, as it is subject to change. + +::: + +You can use profile variables with any number of packs, manifests, and Helm charts, but only in the scope of their +parent cluster profile. If you want to create placeholders to use across different cluster profiles, consider using +[Palette Macros](../../../clusters/cluster-management/macros.md). + +The following table describes the difference between profile variables and macros. + +| **Capability** | **Profile Variable** | **Macro** | +| ------------------------------------------------------------------------- | :------------------: | :-------: | +| Belongs to the cluster profile scope | ✅ | ❌ | +| Belongs to the project scope | ❌ | ✅ | +| Belongs to the tenant scope | ❌ | ✅ | +| Supports data format restrictions | ✅ | ❌ | +| Supports optionality restrictions | ✅ | ❌ | +| Supports [sprig template functions](https://masterminds.github.io/sprig/) | ✅ | ✅ | + +This guide explains how you can define and manage cluster profile variables. + +## Limitations + +- Cluster profile variables are currently available only in the [local UI](../../../clusters/edge/local-ui/local-ui.md). + +- Palette does not support nesting profile variables within macros or other profile variables. + +- You cannot define profile variables for the `pack.content` and `system.uri` parameters because the + [Palette CLI](../../../palette-cli/palette-cli.md) populates them automatically. + +- Once you deploy a cluster from a profile with variables, you can neither edit nor delete the profile variables. To + edit or delete them, [version the cluster profile](../modify-cluster-profiles/version-cluster-profile.md) and update + the variables in the new version. + + When you version a cluster profile with variables, the variables are propagated to the new version. However, upon + versioning, the variables in each version are independent. + +## Define Profile Variables + +### Prerequisites + +- The `clusterProfile.create` and `clusterProfile.update` permissions to create and update cluster profiles. Refer to + [Roles and Permissions](../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile-admin) + for more information. + +- An in-progress or already created cluster profile. The cluster profile must either have the **Edge Native** + infrastructure or be an edge-based add-on profile. + +### Enablement + +You can define profile variables both while creating and for the already created cluster profiles. To define profile +variables [while creating a cluster profile](../create-cluster-profiles/create-cluster-profiles.md), start following +this guide from step three at the **Profile Layers** stage of cluster profile creation. + +1. Log in to Palette. + +2. Navigate to the cluster profile for which you want to define profile variables. + +3. In the upper-right corner, click **Variables** and, on the **Profile variables** pane, click **Create variable**. + + ![Palette with the Variables button highlighted.](/profiles_create-cluster-profiles_define-profile-variables_open-profile-variables.webp) + +4. Enter the variable name in the `{{.spectro.var.}}` format. You will use this name when adding + variables to layer configurations. The name must be unique within the parent cluster. + +5. Enter a variable display name that Palette will display during cluster deployment. The display name must be unique + within the parent cluster. + +6. Optionally, enter the variable description. + +7. Select a data format that the variable will expect. The following table describes the available data formats. + + | **Format** | **Description** | + | ---------- | ------------------------------------------------------------------------------------------------------ | + | String | Custom text input. | + | Number | Any numeric type, such as integers and floating point numbers. | + | Boolean | `true` or `false`. Values that evaluate to `true` or `false`, such as 1 and 0, are not accepted. | + | Version | Version value that follows the [Semantic Versioning](https://semver.org/) convention, such as `x.y.z`. | + | IPv4 | Valid representation of an IPv4 address. | + | IPv4 CIDR | A CIDR block of IP addresses that follow the IPv4 standard. | + | IPv6 | Valid representation of an IPv6 address. | + +8. Optionally, configure additional data validation. The following table describes the available parameters. + + | **Parameter** | **Description** | + | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | Custom input validation | Whether the input is validated against a regular expression. Based on the [regexp](https://pkg.go.dev/regexp) engine. | + | Required | Whether the input is required. | + | Default value | Whether the variable has a default value. | + | Mask value | Whether the input is masked with asterisks in the layer YAML configuration. When you export a profile with masked variables, they will be masked in the exported profile. Upon import, you will be required to provide the masked values. | + | Hidden | Whether the variable is hidden during cluster deployment. | + | Read-only | Whether the variable is editable during cluster deployment. | + + :::info + + If a variable is required and hidden, it must contain a default value. + + ::: + +9. Click **Create**. + +10. On the **Profile variables** pane, next to your variable, click the **Copy to clipboard** icon to copy the variable + name. + +11. Navigate to the YAML configuration of the profile layer for which you want to add the variable. + +12. Paste the variable in the `parameter: "{{.spectro.var.variable_name}}"` format and click **Confirm Updates**. + + Alternatively, you can start typing the profile variable name with `{{.spectro.var.}}`, and Palette will suggest + profile variables that you can autocomplete. + + ![Palette YAML editor with the added profile variables.](/profiles_create-cluster-profiles_define-profile-variables_add-vars-to-yaml.webp) + +13. Repeat the steps described in this guide to define more variables and add them to the necessary cluster profile + layers. + +### Validation + +1. Log in to Palette. + +2. From the left **Main Menu**, select **Profiles** and navigate to the cluster profile for which you have defined + profile variables. + +3. In the upper-right corner, click **Variables** and, on the **Profile variables** pane, check that the necessary + variables are defined. + +4. Open the necessary profile layers and check that their YAML configuration contains the expected variables. + +## Manage Profile Variables + +:::info + +Once you deploy a cluster from a profile with variables, you can neither edit nor delete the profile variables. To edit +or delete them, [version the cluster profile](../modify-cluster-profiles/version-cluster-profile.md) and update the +variables in the new version. + +::: + +### Prerequisites + +- The `clusterProfile.update` permission to update cluster profiles. Refer to + [Roles and Permissions](../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile-admin) + for more information. + +- A cluster profile with profile variables created in Palette. + +### Enablement + +1. Log in to Palette. + +2. Navigate to the cluster profile for which you want to update profile variables. + +3. In the upper-right corner, click **Variables**. + +4. To edit a profile variable, in the right **Three-dot menu** of the necessary variable, click **Edit** and make the + necessary changes. Note that you cannot edit the **Variable**, **Format**, **Custom input validation**, **Required**, + **Mask value**, and **Read-only** fields. + +5. To delete a profile variable, in the right **Three-dot menu** of the necessary variable, click **Delete**. Then, + navigate to the profile layers that implement this variable and manually remove it from their YAML configurations. + +### Validation + +1. Log in to Palette. + +2. From the left **Main Menu**, select **Profiles** and navigate to the cluster profile for which you have updated the + profile variables. + +3. In the upper-right corner, click **Variables** and, on the **Profile variables** pane, check that only the necessary + variables are present and that each variable has the expected definition. diff --git a/docs/docs-content/profiles/cluster-profiles/export-import-cluster-profile.md b/docs/docs-content/profiles/cluster-profiles/export-import-cluster-profile.md index 8f4a2d118b..cc72759920 100644 --- a/docs/docs-content/profiles/cluster-profiles/export-import-cluster-profile.md +++ b/docs/docs-content/profiles/cluster-profiles/export-import-cluster-profile.md @@ -86,13 +86,13 @@ Use these steps to import the profile to one or more projects or tenants. 10. In the **Select repositories** window that displays when the profile is successfully validated, use the **drop-down Menus** to select one or more repositories in which profile packs exist so Palette can fetch them. -:::warning + :::warning -If any of the packs are missing in the target environment, profile import will not proceed. + If any of the packs are missing in the target environment, profile import will not proceed. -::: + ::: -![Screenshot of the Select repositories window.](/profiles_cluster-profiles_import-select-repos.webp) + ![Screenshot of the Select repositories window.](/profiles_cluster-profiles_import-select-repos.webp) 11. Click the **Confirm** button to complete the import. diff --git a/docs/docs-content/registries-and-packs/advanced-configuration.md b/docs/docs-content/registries-and-packs/advanced-configuration.md index cd2cd7c8bb..054af63e7e 100644 --- a/docs/docs-content/registries-and-packs/advanced-configuration.md +++ b/docs/docs-content/registries-and-packs/advanced-configuration.md @@ -12,8 +12,6 @@ configuration options through the usage of environment variables. The configuration file is divided into keys and values. The following is an example of a YAML configuration. -
- ```yaml version: 0.1 log: @@ -26,20 +24,14 @@ The key `version` has a number value. The `log` key has a value with multiple ke To override the value of `log.level` you can specify an environment variable named `REGISTRY_LOG_LEVEL`. -
- ```shell export REGISTRY_LOG_LEVEL=debug ``` -
- ## Default Configuration The docker image for the registry contains the following default configuration values. -
- ```yaml version: 0.1 log: @@ -72,8 +64,6 @@ For example, you can start the docker container image with the following environ the basic auth realm and logging level. In the following example, the `-e` flag is used to provide environment variables to the container. -
- ```bash docker run -d \ --rm \ @@ -83,21 +73,19 @@ docker run -d \ -e REGISTRY_LOG_LEVEL=debug \ -e REGISTRY_AUTH=htpasswd \ -e REGISTRY_AUTH_HTPASSWD_REALM="My Enterprise Realm" \ - gcr.io/spectro-images-public/release/spectro-registry:3.4.0 + gcr.io/spectro-images-public/release/spectro-registry:4.0.2 ``` Alternatively, you can start the container by mounting a directory with a new configuration file and pointing the server command to the configuration file. -
- ```shell docker run -d \ --rm \ -p 443:5000 \ --name spectro-registry \ --volume $(pwd)/myconfig.yml:/etc/myconfig.yml \ - gcr.io/spectro-images-public/release/spectro-registry:3.4.0 \ + gcr.io/spectro-images-public/release/spectro-registry:4.0.2 \ serve /etc/spectropaxconfig/myconfig.yml ``` @@ -118,8 +106,6 @@ storage: If you are using S3 Storage, ensure you specify the required S3 parameters. -
- ```yaml storage: cache: @@ -139,8 +125,6 @@ storage: You can also use ephemeral storage. We recommend using ephemeral storage for testing purposes. Production environments should use object storage or a file system. -
- ```yaml storage: inmemory ``` @@ -150,8 +134,6 @@ storage: inmemory You can configure basic HTTP Auth. Basic Auth requires providing the pack registry server with an httppasswd file containing the credentials. -
- ```yaml auth: htpasswd: @@ -167,8 +149,6 @@ The following options are available for modifying HTTP transport: For serving content on all interfaces on port 5000: -
- ```yaml http: addr: :5000 @@ -176,8 +156,6 @@ http: Alternatively, the server can bind to a single IP and different port: -
- ```yaml http: addr: 192.168.122.77:25000 @@ -187,8 +165,6 @@ http: The following headers are the default, and can be overridden: -
- ```yaml http: headers: @@ -209,8 +185,6 @@ validation by the Let's Encrypt services. Check out the [Deploy Pack Registry Server with Let's Encrypt](adding-a-custom-registry.md#deploy-pack-registry-server-with-lets-encrypt) guide to learn more. -
- ```yaml http: addr: :5000 @@ -227,8 +201,6 @@ volume where the certificates are permanently stored. Use the option `cachefile` You can specify custom certificates by providing the file path to the certificate files. -
- ```yaml http: tls: diff --git a/docs/docs-content/registries-and-packs/deploy-pack.md b/docs/docs-content/registries-and-packs/deploy-pack.md index 00ef46b1c3..fa12197cec 100644 --- a/docs/docs-content/registries-and-packs/deploy-pack.md +++ b/docs/docs-content/registries-and-packs/deploy-pack.md @@ -336,7 +336,7 @@ The image below shows the registry server successfully exposed via Ngrok. ![Screenshot of registry server exposed via ngrok](/tutorials/deploy-pack/registries-and-packs_deploy-pack_ngrok-start.webp) Check if the registry server is accessible from outside the tutorial container by visiting the `/health` endpoint. Open -your browser and go to _https://Your-URL-Here/health_, replacing the base URL with the Ngrok URL output. You should get +your browser and go to `https://Your-URL-Here/health`, replacing the base URL with the Ngrok URL output. You should get a `{"status":"UP"}` response.
@@ -406,9 +406,6 @@ In the **Projects** section, click on **New Project**. A project in Harbor conta This tutorial uses **spectro-oci-registry** as the project name. Keep the default settings for the remaining configuration options and proceed by clicking **OK**. -Next, create another project called **spectro-packs**. This specific project is required to complete the validation of -your registry in Palette. - ![Screenshot of Harbor project](/tutorials/deploy-pack/registries-and-packs_deploy-pack_harbor-project.webp)
diff --git a/docs/docs-content/registries-and-packs/registries/oci-registry/add-pack-oci/add-pack-oci-basic.md b/docs/docs-content/registries-and-packs/registries/oci-registry/add-pack-oci/add-pack-oci-basic.md new file mode 100644 index 0000000000..6fd9a64a02 --- /dev/null +++ b/docs/docs-content/registries-and-packs/registries/oci-registry/add-pack-oci/add-pack-oci-basic.md @@ -0,0 +1,161 @@ +--- +sidebar_label: "Add a Pack to a Basic OCI Registry" +title: "Add a Pack to a Basic OCI Registry" +description: "Learn how to upload packs to a Basic OCI registry." +icon: "" +hide_table_of_contents: false +sidebar_position: 60 +--- + +This guide explains how to upload packs to an OCI registry that supports basic authentication. You will learn how to +authenticate to your Basic OCI registry, push a custom pack, and configure the registry in Palette. + +## Prerequisites + +- Tenant administrator access. + +- Custom pack files available on your computer. Refer to the [Add an Add-on Pack](../../../adding-add-on-packs.md) guide + to learn how to create a custom pack. + +- A private OCI registry that supports basic authentication. This guide uses [Harbor](https://goharbor.io/) as an + example. Learn how to set up a Harbor registry server using the + [Harbor Installation and Configuration](https://goharbor.io/docs/2.9.0/install-config/) guide. + +- [ORAS](https://oras.land/docs/installation/) v1.0.0 installed and available. + + :::warning + + This specific version of ORAS is explicitly required for pushing packs to OCI registries. + + ::: + +- [Tar](https://www.gnu.org/software/tar/) installed and available. + +- If your OCI registry is using a self-signed certificate or a certificate that is not signed by a trusted Certificate + Authority (CA), you will need the certificate to add the registry to Palette. + +## Upload Pack to a Basic OCI Registry + +Palette supports all OCI-compliant registries that use basic authentication. This guide uses a +[Harbor](https://goharbor.io/) registry as an example. Follow the steps described below to set up your Harbor registry, +push the pack, and configure the registry in Palette. + +1. Access the Harbor registry server domain on your web browser and log in using your credentials. + + :::tip + + If you have kept the default credentials, the username and password are **admin** and **Harbor12345**, respectively. + + ::: + +2. In the **Projects** section, click **New Project**. A project in Harbor contains all repositories of an application. + +3. Give your project a name and keep the default settings for the remaining configuration. Click **OK** to proceed. + +4. In your terminal, export the `HARBOR_ADDRESS` variable, which will store your Harbor server hostname. Do not include + the "https://" prefix. For example, `harbor.yourdomain.com`. + + ```bash + export HARBOR_ADDRESS= + ``` + +5. Issue the command `oras login` to log in to your Harbor registry. When prompted, enter your username and password. + + ```bash + oras login $HARBOR_ADDRESS + ``` + + If the login is successful, you will receive a confirmation message. + + ```text hideClipboard + Login Succeeded + ``` + +6. Next, export the variables required for creating the Harbor repository and pushing the pack. + + - `HARBOR_PROJECT` - Specify a name for the Harbor project that will store the repositories and the pack files. For + example, `spectro-oci-registry`. + - `NAME` - The pack's name, which must match the `name` parameter in the **pack.json** file. + - `VERSION` - The pack's version, which must match the `version` parameter in the **pack.json** file. + + ```bash + export HARBOR_PROJECT= + export NAME= + export VERSION= + ``` + +7. Navigate to the directory containing the folder with the pack files. + +8. Before pushing the pack to the registry, compress the contents of the pack folder into an archive file. Issue the + command below to create the archive file. Replace `` with the name of the folder containing + the pack files. + + ```bash + tar -czvf $NAME-$VERSION.tar.gz + ``` + +9. Create a base path repository to store your pack repositories. Note that Harbor creates a repository when the user + pushes an artifact to a project. + + ```bash + oras push $HARBOR_ADDRESS/$HARBOR_PROJECT/spectro-packs/archive + ``` + + The command output is similar to the following. + + ```text hideClipboard + Uploading empty artifact + Pushed [registry] harbor.yourdomain.com/spectro-oci-registry/spectro-packs/archive + Digest: sha256:93239180c18b0b6fa99b1f0463853165bdf9fc9c6a69eff3d7545f9852b6c86e + ``` + +10. Now, proceed to create the pack repository and push your pack to the Harbor registry. + + ```bash + oras push $HARBOR_ADDRESS/$HARBOR_PROJECT/spectro-packs/archive/$NAME:$VERSION $NAME-$VERSION.tar.gz + ``` + + The command output is similar to the following. + + ```text hideClipboard + Uploading ba65d21e72f1 your-pack-name-1.0.0.tar.gz + Uploaded ba65d21e72f1 your-pack-name-1.0.0.tar.gz + Pushed [registry] harbor.yourdomain.com/spectro-oci-registry/spectro-packs/archive/your-pack-name:1.0.0 + Digest: sha256:448bc5d5ba0675dfc1906f442c5f0f294e21b85b62cea1ede789ba039c7b3f80 + ``` + +:::warning + +Make sure to include the **spectro-packs/archive** path in _all_ your repositories. Palette expects this namespace in +custom OCI registries. + +::: + +11. After pushing the pack to the Harbor registry, follow the steps in [Add OCI Packs Registry](../add-oci-packs.md) to + add your Harbor registry to Palette. + + :::info + + Palette automatically synchronizes the registries. However, you can manually trigger the synchronization if needed. + From the **OCI Registries** page, click the **three-dot Menu** next to the registry name you added and select + **Sync**. + + ::: + +## Validate + +Follow the steps below to validate that your pack has been successfully pushed to your OCI registry. + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. From the left **Main Menu**, click on **Profiles**. + +3. Click **Add Cluster Profile**. + +4. Provide a name and select the type **Add-on**. + +5. In the following screen, click **Add Pack**. + +6. Select the Basic OCI registry you added in the **Registry drop-down Menu**. + +7. Verify the pack you uploaded to the Harbor registry is displayed. diff --git a/docs/docs-content/registries-and-packs/registries/oci-registry/add-pack-oci/add-pack-oci-ecr.md b/docs/docs-content/registries-and-packs/registries/oci-registry/add-pack-oci/add-pack-oci-ecr.md new file mode 100644 index 0000000000..1541b923f3 --- /dev/null +++ b/docs/docs-content/registries-and-packs/registries/oci-registry/add-pack-oci/add-pack-oci-ecr.md @@ -0,0 +1,162 @@ +--- +sidebar_label: "Add a Pack to an ECR Registry" +title: "Add a Pack to an ECR Registry" +description: "Learn how to upload packs to an ECR registry." +icon: "" +hide_table_of_contents: false +sidebar_position: 70 +--- + +This guide explains how to upload packs to the [AWS Elastic Container Registry (ECR)](https://aws.amazon.com/ecr/). You +will learn how to authenticate to your AWS ECR registry, push a custom pack, and configure the registry in Palette. + +## Prerequisites + +- Tenant administrator access. + +- Custom pack files available on your computer. Refer to the [Add an Add-on Pack](../../../adding-add-on-packs.md) guide + to learn how to create a custom pack. + +- A private [AWS (ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html) registry. Each AWS + account is provided with a default private ECR registry. + +- An Identity and Access Management (IAM) user with the following permissions. + + - `ecr:CreateRepository` + - `ecr:InitiateLayerUpload` + - `ecr:CompleteLayerUpload` + - `ecr:InitiateLayerUpload` + - `ecr:PutImage` + - `ecr:UploadLayerPart` + - `ecr:BatchCheckLayerAvailability` + - `ecr:ListImages` + - `ecr:DescribeImages` + - `ecr:BatchDeleteImage` + - `ecr:DeleteRepository` + +- The following software installed on your computer. + + - [ORAS](https://oras.land/docs/installation/) v1.0.0 + + :::warning + + This specific version of ORAS is explicitly required for pushing packs to OCI registries. + + ::: + + - [Tar](https://www.gnu.org/software/tar/) + - [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) + +## Upload Pack to an ECR Registry + +Follow the steps described below to set up your ECR registry, push the pack, and configure the registry in Palette. + +1. Open up a terminal session and export your AWS credentials as environment variables to authenticate with your AWS + account. + + ```bash + export AWS_ACCESS_KEY_ID= + export AWS_SECRET_ACCESS_KEY= + export AWS_DEFAULT_REGION= + ``` + +2. Additionally, export the required variables for creating the ECR repository and pushing the pack. + + - `REPOSITORY_NAME` - Specify a name for the repository that will store the pack files. For example, + `spectro-oci-registry`. + - `NAME` - The pack's name, which must match the `name` parameter in the **pack.json** file. + - `VERSION` - The pack's version, which must match the `version` parameter in the **pack.json** file. + - `ACCOUNT_ID` - Your AWS account ID, containing only numerical digits and no dashes. + + ```bash + export REPOSITORY_NAME= + export NAME= + export VERSION= + export ACCOUNT_ID= + ``` + +3. Issue the command below to create a base path repository to store your pack repositories. + + ```bash + aws ecr create-repository --repository-name $REPOSITORY_NAME/spectro-packs/archive --region $AWS_DEFAULT_REGION + ``` + +4. Next, proceed to create the repository to store your pack. + + ```bash + aws ecr create-repository --repository-name $REPOSITORY_NAME/spectro-packs/archive/$NAME --region $AWS_DEFAULT_REGION + ``` + +:::warning + +Make sure to include the **spectro-packs/archive** path in _all_ your repositories. Palette expects this namespace in +custom OCI registries. + +::: + +5. After creating the ECR repositories, issue the command below to authenticate to your ECR registry. The + `aws ecr get-login-password` generates an authorization token, which is then passed to the `oras login` command. + + ```bash + aws ecr get-login-password --region $AWS_DEFAULT_REGION | oras login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com + ``` + + If the login is successful, you will receive a confirmation message. + + ```text hideClipboard + Login Succeeded + ``` + +6. Navigate to the directory containing the folder with the pack files. + +7. Before pushing the pack to the ECR registry, compress the contents of the pack folder into an archive file. Issue the + command below to create the archive file. Replace `` with the name of the folder containing + the pack files. + + ```bash + tar -czvf $NAME-$VERSION.tar.gz + ``` + +8. Push the pack to the ECR registry. + + ```bash + oras push $ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$REPOSITORY_NAME/spectro-packs/archive/$NAME:$VERSION $NAME-$VERSION.tar.gz + ``` + + The command output is similar to the following. + + ```text hideClipboard + Uploading ba65d21e72f1 your-pack-name-1.0.0.tar.gz + Uploaded ba65d21e72f1 your-pack-name-1.0.0.tar.gz + Pushed [registry] 123456789.dkr.ecr.us-east-1.amazonaws.com/spectro-packs-oci/spectro-packs/archive/your-pack-name:1.0.0 + Digest: sha256:9067f964301c2b8e7a702fdbee35f5ca20a46695ef121e760e38967a2dd7cc4f + ``` + +9. After pushing the pack to the ECR registry, follow the steps in [Add OCI Packs Registry](../add-oci-packs.md) to add + your ECR registry to Palette. + + :::info + + Palette automatically synchronizes the registries. However, you can manually trigger the synchronization if needed. + From the **OCI Registries** page, click the **three-dot Menu** next to the registry name you added and select + **Sync**. + + ::: + +## Validate + +Follow the steps below to validate that your pack has been successfully pushed to your OCI registry. + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. From the left **Main Menu**, click on **Profiles**. + +3. Click **Add Cluster Profile**. + +4. Provide a name and select the type **Add-on**. + +5. In the following screen, click **Add Pack**. + +6. Select the ECR registry you added in the **Registry drop-down Menu**. + +7. Verify the pack you uploaded to the ECR registry is displayed. diff --git a/docs/docs-content/registries-and-packs/registries/oci-registry/add-pack-oci/add-pack-oci.md b/docs/docs-content/registries-and-packs/registries/oci-registry/add-pack-oci/add-pack-oci.md new file mode 100644 index 0000000000..374ea4d96b --- /dev/null +++ b/docs/docs-content/registries-and-packs/registries/oci-registry/add-pack-oci/add-pack-oci.md @@ -0,0 +1,24 @@ +--- +sidebar_label: "Add a Pack to an OCI Registry" +title: "Add a Pack to an OCI Registry" +description: "Learn how to upload packs to OCI registries." +icon: "" +hide_table_of_contents: false +sidebar_position: 60 +--- + +Palette supports the use of Open Container Initiative (OCI) registries. You can register a private OCI registry with +Palette, publish custom packs, and then use the packs in your cluster profiles. + +Two types of OCI authentication are available: registries that support basic authentication, such as +[Harbor](https://goharbor.io/), and [AWS Elastic Container Registry (ECR)](https://aws.amazon.com/ecr/), which is +supported as a third-party registry provider. To upload packs to OCI registries, you can use +[ORAS](https://oras.land/docs/), a CLI tool for pushing and pulling OCI artifacts to and from OCI registries. To learn +more about OCI registries and how they work in Palette, refer to the [OCI Registry](../oci-registry.md) page. + +## Resources + +The following pages provide detailed instructions on how to push packs to OCI-compliant registries. + +- [Add a Pack to a Basic OCI Registry](./add-pack-oci-basic.md) +- [Add a Pack to an ECR Registry](./add-pack-oci-ecr.md) diff --git a/docs/docs-content/registries-and-packs/spectro-cli-reference.md b/docs/docs-content/registries-and-packs/spectro-cli-reference.md index d866969d7f..59bef4e1d2 100644 --- a/docs/docs-content/registries-and-packs/spectro-cli-reference.md +++ b/docs/docs-content/registries-and-packs/spectro-cli-reference.md @@ -33,7 +33,7 @@ The Spectro CLI tool is currently available for OSX and Linux. ```bash - wget https://spectro-cli.s3.amazonaws.com/v4.2.0/osx/spectro + wget https://spectro-cli.s3.amazonaws.com/v4.3.0/osx/spectro ``` @@ -41,7 +41,7 @@ The Spectro CLI tool is currently available for OSX and Linux. ```bash - wget https://spectro-cli.s3.amazonaws.com/v4.2.0/linux/spectro + wget https://spectro-cli.s3.amazonaws.com/v4.3.0/linux/spectro ``` @@ -87,8 +87,6 @@ Authenticate user with Spectro Cloud pack registry by using the login command: spectro registry login spectro.io:5000 --insecure --default ``` -
- #### Arguments SERVER - Spectro Cloud pack registry server in the format [host:port] @@ -106,8 +104,6 @@ If you have access to the pack registry's Certificate Authority (CA) certificate ::: -
- ## Pack The following subcommands are available for the `pack` command. @@ -136,8 +132,6 @@ PACK_NAME - Name of the pack TARGET_DIR - Directory containing the pack data -r, --registry-server - Override the default Spectro registry -
- ### Push Upload the pack content from the pack source dir to the Spectro Cloud pack registry. @@ -177,8 +171,6 @@ enabled. --skip-digest-check - By default, the _force_ option can push the pack only if the pack content digest is different than the registry pack digest. So the _skip digest_ command can be used to skip the comparison of the digests. -
- ### List List all the packs from the Spectro Cloud pack registry: @@ -197,8 +189,6 @@ List all the packs from the Spectro Cloud pack registry: spectro pack ls spectro.io:5000 --name ubuntu --registry-server spectro.io:5000 ``` -
- #### Flags -n, --name string - packs can be filtered by pack name @@ -275,8 +265,6 @@ TARGET_LABEL - Target tag label. -r, --registry-server string - To override the default Spectro Cloud pack registry. -
- To remove a tag from a pack which is already pushed to the pack registry use the `pack tag delete` subcommand. ```bash @@ -319,5 +307,5 @@ spectro version ``` ```bash hideClipboard -Spectro ClI Version 4.2.0 linux/amd64 +Spectro CLI Version 4.3.4 linux/amd64 ``` diff --git a/docs/docs-content/release-notes.md b/docs/docs-content/release-notes.md index dd93b915d7..80b4de99fd 100644 --- a/docs/docs-content/release-notes.md +++ b/docs/docs-content/release-notes.md @@ -11,427 +11,365 @@ tags: ["release-notes"] -## Feb 26, 2024 - Release 4.2.13 +## April 14, 2024 - Release 4.3.0 - 4.3.6 -### Bug Fixes +This release contains several new exciting Technical Preview features, including the Edge Local UI and Cluster Profile +variables. Other notable features include enhancements to the Palette CLI, support for deploying Konvoy clusters, Azure +AKS support for VerteX, and adding multiple system administrators to the Palette and VerteX system consoles. Check out +the following sections for a complete list of features, improvements, and known issues. -- Fixed an issue where AWS VPC CNI would not work with Kubernetes 1.28 when using AWS EKS. +### Security Notices -- Fixed an issue with the Kubernetes Dashboard cookies and internal Palette ingress configuration that caused the - Kubernetes Dashboard to fail to load. +- Kubernetes version 1.27.9 is deprecated due to a security vulnerability. We recommend upgrading to a newer version of + Kubernetes, such as 1.27.11, to avoid issues. -- Fixed an issue with MicroK8s failing to launch pods due to a mismatch in node affinity labels. +- Review the [Security Bulletins](./security-bulletins/cve-reports.md) page for the latest security advisories. -- Resolved an issue with MAAS clusters failing to deploy when the default image endpoint is not set in an airgap - environment - -- Resolved the remaining MAAS node upgrade issues 4.2.12 did not address. - -## Feb 16, 2024 - Release 4.2.12 - -### Bug Fix - IaaS Cluster Repaves Causing Cluster Downtime - -#### Affected services - -IaaS clusters in Palette 4.2.x prior to 4.2.12, including Palette SaaS, self-hosted Palette/VerteX, as well as dedicated -instances. Affected cluster types include the following: - -- AWS IaaS (not EKS) -- Azure IaaS (not AKS) -- Google IaaS (not GKE) -- MAAS -- vSphere -- OpenStack - -Managed Kubernetes clusters on EKS, GKE and AKS are not affected. Edge clusters are not affected. - -#### Issue Summary - -We identified an issue related to cluster repaves in Palette 4.2.x. During a cluster upgrade that required a repave, the -Palette Agent deployed within the clusters would delete all the worker nodes within a worker pool before provisioning -new worker nodes. This results in the worker pool being down during an upgrade. All workloads within the pool will be -offline during the upgrade. - -If the cluster is configured to enable updating worker pools in parallel, then this can result in all services on the -cluster becoming unavailable. - -#### Customer Guidance - -This issue has been addressed in Palette 4.2.12 and its corresponding Palette Agent version 4.2.4. Use the following -steps to identify whether your cluster uses an affected agent version. - -1. Log in to [Palette](https://console.spectrocloud.com/). -2. From the left **Main Menu**, click on **Clusters**. Select your cluster to access the cluster details page. -3. At the bottom of the cluster details page, the Palette agent version used by your cluster is displayed. If your Agent - version is any of the following versions, your cluster is still susceptible to this issue: 4.2.0, 4.2.1, 4.2.2, - 4.2.3. - -:::warning - -Ensure that you do not initiate any cluster repaves as long as you are using an affected agent version. Changes in the -OS or the Kubernetes layer would initiate an cluster repave attempt. When you get the cluster repave notification, -reject the repave. - -::: - -**If you are not using an affected agent version**, no action is required on your part. If you plan to upgrade to 4.2.x -in the future, ensure you upgrade to a version of Palette that's 4.2.12 or later. - -**If you are using an affected agent version**, first make sure that your Palette instance version is 4.2.12 or newer. -Once you have confirmed your Palette version, unpause Agent upgrades for your cluster if they are paused. To learn how -to toggle agent upgrades, refer to -[Pause Platform Upgrades](./clusters/cluster-management/platform-settings/pause-platform-upgrades.md). In 5 - 10 -minutes, the Palette agent will upgrade to a new version that includes the bug fix. If the agent does not upgrade for an -extended period of time, contact support@spectrocloud.com. +### Palette -## February 3, 2024 - Release 4.2.9 +#### Features -### Bug Fixes + +- 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 using Local UI. Profile variables allow you to define variable + types, apply validation, and narrow the scope of variables to a cluster profile. + Check out [Cluster Profile Variables](./profiles/cluster-profiles/create-cluster-profiles/define-profile-variables.md) to learn more about + profile variables. + +- MAAS clusters using Palette eXtended Kubernetes (PXK) now support the ability to specify a custom MAAS API endpoint + URL and port during cluster creation. This feature allows you to use a custom DNS server or Virtual IP (VIP) that is + not resolvable outside of the MAAS network. Refer to the [PXK](./integrations/kubernetes.md#custom-maas-endpoint) + documentation for more details. + +- Support for [Konvoy](./integrations/konvoy.md) is now available in Palette. You can create a custom image using the + Konvoy image builder project and use it to deploy a Konvoy cluster. Check out the + [Red Hat Linux Enterprise and Konvoy](./byoos/usecases/vmware/konvoy.md) guide to learn how to create a custom image + and deploy a Konvoy cluster. + +- Multiple system administrators can now be added to the self-hosted Palette system console to help manage and maintain + the Palette instance. The feature helps organizations embrace the separation of duties by delegating different + responsibilities to system administrators. Refer to the + [System Administrators](./enterprise-version/system-management/account-management/account-management.md#system-administrators) + page to learn more about system administrators. -- Fixed an issue that caused errors when creating pods after certificate renewals. -- Resolved image pull errors from the AWS ECR registry. +#### Improvements -## January 25, 2024 - Release 4.2.7 +- Nutanix cluster deployments now display YAML variables and expose them as input fields in the User + Interface (UI) during the cluster deployment process. Previously, the UI did not display the YAML variables for + Nutanix clusters and users had to update the machine template YAML manually. You can learn more about Nutanix in the + [Create and Manage Nutanix Cluster](./clusters/data-center/nutanix/create-manage-nutanix-cluster.md) guide. -### Bug Fixes +- The cluster deployment user flow experience has been improved to streamline the cluster creation process. You can now + select between IaaS and managed Kubernetes clusters from the initial platform selection screen. The update combines + the selection of platform and type of Kubernetes cluster while also detecting and notifying if a prerequisite is not + met. -- Fixed an issue that caused MinIO S3 URL setting to be missing in backup location settings. -- Fixed an issue that prohibited updating Helm packs in cluster profiles. -- Fixed an issue that caused certain OCI registries created before the Palette 4.2 upgrade to be unlisted. -- Fixed an issue that caused HTTP 400 errors when visiting the - [Kubernetes Dashboard](./integrations/kubernetes-dashboard.md). The issue was caused by an internal cookie size limit - that was insufficient for the Kubernetes Dashboard. +- When installing a Private Cloud Gateway (PCG) or a self-hosted Palette instance through the Palette CLI, you can now + benefit from additional checks and user feedback that ensure the installation process is successful. This new feedback + experience gives you a better understanding of the components being installed and the progress of the installation. In + case of a failure, the failed component is highlighted, and an error message is displayed. -## January 9, 2024 - Release 4.2.4 +- Imported clusters now support updating network proxy configurations as a Day-2 operation. -### Bug Fixes +- The [Validator AWS](https://github.com/spectrocloud-labs/validator-plugin-aws) plugin now reports IAM permissions + issues that are caused by + [Service control policies](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html). + Refer to the Palette CLI [Validator](./palette-cli/commands/validator.md) page to learn how to use Validator with the + Palette CLI. -- An invalid toggle User Interface option that appeared in the Edge cluster creation process when defining node groups - has been removed. +- Packs that are marked as _Disabled_ are no longer displayed in the cluster profile creation wizard. Existing cluster + profiles containing disabled packs are not affected and continue to work as expected. Refer to the + [maintenance policy](./integrations/maintenance-policy.md#pack-deprecations) page to learn more. -## January 6, 2024 - Release 4.2.0 +- Several enhancements have been added to the Palette CLI [Validator](./palette-cli/commands/validator.md) command that + improves the user experience. The enhancements include a Validator upgrade feature, a describe subcommand that + displays results more clearly, an interactive re-configure option, the ability to restart the wizard, and more. -Palette 4.2.0 is a release that includes new features and various improvements. New features include support for Nutanix -clusters, automatic SSL certificate renewal, and enhanced cluster repave control and mitigation. Improvements include -support for MicroK8S on MAAS clusters, several network enhancements for Edge deployments, a new differential editor that -helps you identify cluster profile changes, and support for a local image registry for Edge clusters. Check out the -notes below to learn more about the new features and improvements. +- Cox Edge has been removed as a supported platform for Edge clusters. Cox stopped supporting the platform and is no + longer available for new deployments. All Cox Edge-related resources and API endpoints have been removed. -### Palette +- PCG deployments using the Palette CLI for MAAS and VMware vSphere now use Kubernetes version 1.27.11. Palette CLI + installs targeting an OpenStack environment will use Kubernetes version 1.24.10. Existing PCG clusters installed + through Palette CLI will be eligible for a cluster profile update. We recommend you review the + [Upgrade a PCG](./clusters/pcg/manage-pcg/pcg-upgrade.md) guide to learn more about updating a PCG. -#### Features +- Self-hosted Palette instances now use Kubernetes version 1.27.11. This new version of Kubernetes will cause node + repave events during the upgrade process. If you have multiple self-hosted Palette instances in a VMware environment, + take a moment and review the [Known Issues](#known-issues) section below for potential issues that may arise during + the upgrade process. -- Palette now supports the cloud provider, [Nutanix](https://www.nutanix.com/), as a Technical Preview feature. You can - deploy Kubernetes clusters on Nutanix using Palette. Technical Preview features are subject to change as we continue - to improve the integration. Refer to the [Nutanix](./clusters/data-center/nutanix/nutanix.md) resource to learn more - about deploying Nutanix clusters with Palette. - -- Automatic SSL certificate renewal is now supported for clusters deployed through Palette. In the past, this was a - manual action that had to be performed by the user, which also caused node repaves. Palette will now automatically - renew the certificate 30 days before the expiration date without triggering a node repave. This feature is available - in all supported infrastructure providers except for Edge. For more information, refer to the - [Certificate Management](./clusters/cluster-management/certificate-management.md) resource. - -- Enhanced cluster repave control and mitigation. In the Palette 4.1 release, repave notification warnings become - available through the User Console (UI). In this release, cluster administrators, project administrators, and tenant - administrators must acknowledge the repave notification and decide whether to proceed with the action. This feature - helps prevent accidental node upgrades that may cause downtime and provides a way to mitigate repaves by allowing - administrators to cancel the action that will trigger a repave. - -- A Pack's README file is displayed during the cluster profile creation and editing process. You can find additional - information about a pack in the [Packs List](./integrations/integrations.mdx) page. - -- Palette CLI now supports integration with [Validator](https://github.com/spectrocloud-labs/validator), an open-source - framework that you can use to validate your self-hosted Palette, VerteX, or workload cluster environment. Validator - performs Day 0-2 validation and configuration drift detection in a composable manner across various systems. Use the - `palette validator` command to verify your environment before installing a self-hosted instance of Palette or VerteX. - You can also use Validator to verify the environment requirements for deploying a cluster. For more information, refer - to the [Validator](./palette-cli/commands/validator.md) CLI reference. - -- Support for passkeys is now available for the self-hosted Palette admin user. When accessing the system console, you - can now use passkeys to authenticate to the admin user account. For more information, refer to the - [System Console Credentials](./enterprise-version/system-management/account-management/credentials.md) resource. - -- You can start a local Palette documentation server by using the Palette CLI's `docs` command. This feature is useful - when you want to access Palette documentation offline. For more information, refer to the - [Docs](./palette-cli/commands/docs.md) command page. - -#### Improvements +#### Known Issues -- MicroK8S is now available for MAAS clusters. Create a cluster profile with MicroK8S as the Kubernetes pack to deploy a - MAAS cluster with MicroK8S. +- Conducting cluster node scaling operations on a cluster undergoing a backup can lead to issues and potential + unresponsiveness. To avoid this, ensure no backup operations are in progress before scaling nodes or performing other + cluster operations that change the cluster state. -- An improved differential editor is now available. The new editor provides a side-by-side comparison of the changes - that will be applied to the cluster profile. The editor also identifies the YAML customizations you have added and - guides you through carrying over the customizations to the new version of the YAML. The ability to undo changes and - accept all changes is also available. +- Palette automatically creates a security group for worker nodes using the format `-node`. If a security + group with the same name already exists in the VPC, the cluster creation process fails. To avoid this, ensure that no + security group with the same name exists in the VPC before creating a cluster. -- When updating a deployed cluster profile or an active cluster's profile, the new differential editor is available to - help you identify the changes that will be applied to the cluster profile. +- K3s version 1.27.7 has been marked as _Deprecated_. This version has a known issue that causes clusters to crash. + Upgrade to a newer version of K3s to avoid the issue, such as versions 1.26.12, 1.28.5, and 1.27.11. You can learn + more about the issue in the [K3s GitHub issue](https://github.com/k3s-io/k3s/issues/9047). -- Private Cloud Gateway (PCG) deployments now use Kubernetes version 1.26. Previously, the default Kubernetes version - was 1.24. Use the latest version of the [Palette CLI](./spectro-downloads.md#palette-cli) to install PCG clusters. - Existing Private Cloud Gateway deployments will require a manual reconciliation of the cluster profile to update the - Kubernetes version to 1.26. Make sure you carry over any customizations the current cluster profile may have, such as - pod CIDR and service CIDR before updating the cluster profile with the new Kubernetes version. Refer to the - [Update a Cluster Profile](./profiles/cluster-profiles/modify-cluster-profiles/update-cluster-profile.md#update-the-pack-version) - guide to learn more on reconciling a cluster profile pack layer change. +- When deploying a multi-node AWS EKS cluster with the Container Network Interface (CNI) + [Calico](https://docs.spectrocloud.com/integrations/calico), the cluster deployments fail. A workaround is to use the + AWS VPC CNI in the interim while the issue is resolved. -#### Known Issues +- If a Kubernetes cluster deployed onto VMware is deleted, and later re-created with the same name, the cluster creation + process fails. The issue is caused by existing resources remaining inside PCG, or System PCG, that are not cleaned up + during the cluster deletion process. Refer to the + [VMware Resources Remain After Cluster Deletion](./troubleshooting/pcg.md#scenario---vmware-resources-remain-after-cluster-deletion) + troubleshooting guide for resolution steps. -- The ability to change the underlying node type of a node pool is not available for Google Cloud Platform GKE clusters. + -- Clusters launched in VMware vSphere with the Container Network Interface (CNI) Cilium, lose node-to-node connectivity - when the vSphere adapter is configured to use VMXNET3. This is a known issue with Cilium and VMXNET3. Refer to the - [GitHub issue discussion](https://github.com/cilium/cilium/issues/21801) to learn more about this issue. +- In a VMware environment, self-hosted Palette instances do not receive a unique cluster ID when deployed, which can + cause issues during a node repave event, such as a Kubernetes version upgrade. Specifically, Persistent Volumes (PVs) + and Persistent Volume Claims (PVCs) will experience start problems due to the lack of a unique cluster ID. To resolve + this issue, refer to the + [Volume Attachment Errors Volume in VMware Environment](./troubleshooting/palette-upgrade.md#volume-attachment-errors-volume-in-vmware-environment) + troubleshooting guide. -- Enabling [passkeys](/enterprise-version/system-management/account-management/credentials.md) in a self-hosted Palette - instance will cause JSON Web Tokens (JWT) returned by the system API endpoint `/v1/auth/syslogin` to be invalid. Refer - to the - [Passkeys and API Access](./enterprise-version/system-management/account-management/credentials.md#passkeys-and-api-access) - resource for more information on accessing the system API when passkeys are enabled. This issue does not affect the - regular Palette API used by clusters and users. +- Day-2 operations related to infrastructure changes, such as modifying the node size, and node count, when using + MicroK8s are not taking effect. ### Edge #### Breaking Changes -- Edge hostnames are not allowed to have special characters. Validation has been added to prevent issues arising from - using special characters in host names. Edge hostnames must comply with - [RFC1035](https://datatracker.ietf.org/doc/html/rfc1035), refer to the - [Edge Installer Configuration](./clusters/edge/edge-configuration/edge-configuration.md) and review the `name` - parameter for more information. +- Edge hosts now require a minimum storage capacity of 100 GB. The previous minimum storage capacity was 60 GB. Refer to + the [Minimum Device Requirements](./clusters/edge/architecture.md#minimum-device-requirements) page to learn more + about the minimum requirements for Edge hosts. #### Features -- Overlay support for DHCP is now available as a Tech Preview feature. Edge clusters can now establish an VxLAN overlay - network during cluster creation, and Edge hosts can self-discover the overlay network within a single ethernet - broadcast domain. Clusters using this feature will remain operational when the host IP addresses change unexpectedly. - Check out the [Enable Overlay Network](clusters/edge/networking/vxlan-overlay.md) resource for more information. +- The Edge Local UI is a new feature that provides a local management interface for Edge clusters in an airgap + environment. The local UI is a web-based interface that allows you to manage Edge hosts in your network locally, + upload content bundles containing images, Helm charts, and packs, and create Edge clusters locally in disconnected + environments without connections to a Palette instance. To get started with local UI, refer to the + [Edge Local UI](./clusters/edge/local-ui/local-ui.md) documentation. -- Local registry support is now available as a Tech Preview feature. You can deploy a self-hosted - [Harbor registry](https://goharbor.io) on your Edge cluster and use the registry to store images for your workloads - and initialize a cluster's other edge host nodes. Using a local registry can help you reduce the amount of data - transferred over the network, cache images locally, and provide a backup for when internet access is unavailable. - -- Edge Kubernetes network interface management support. You can now specify the network interface for your edge hosts - versus relying on the default interface selected by Kubernetes. This feature is useful when you have multiple network - interfaces on your edge hosts and want to use a specific interface for your workloads or if you are using the new - overlay support for DHCP. Check out the - [Create Cluster Definition](./clusters/edge/site-deployment/site-installation/cluster-deployment.md) resource for more - information on how to specify the network interface for your edge hosts during cluster deployment. + +- Edge hosts using a local [image registry through Harbor](./integrations/harbor-edge.md) can now also use a + [private external image registry](./clusters/edge/site-deployment/deploy-custom-registries/deploy-external-registry.md) alongside the local + registry. The feature allows the cluster to pull image from a private external image registry and store them in the + local registry. Images for the add-on layers of the cluster will be pulled from the local registry, reducing bandwidth + needs and improving service availability. #### Improvements +- Improved Edge cluster upgrade experience. In the past, most upgrades would trigger a repave when not always necessary. + The enhancement applies more intelligence to the upgrade process and determines if a reboot, service reload, or repave + is required. Refer to the [Edge Cluster Upgrade Behavior](./clusters/edge/upgrade-behavior.md) page to learn more + about the upgrade behavior. + - New Edge clusters can now retrieve provider images from authenticated registries. Previously, only public registries were supported for non-airgapped clusters. Now, you can use authenticated registries to store your provider images and retrieve them during cluster deployment. For more information, refer to the - [Deploy Cluster with a Private Registry](clusters/edge/site-deployment/deploy-private-registry.md) guide. - -- Extended [kube-vip customization](https://kube-vip.io/docs/installation/flags/) is now available for new Edge - clusters. You can now specify additional kube-vip configuration parameters as part of the Kubernetes pack layer - configuration. To learn more about the available kube-vip configuration parameters, refer to the - [Publish Cluster Services with Kube-vip](clusters/edge/networking/kubevip.md) resource. + [Deploy Cluster with a Private Registry](clusters/edge/site-deployment/deploy-custom-registries/deploy-private-registry.md) + guide. -#### Known Issues - -- The following known issues apply to the VxLAN network overlay feature: - - - When adding multiple nodes to an existing cluster with overlay enabled, failure to add one node will block the - addition of the other nodes. - - - When deleting an Edge host from a cluster with overlay enabled, ensure the node doesn't have the `palette-webhook` - pod on it, or the node will be stuck in the deleting state. You can use the command - `kubectl get pods --all-namespaces --output wide` to identify which node the pod `palette-webhook` is on. Reach out - to our support team [support@spectrocloud.com](mailto:support@spectrocloud.com) if you need to remove a node with - the `palette-webhook` pod on it. +- Edge hosts using RKE2 as the Kubernetes distribution can now use the + [network overlay](./clusters/edge/networking/vxlan-overlay.md) feature. -- In a multi-node cluster with [PXK-E](./integrations/kubernetes-edge.md) as the Kubernetes distribution, you cannot - change the Network Interface Card (NIC). When you add an Edge host to such a cluster, leave the NIC field as its - default value. +- Edge hosts using a local image registry through Harbor can now turn off image pulls from the local registry through + namespace annotations. Refer to the + [Harbor Edge](./integrations/harbor-edge.md#enable-image-download-from-outside-of-harbor) reference page to learn more + about the feature. -- The following known issues apply to [Harbor Edge Native Config](./integrations/harbor-edge.md) when deployed with the - [Longhorn](./integrations/longhorn.md) Container Storage Interface (CSI) driver: +#### Known issues - - The Harbor job service pod is in a _Terminating_ and _ContainerCreating_ state in an Edge Native High Availability - (HA) cluster after a Day-2 operation. +- If a cluster that uses the Rook-Ceph pack experiences network issues, it's possible for the file mount to become + unavailable and will remain unavailable even after network is restored. This a known issue disclosed in the + [Rook GitHub repository](https://github.com/rook/rook/issues/13818). To resolve this issue, refer to + [Rook-Ceph](./integrations/rook-ceph.md#file-mount-becomes-unavailable-after-cluster-experiences-network-issues) pack + documentation. - - The Harbor database pod might fail to start due to file permission issues. This is a - [known issue](https://github.com/goharbor/harbor-helm/issues/1676) in the Harbor GitHub repository. +- Edge clusters on Edge hosts with ARM64 processors may experience instability issues that causes cluster failures. - - A cluster may get stuck in the provisioning state. If this happens, remove the cluster and try again. +- During the cluster provisioning process of new edge clusters, the palette webhook pods may not always deploy + successfully, causing the cluster to be stuck in the provisioning phase. This issue does not impact deployed clusters. + Review the + [Palette Webhook Pods Fail to Start](./troubleshooting/edge.md#scenario---palette-webhook-pods-fail-to-start) + troubleshooting guide for resolution steps. -### Palette Dev Engine (PDE) +### Virtual Machine Orchestrator (VMO) #### Improvements -- The default deployed Kubernetes version for new virtual clusters is now v1.26. +- Internal VMO components, including KubeVirt, KubeVirt Container Data Importer, and Snapshot Controller, have been + updated to ensure compatibility with the latest versions of KubeVirt and associated components. -### Virtual Machine Orchestrator (VMO) +### VerteX #### Features -- You can now deploy virtual machines using VMO on an Edge cluster. Edge clusters are useful when deploying Kubernetes - clusters in remote locations. Refer to the - [Create a VMO Profile](./vm-management/vm-packs-profiles/create-vmo-profile.md) to learn how to create an Edge cluster - profile for VMO. +- VerteX now supports deploying clusters on Azure Kubernetes Service (AKS). Refer to the + [Create and Manage Azure AKS Cluster](./clusters/public-cloud/azure/aks.md) guide to learn how to deploy an AKS + cluster. -### VerteX +- Support for [Konvoy](./integrations/konvoy.md) is now available in VerteX. You can create a custom image using the + Konvoy image builder project and use it to deploy a Konvoy cluster. Check out the + [Red Hat Linux Enterprise and Konvoy](./byoos/usecases/vmware/konvoy.md) guide to learn how to create a custom image + and deploy a Konvoy cluster. -#### Features +- Support for TLS 1.3 is now available in VerteX. Clusters deployed through VerteX and the VerteX instance cluster + itself now support TLS 1.3. -- Azure Government Cloud support is now available for VerteX. You can now deploy Azure IaaS clusters on Azure Government - accounts. The following Azure regions are available: US Gov Arizona, US Gov Texas, and US Gov Virginia. For more - information, refer to the [Supported Platforms](./vertex/supported-platforms.md) resource. +- Multiple system administrators can now be added to the VerteX system console to help manage and maintain the VerteX + instance. The feature helps organizations embrace the separation of duties by delegating different responsibilities to + system administrators. Refer to the + [System Administrators](./vertex/system-management/account-management/account-management.md#system-administrators) + page to learn more about system administrators. -- Canonical MAAS support is now available for VerteX. You can now deploy Canonical MAAS clusters with VerteX. Refer to - the [MAAS](./clusters/data-center/maas/maas.md) resource for more information on deploying MAAS clusters. +- The Palette CLI now supports the ability to scan deployed clusters and check for FIPS compliance using the + `fips-validate` command. The command scans the cluster and reports the FIPS compliance status of images. The command + also supports checking exposed service endpoints for approved ciphers and TLS versions. Images and service endpoints + that are not compliant are reported with either a failed or unknown status. Refer to the + [FIPS Validate](./palette-cli/commands/fips-validate.md) guide to learn more about the command. -- Support for passkeys is now available for the admin user. When accessing the system console, you can now use passkeys - to authenticate the admin user account. For more information, refer to the - [System Console Credentials](vertex/system-management/account-management/credentials.md) resource. +- VerteX instances now use Kubernetes version 1.27.11. This new version of Kubernetes will cause node repave events + during the upgrade process. If you have multiple self-hosted Palette instances in a VMware environment, take a moment + and review the Palette [Known Issues](#known-issues) section above for potential issues that may arise during the + upgrade process. #### Improvements -- To better support airgap installs and customers in internet-restricted environments. You can now access Palette - documentation offline by using the Palette documentation container. For more information, refer to the - [Offline Documentation](./vertex/install-palette-vertex/airgap/offline-docs.md) page. - -#### Known Issues - -- Enabling [passkeys](./vertex/system-management/account-management/credentials.md#add-passkeys) in a VerteX instance - will cause JSON Web Tokens (JWT) returned by the system API endpoint `/v1/auth/syslogin` to be invalid. Refer to the - [Passkeys and API Access](./vertex/system-management/account-management/credentials.md#passkeys-and-api-access) - resource for more information on accessing the system API when passkeys are enabled. This issue does not affect the - regular VerteX API used by clusters and users. +- Password enforcement for VerteX system administrators has been improved to comply with NIST password specifications, + NIST 800-53 and NIST 800-63B. Refer to + [Password Requirements and Security](./vertex/system-management/account-management/credentials.md#password-requirements-and-security) + page for more details. ### Terraform -#### Breaking Changes - -- The parameter `cluster_context` is now a required attribute for the resource `spectrocloud_application`. - -- The resource `spectrocloud_cluster_edge_native` is deprecating the following arguments; `ssh_key`, and `host_uids`. - #### Features -- Version 0.17.2 of the +- Version 0.18.0 of the [Spectro Cloud Terraform provider](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs) is available. For more details, refer to the Terraform provider [release page](https://github.com/spectrocloud/terraform-provider-spectrocloud/releases). ### Docs and Education -- The [Deploy a Custom Pack](./registries-and-packs/deploy-pack.md) tutorial has been updated to include instructions on - deploying a custom pack with a custom OCI Pack registry. +- A new Getting Started experience is now available for new users. The new experience guides users through the key + Palette concepts and features to help them get started with Palette. Check out the + [Getting Started](./getting-started/getting-started.md) page to learn more. + +- A new tutorial [Deploy Cluster Profile Updates](./clusters/cluster-management/update-k8s-cluster.md) is now available + that guides you through the process of updating a cluster profile. -- The Palette Offline Documentation container image is now cryptographically signed. You can verify the authenticity of - the container image by using the [Cosign CLI](https://docs.sigstore.dev/signing/quickstart) and the public key. Refer - to the [Offline Documentation](./vertex/install-palette-vertex/airgap/offline-docs.md#container-image-authenticity) - page for more information. +- A new pack, [Hello Universe](https://github.com/spectrocloud/pack-central/tree/main/packs/hello-universe-1.1.1) is now + available in the Pack community repository. + +- A new documentation section for PCG has been added to the Palette documentation. The new section consolidates + information about the PCG and how to install and configure it. Refer to the + [Private Cloud Gateway](./clusters/pcg/pcg.md) page to learn more about PCG. ### Packs +#### Pack Notes + +- Several Kubernetes versions are [deprecated](./integrations/maintenance-policy.md#pack-deprecations) and removed in + this release. Review the [Deprecation](#deprecations-and-removals) section for a list of deprecated packs. + +- OpenStack support is limited to Palette eXtended Kubernetes (PXK) for version 1.24.x. + +- Local Path Provisioner CSI for Edge is now a [verified pack](./integrations/verified_packs.md). + #### Kubernetes -| **Pack** | **New Version** | -| :--------------------------------- | :-------------- | -| Kubernetes Azure AKS | 1.28.2 | -| Kubernetes Amazon EKS | 1.28.2 | -| Kubernetes Cox Edge | 1.28.2 | -| Kubernetes Cox Edge | 1.27.6 | -| Kubernetes Cox Edge | 1.26.9 | -| Kubernetes Cox Edge | 1.25.14 | -| Kubernetes Google GKE | 1.27.6 | -| Kubernetes Google GKE | 1.26.9 | -| Kubernetes Google GKE | 1.25.14 | -| K3s | 1.28.2 | -| K3s | 1.27.7 | -| K3s | 1.26.10 | -| K3s | 1.25.15 | -| Palette eXtended Kubernetes - Edge | 1.28.2 | -| Palette eXtended Kubernetes - Edge | 1.27.7 | -| Palette eXtended Kubernetes - Edge | 1.26.10 | -| Palette eXtended Kubernetes - Edge | 1.25.15 | -| Palette eXtended Kubernetes | 1.28.3 | -| Palette eXtended Kubernetes | 1.27.7 | -| Palette eXtended Kubernetes | 1.26.10 | -| Palette eXtended Kubernetes | 1.25.15 | -| RKE2 | 1.28.2 | -| RKE2 | 1.27.8 | -| RKE2 | 1.26.11 | -| RKE2 - Edge | 1.28.4 | -| RKE2 - Edge | 1.27.7 | -| RKE2 - Edge | 1.26.10 | -| RKE2 - Edge | 1.25.15 | +| Pack | New Version | +| ------------------------------------------ | ----------- | +| K3s | 1.26.14 | +| K3s | 1.27.11 | +| K3s | 1.28.7 | +| K3s | 1.29.2 | +| Konvoy | 1.27.6 | +| Palette eXtended Kubernetes (PXK) | 1.29.0 | +| Palette eXtended Kubernetes - Edge (PXK-E) | 1.29.0 | +| RKE2 | 1.29.0 | +| RKE2 - Edge | 1.26.14 | +| RKE2 - Edge | 1.27.11 | +| RKE2 - Edge | 1.28.7 | +| RKE2 - Edge | 1.29.3 | #### CNI -| **Pack** | **New Version** | -| :---------- | :-------------- | -| AWS VPC CNI | 1.15.1 | -| Calico CNI | 3.26.3 | -| Ciliium OSS | 1.14.3 | -| Flannel CNI | 0.23.0 | +| Pack | New Version | +| ----------- | ----------- | +| AWS VPC CNI | 1.15.5 | +| Calico | 3.27.0 | +| Cilium OSS | 1.13.12 | +| Cilium OSS | 1.14.7 | +| Cilium OSS | 1.15.1 | +| Flannel | 0.24.0 | #### CSI -| **Pack** | **New Version** | -| :-------------------- | :-------------- | -| Azure Disk CSI Driver | 1.29.1 | -| AWS EBS CSI | 1.24.0 | -| Longhorn CSI | 1.5.3 | -| Nutanix CSI | 2.6.6 | -| Portworx CSI | 3.0.4 | -| Rook Ceph CSI | 1.12.7 | +| Pack | New Version | +| ----------------------------------- | ------------- | +| AWS EBS CSI | 1.26.1 | +| GCE Persistent Disk Driver | 1.12.4 | +| Local Path Provisioner CSI for Edge | 0.0.25 | +| Longhorn CSI | 1.6.0 | +| Rook Ceph (manifests) | 1.13.1 | +| vSphere CSI | 3.1.0 , 3.1.2 | #### Add-on Packs -| **Pack** | **New Version** | -| :------------------------ | :-------------- | -| External Secrets Operator | 0.9.7 | -| Flux2 | 2.10.2 | -| Harbor Edge Native Config | 1.0.0 | -| Istio | 1.17.2 | -| Kong Ingress | 2.32.0 | -| MetalLB | 0.13.11 | -| Nginx Ingress | 1.9.4 | -| Nvidia GPU Operator | 23.9.1 | -| Open Policy Agent | 3.13.2 | -| Prometheus Operator | 51.0.3 | -| Reloader | 1.0.43 | -| Imageswap | 1.5.3 | +| Pack | New Version | +| ----------------------------- | ----------- | +| AWS Application Load Balancer | 2.6.2 | +| Cilium Tetragon | 0.10.1 | +| Cluster Autoscaler for AWS | 1.27.5 | +| Cluster Autoscaler for AWS | 1.28.2 | +| External DNS | 0.13.6 | +| External Secrets Operator | 0.9.11 | +| HashiCorp Vault | 0.27.0 | +| Istio | 1.20.1 | +| MetalLB | 0.13.12 | +| Nginx Ingress | 1.9.5 | +| Prometheus Grafana | 55.8.3 | #### FIPS Packs -| **Pack** | **New Version** | -| :--------------------------------- | :-------------- | -| Azure CSI Driver | 1.28.3 | -| Palette eXtended Kubernetes | 1.28.3 | -| Palette eXtended Kubernetes | 1.27.7 | -| Palette eXtended Kubernetes | 1.26.10 | -| Palette eXtended Kubernetes | 1.25.15 | -| Palette eXtended Kubernetes - Edge | 1.27.2 | -| Palette eXtended Kubernetes - Edge | 1.26.4 | -| Palette eXtended Kubernetes - Edge | 1.25.9 | -| RKE2 | 1.28.6 | -| RKE2 | 1.27.8 | -| RKE2 | 1.26.11 | -| RKE2 - Edge | 1.27.2 | -| RKE2 - Edge | 1.26.4 | -| RKE2 - Edge | 1.25.2 | +| Pack | New Version | +| ------------------------------------------ | ----------- | +| AKS | 1.27 | +| AKS | 1.28 | +| AWS EBS CSI | 1.26.1 | +| Calico CNI | 3.26.3 | +| Konvoy | 1.27.6 | +| Palette eXtended Kubernetes (PXK) | 1.26.12 | +| Palette eXtended Kubernetes (PXK) | 1.27.11 | +| Palette eXtended Kubernetes - Edge (PXK-E) | 1.26.12 | +| Palette eXtended Kubernetes - Edge (PXK-E) | 1.27.11 | +| RKE2 - Edge | 1.26.12 | -#### Pack Notes +#### Deprecations and Removals -- A Pack's README file is displayed during the cluster profile creation and editing process. You can find additional - information about a pack in the [Packs List](./integrations/integrations.mdx) page. -- ArgoCD is now a verified pack, starting with version 5.46.8. -- Spot.io is now a verified pack, starting with version 1.0.117. -- Edge cluster nodes deployed in a single node configuration using RKE2 version 1.26.X must upgrade to the latest minor - version of 1.26.10 before upgrading to 1.27.7. -- The prior issue related to Edge clusters deployed in a single node configuration using RKE2 version 1.26.X has been - resolved starting with version 1.26.10. +- PXK, PXK-E, and RKE2, versions prior to 1.27.x are deprecated. We recommend upgrading to a newer version of Kubernetes + to support the latest features and security updates. -#### Deprecations and Removals +- All Kubernetes pack versions prior to 1.25.0 are disabled across the following distributions: + + - PXK, + - PXK-E + - K3s + - RKE2 - Edge + - GKE + - AKS + + Kubernetes versions for GKE and AKS prior to verison 1.25 are removed as they are no longer available upstream. AKS + 1.26 is deprecated as it reached End Of Life (EOL). + + - Exceptions - OpenStack and PXK 1.24 packs have been reverted to _Deprecated_ state from _Disabled_ state. EKS 1.24 + is also back in deprecated state as support has been extended by AWS. + +- An upstream issue in K3s could prevent clusters from starting up successfully when a node is rebooted. This issue can + be potentially be seen in patch versions 1.26.10, 1.26.4, 1.26.8 for 1.26, 1.27.2 ,1.27.5 and 1.27.7 for 1.27 and + 1.28.2, 1.28.4 for 1.28. All these versions have been deprecated. We recommend you use Kubernetes versions 1.26.14, + 1.27.11 or 1.28.7 as these versions contain the fix for the upstream issue. -- Check out the [Deprecated Packs](integrations/deprecated-packs.md) page for a list of deprecated packs. +- Check out the [Deprecated Packs](integrations/deprecated-packs.md) page for a list of all deprecated packs. diff --git a/docs/docs-content/security-bulletins/cve-reports.md b/docs/docs-content/security-bulletins/cve-reports.md index 64389b3e3b..44fb3dcb0f 100644 --- a/docs/docs-content/security-bulletins/cve-reports.md +++ b/docs/docs-content/security-bulletins/cve-reports.md @@ -32,6 +32,150 @@ _Are there any links users can visit to find out more?_ --> +## April 14, 2024 - CVE-2023-24534 HTTP and MIME Header Parsing Can Allocate Large Amounts of Memory - 7.5 CVSS + +HTTP and MIME header parsing can allocate large amounts of memory, even when parsing small inputs, potentially leading +to a denial of service. Certain unusual patterns of input data can cause the common function used to parse HTTP and MIME +headers to allocate substantially more memory than required to hold the parsed headers. + +An attacker can exploit this behavior to cause an HTTP server to allocate large amounts of memory from a small request, +potentially leading to memory exhaustion and a denial of service. With the fix, header parsing now correctly allocates +only the memory required to hold parsed headers. + +### Impact + +Low. + +### Patches + +Palette and VerteX version 4.3.0 include the security patch for the vulnerability. + +### Workarounds + +Not applicable. + +### References + +- [CVE-2023-24534](https://nvd.nist.gov/vuln/detail/CVE-2023-24534) + +
+ +## April 14, 2024 - CVE-2023-24536 MIME/Multipart Form Parsing Can Consume Large Amounts of CPU and Memory - 7.5 CVSS + +Multipart form parsing can consume large amounts of CPU and memory when processing form inputs containing large numbers +of parts. This can be caused by several reasons: + +- `mime/multipart.Reader.ReadForm` limits the total memory a parsed multipart form can consume. `ReadForm` can + undercount the amount of memory consumed, leading it to accept larger inputs than intended. +- Limiting total memory does not account for increased pressure on the garbage collector from large numbers of small + allocations in forms with many parts. +- `ReadForm` can allocate a large number of short-lived buffers, further increasing pressure on the garbage collector. + +The combination of these factors can allow an attacker to cause a program that parses multipart forms to consume large +amounts of CPU and memory, potentially resulting in a denial of service. This affects programs that use +`mime/multipart.Reader.ReadForm` and form parsing in the `net/http` package with the request methods `FormFile`, +`FormValue`, `ParseMultipartForm`, and `PostFormValue`. With the fix, `ReadForm` now better estimates the memory +consumption of parsed forms and performs fewer short-lived allocations. In addition, the fixed `mime/multipart.Reader` +imposes the following limits on the size of parsed forms: + +- Forms parsed with `ReadForm` may contain no more than 1000 parts. This limit can be adjusted with the environment + variable `GODEBUG=multipartmaxparts=`. +- Form parts parsed with `NextPart` and `NextRawPart` may contain no more than 10,000 header fields. In addition, forms + parsed with `ReadForm` may contain no more than 10,000 header fields across all parts. This limit may be adjusted with + the environment variable `GODEBUG=multipartmaxheaders=`. + +### Impact + +Low. + +### Patches + +Palette and VerteX version 4.3.0 include the security patch for the vulnerability. + +### Workarounds + +Not applicable. + +### References + +- [CVE-2023-24536](https://nvd.nist.gov/vuln/detail/CVE-2023-24536) + +
+ +## April 14, 2024 - CVE-2023-26159 Improper Input Validation Due to Improper Handling of URLs - 6.1 CVSS + +Versions of the `follow-redirects` package prior to 1.15.4 are vulnerable to Improper Input Validation due to the +improper handling of URLs by the `url.parse()` function. When `new URL()` throws an error, it can be manipulated to +misinterpret the hostname. An attacker could exploit this weakness to redirect traffic to a malicious site, potentially +leading to information disclosure, phishing attacks, or other security breaches. + +### Impact + +Low impact. The Palette management platform's MongoDB service sidecar is not exposed publicly and does not accept user +input. + +### Patches + +Palette and VerteX version 4.3.0 include the security patch for the vulnerability. + +### Workarounds + +Not applicable. + +### References + +- [CVE-2023-26159](https://nvd.nist.gov/vuln/detail/CVE-2023-26159) + +
+ +## April 14, 2024 - CVE-2023-5764 Ansible Template Injection Vulnerability - 7.8 CVSS + +A template injection flaw was found in Ansible. It occurs when internal templating operations of a user's controller +remove the unsafe designation from template data. This issue could allow an attacker to use a specially crafted file to +introduce code injection when supplying templating data. + +### Impact + +No impact. The Palette node agent service does not accept or parse any provided user data. + +### Patches + +Palette and VerteX version 4.3.0 include the security patch for the vulnerability. + +### Workarounds + +Not applicable. + +### References + +- [CVE-2023-5764](https://nvd.nist.gov/vuln/detail/CVE-2023-5764) + +
+ +## April 14, 2024 - CVE-2023-42282 SSRF Vulnerability in Node.js - 9.8 CVSS + +Node.js IP packages before version 1.1.9 may allow Server-Side Request Forgery (SSRF). This might happen because certain +IP addresses, such as `0x7f.1`, are improperly categorized as globally routable by the `isPublic` function. + +### Impact + +Low impact. The Palette management platform's MongoDB service sidecar is not exposed publicly and does not accept user +input. + +### Patches + +Palette and VerteX version 4.3.0 include the security patch for the vulnerability. + +### Workarounds + +Not applicable. + +### References + +- [CVE-2023-42282](https://nvd.nist.gov/vuln/detail/CVE-2023-42282) + +
+ ## April 2, 2024 - CVE-2024-3094 Malicious Code in XZ Utility - 10 CVSS Malicious code was discovered in the upstream tarballs of the XZ utility, starting with version 5.6.0, contain malicious diff --git a/docs/docs-content/security/product-architecture/tenant-cluster.md b/docs/docs-content/security/product-architecture/tenant-cluster.md index 75ebe35cd2..ccb9b32d8c 100644 --- a/docs/docs-content/security/product-architecture/tenant-cluster.md +++ b/docs/docs-content/security/product-architecture/tenant-cluster.md @@ -1,7 +1,9 @@ --- sidebar_label: "Tenant Cluster Security" title: "Tenant Cluster Security" -description: "Lorem ipsum dolor" +description: + "Learn how Palette ensures security for workload clusters, also known as tenant clusters, and what you are responsible + for." icon: "" hide_table_of_contents: false sidebar_position: 40 diff --git a/docs/docs-content/spectro-downloads.md b/docs/docs-content/spectro-downloads.md index beccd90b07..5d245bc095 100644 --- a/docs/docs-content/spectro-downloads.md +++ b/docs/docs-content/spectro-downloads.md @@ -16,19 +16,19 @@ The following Palette downloads are available: You can deploy a self-hosted Palette to your environment. Refer to the [Self-Hosted Installation](enterprise-version/install-palette/install-palette.md) documentation for additional guidance on how to install Palette. Palette VerteX installation guide can be found in the -[Palette VerteX install](vertex/install-palette-vertex) document. +[Palette VerteX install](./vertex/install-palette-vertex/install-palette-vertex.md) document. ## Palette CLI The Palette Command Line Interface (CLI) is a tool that you can use to interact with Palette programmatically. Check out -the [Palette CLI](/palette-cli/install-palette-cli) document for installation guidance. +the [Palette CLI](./palette-cli/palette-cli.md) document for installation guidance. | Version | Operating System | Checksum (SHA256) | | ------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | -| 4.2.4 | [Linux-amd64](https://software.spectrocloud.com/palette-cli/v4.2.4/linux/cli/palette) | `3e1cddc25c7c883e6385b9c8365519cef66d1893756e5794947de2cf38d02092` | +| 4.3.7 | [Linux-amd64](https://software.spectrocloud.com/palette-cli/v4.3.7/linux/cli/palette) | `3728ee52b68aa3569bb5816de4b28f92414ee4fa5f43a9c7507a0abc5bbbc23e` | ## Palette Edge CLI | Version | Operating System | Checksum (SHA256) | | ------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | -| 4.2.3 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.2.3/cli/linux/palette-edge) | `5f781b6e1332972130f53783684a16c34a1d6bb57f5fcadc818f562690c6a044` | +| 4.3.2 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.3.2/cli/linux/palette-edge) | `5e9082e090d643f486eec29e029713e40a4d9ab75978a438d1c6d4ad2500b90d` | diff --git a/docs/docs-content/troubleshooting/cluster-deployment.md b/docs/docs-content/troubleshooting/cluster-deployment.md index 32a46a1c72..30221a7eeb 100644 --- a/docs/docs-content/troubleshooting/cluster-deployment.md +++ b/docs/docs-content/troubleshooting/cluster-deployment.md @@ -174,75 +174,3 @@ pack: namespaceLabels: "monitoring": "org=spectro,team=dev,pod-security.kubernetes.io/enforce=privileged,pod-security.kubernetes.io/enforce-version=v1.28" ``` - -## Gateway Installer Registration Failures - -There are a couple reasons the Gateway Installer might fail: - -- A bootstrap error might have occurred. When the Gateway Installer VM is powered on, it initiates a bootstrap process - and registers itself with the tenant portal. This process typically takes 5 to 10 minutes. If the installer fails to - register with the tenant portal during this time, it indicates a bootstrapping error. - - To address the issue, SSH into the Installer virtual machine using the key provided during OVA import and inspect the - log file located at _'/var/log/cloud-init-output.log'_. - - The log file contains error messages about any failures that occur while connecting to the Spectro Cloud management - platform portal, authenticating, or downloading installation artifacts. - - A common cause for these errors is that the Spectro Cloud management platform console endpoint or the pairing code is - typed incorrectly. Ensure that the tenant portal console endpoint does not have a trailing slash. If these properties - were incorrectly specified, power down and delete the installer VM and re-launch with the correct values. - -- The VM may not have an outbound connection. The Gateway Installer VM requires outbound connectivity directly or using - a proxy. Adjust proxy settings, if applicable, to fix the connectivity or power down and delete the Installer VM, then - relaunch it in a network that enables outbound connections. - -If these steps do not resolve the Gateway Installer issues, copy the following script to the Installer VM to generate a -logs archive. Open a support ticket by visiting our [support page](http://support.spectrocloud.io/). Attach the logs -archive so the Spectro Cloud Support team can troubleshoot the issue and provide further guidance: - -```bash -#!/bin/bash - -DESTDIR="/tmp/" - -CONTAINER_LOGS_DIR="/var/log/containers/" -CLOUD_INIT_OUTPUT_LOG="/var/log/cloud-init-output.log" -CLOUD_INIT_LOG="/var/log/cloud-init.log" -KERN_LOG="/var/log/kern.log" -KUBELET_LOG="/tmp/kubelet.log" -SYSLOGS="/var/log/syslog*" - -FILENAME=spectro-logs-$(date +%-Y%-m%-d)-$(date +%-HH%-MM%-SS).tgz - - -journalctl -u kubelet > $KUBELET_LOG - -tar --create --gzip -h --file=$DESTDIR$FILENAME $CONTAINER_LOGS_DIR $CLOUD_INIT_LOG $CLOUD_INIT_OUTPUT_LOG $KERN_LOG $KUBELET_LOG $SYSLOGS - -retVal=$? -if [ $retVal -eq 1 ]; then - echo "Error creating spectro logs package" -else - echo "Successfully extracted spectro cloud logs: $DESTDIR$FILENAME" -fi -``` - -## Gateway Cluster Provisioning Failures - -Installation of the Gateway cluster may run into errors or get stuck in the provisioning state for various reasons like -lack of infrastructure resources, lack of availability of IP addresses, inability to perform NTP sync, etc. - -While these are the most common failures, some other issues might be related to the underlying VMware environment. The -**Cluster Details** page, which you can access by clicking anywhere on the Gateway widget, contains details of every -orchestration step, including an indication of the current task. - -Intermittent errors are displayed on the **Cluster Details** page next to the relevant orchestration task. The -**Events** tab on this page also provides helpful insights into lower-level operations currently being performed. -Suppose you believe the orchestration is stuck or failed due to an invalid selection of infrastructure resources or an -intermittent problem with the infrastructure. You may reset the Gateway by clicking on the **Reset** button on the -Gateway widget. The Gateway state will transition to Pending. A Gateway in the Pending state allows you to reconfigure -the Gateway and start provisioning a new Gateway cluster. If the problem persists, don't hesitate to contact Spectro -support via the Service Desk or our [support page](http://support.spectrocloud.io/). - -
diff --git a/docs/docs-content/troubleshooting/edge.md b/docs/docs-content/troubleshooting/edge.md index c338e3edb3..e7083cc62d 100644 --- a/docs/docs-content/troubleshooting/edge.md +++ b/docs/docs-content/troubleshooting/edge.md @@ -16,17 +16,15 @@ If you need to override or reconfigure the read-only file system, you can do so ## Debug Steps -
- 1. Power on the Edge host. 2. Press the keyboard key `E` after highlighting the menu in `grubmenu`. 3. Type `rd.cos.debugrw` and press `Enter`. -![The grub menu displays with the command rd.cos.debugrw typed in the terminal.](/troubleshooting_edge_grub-menu.webp) + ![The grub menu displays with the command rd.cos.debugrw typed in the terminal.](/troubleshooting_edge_grub-menu.webp) -4. Press `Ctrl+X` to boot the system. +4. Press the keys **Ctrl** + **X** to boot the system. 5. Make the required changes to the image. @@ -45,10 +43,10 @@ adjust the values of related environment variables in the KubeVip DaemonSet with 2. Issue the following command: ```shell -kubectl edit ds kube-vip-ds -n kube-system +kubectl edit ds kube-vip-ds --namespace kube-system ``` -3. In the `env` of the KubeVip service, modify the environment variables to have the following corresponding values: +3. In the `env` of the KubeVip service, modify the environment variables to have the following corresponding values. ```yaml {4-9} env: @@ -63,3 +61,78 @@ env: ``` 4. Within a minute, the old Pods in unknown state will be terminated and Pods will come up with the updated values. + +## Scenario - Palette Webhook Pods Fail to Start + +If the Palette webhook pods fail to start, it may be due to the _palette-lite-controller-manager_ pods encountering +issues or not being available. Use the following steps to troubleshoot and resolve the issue. + +### Debug Steps + +1. Ensure you can access the Kubenetes cluster using kubectl. For more information, refer to + [Access Cluster with CLI](../clusters/cluster-management/palette-webctl.md). + +2. Open up a terminal session and issue the following command to check the status of the + _palette-lite-controller-manager_ pods. + + ```shell + kubectl get pods --all-namespaces | grep palette-lite-controller-manager + ``` + + ```shell hideClipboard + cluster-661acf1dfc746f8217de2712 palette-lite-controller-manager-6856746c8-7p9k2 2/2 Running 0 6m + ``` + + If the pods are active and available with an age greater than five minutes, then the issue may be with the Palette + webhook. Proceed to the next step. + + :::info + + If the pods are not active, use the command `kubectl describe pod --namespace palette-system` to check the + pod logs for more information about why the pods are not starting. Replace `` with the name of the pod that + is not starting. Scroll down to the `Events` section to view the logs. You can try to delete the pod and check if it + starts successfully. If the issue persists, contact our support team by emailing. + + ::: + +3. Check the status of the Palette webhook pods. Use the following command to verify the status. + + ```shell + kubectl get pods --namespace palette-system + ``` + + ```shell + No resources found in palette-system namespace + ``` + + If the output displays a message stating **No resources found in palette-system namespace** then the lacking Palette + webhook pods are the issue for the cluster not starting. + +4. Delete all existing _palette-lite-controller-manager_ pods using the following commands. + + ```shell + export NAMESPACE=$(kubectl get pods --all-namespaces | grep palette-lite-controller-manager | awk '{print $1}') + export PALETTE_POD_NAME=$(kubectl get pods --all-namespaces | grep palette-lite-controller-manager | awk '{print $2}') + kubectl delete pod $PALETTE_POD_NAME --namespace $NAMESPACE + ``` + +5. After a few seconds, verify that the _palette-lite-controller-manager_ pods are active and available. + + ```shell + kubectl get pods --all-namespaces | grep palette-lite-controller-manager + ``` + +6. Check the status of the Palette webhook pods. A successful output should display the status of the _palette-webhook_ + pods. + + ```shell + kubectl get pods --namespace palette-system + ``` + + ```shell + NAME READY STATUS RESTARTS AGE + palette-webhook-548c55568c-p74zz 1/1 Running 0 2m + ``` + +7. If you continue to encounter issues, contact our support team by emailing + [support@spectrocloud.com](mailto:support@spectrocloud.com) so that we can provide you with further guidance. diff --git a/docs/docs-content/troubleshooting/palette-upgrade.md b/docs/docs-content/troubleshooting/palette-upgrade.md index 1d1bb4af4a..eb7a789506 100644 --- a/docs/docs-content/troubleshooting/palette-upgrade.md +++ b/docs/docs-content/troubleshooting/palette-upgrade.md @@ -8,11 +8,9 @@ sidebar_position: 60 tags: ["troubleshooting", "palette-upgrade"] --- -# Palette Upgrades - We recommend you review the [Release Notes](../release-notes.md) and the -[Upgrade Notes](../enterprise-version/upgrade.md) before attempting to upgrade Palette. Use this information to address -common issues that may occur during an upgrade. +[Upgrade Notes](../enterprise-version/upgrade/upgrade.md) before attempting to upgrade Palette. Use this information to +address common issues that may occur during an upgrade. ## Ingress Errors @@ -25,7 +23,7 @@ a Kubernetes environment, use the debugging steps to address the issue. Error: UPGRADE FAILED: failed to create resource: admission webhook "validate.nginx.ingress.kubernetes.io" denied the request: host "_" and path "/v1/oidc" is already defined in ingress default/hubble-auth-oidc-ingress-resource ``` -## Debug Steps +### Debug Steps 1. Connect to the cluster using the cluster's kubeconfig file. Refer to the [Access Cluster with CLI](../clusters/cluster-management/palette-webctl.md) for additional guidance. @@ -50,3 +48,124 @@ Error: UPGRADE FAILED: failed to create resource: admission webhook "validate.ng 4. Restart the upgrade process.
+ +## Volume Attachment Errors Volume in VMware Environment + +If you deployed Palette in a VMware vSphere environment and are experiencing volume attachment errors for the MongoDB +pods during the upgrade process, it may be due to duplicate resources in the cluster causing resource creation errors. +Palette versions between 4.0.0 and 4.3.0 are affected by a known issue where cluster resources are not receiving unique +IDs. Use the following steps to correctly identify the issue and resolve it. + +### Debug Steps + +1. Open up a terminal session in an environment that has network access to the Kubernetes cluster. + +2. Configure kubectl CLI to connect to the self-hosted Palette or VerteX's Kubernetes cluster. Refer to the + [Access Cluster with CLI](../clusters/cluster-management/palette-webctl.md) for additional guidance. + +3. Verify the MongoDB pods are not starting correctly by issuing the following command. + + ```shell + kubectl get pods --namespace=hubble-system --selector='app=spectro,role=mongo' + ``` + + ```shell {4} hideClipboard + NAME READY STATUS RESTARTS AGE + mongo-0 2/2 Running 0 17h + mongo-1 2/2 Running 0 17h + mongo-2 0/2 ContainerCreating 0 16m + ``` + +4. Inspect the pod that is not starting correctly. Use the following command to describe the pod. Replace `mongo-2` with + the name of the pod that is not starting. + + ```shell + kubectl describe pod mongo-2 --namespace=hubble-system + ``` + +5. Review the event output for any errors. If an error related to the volume attachment is present, proceed to the next + step. + + ```shell hideClipboard + Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Warning FailedAttachVolume 106s (x16 over 18m) attachdetach-controller AttachVolume.Attach failed for volume "pvc-94cbb8f5-9145-4b18-9bf9-ee027b64d0c7" : volume attachment is being deleted + Warning FailedMount 21s (x4 over 16m) kubelet Unable to attach or mount volumes: unmounted volumes=[mongo-data], unattached volumes=[spectromongokey kube-api-access-sz5lz mongo-data spectromongoinit spectromongopost]: timed out waiting for the condition + ``` + +6. The remaining steps may need to be performed on all MongoDB pods and their associated Persistent Volume (PV), and + Persistent Volume Claim (PVC). Do each step sequentially for each MongoDB pod that is encountering the volume + attachment error. + + :::warning + + Only do the steps for one MongoDB pod at a time to prevent data loss. Wait for the pod to come up correctly before + proceeding to the next pod. + + ::: + +7. Delete the PVC associated with the MongoDB pod. Replace `mongo-2` with the name of the pod that is not starting. + + ```shell + kubectl delete pvc mongo-data-mongo-2 --namespace=hubble-system + ``` + +8. Delete the PV associated with the MongoDB pod. Use the following command to list all PVs and find the PV associated + with the MongoDB pod you started with. In this example, the PV associated with `mongo-2` is + `pvc-94cbb8f5-9145-4b18-9bf9-ee027b64d0c7`. Make a note of this name. + + ```shell + kubectl get pv | grep 'mongo-data-mongo-2' + ``` + + ```shell hideClipboard + pvc-94cbb8f5-9145-4b18-9bf9-ee027b64d0c7 20Gi RWO Delete Bound hubble-system/mongo-data-mongo-2 spectro-storage-class 18h + ``` + +9. Using the PV name from the previous step, delete the PV. + + ```shell + kubectl delete pv pvc-94cbb8f5-9145-4b18-9bf9-ee027b64d0c7 + ``` + + :::tip + + The kubectl command may hang after issuing the delete command, press `Ctrl+C` to exit the command and proceed to the + next step. + + ::: + +10. Delete the MongoDB pod that was not starting correctly. Replace `mongo-2` with the name of the pod that is not + starting. + + ```shell + kubectl delete pod mongo-2 --namespace=hubble-system + ``` + +11. Wait for the pod to come up correctly. Use the following command to verify the pod is up and available. + + ```shell + kubectl get pods --namespace=hubble-system --selector='app=spectro,role=mongo' + ``` + + ```shell {4} hideClipboard + NAME READY STATUS RESTARTS AGE + mongo-0 2/2 Running 0 18h + mongo-1 0/2 ContainerCreating 0 4s + mongo-2 2/2 Running 0 68s + ``` + + Palette will proceed with the upgrade and attempt to upgrade the remaining MongoDB pods. Repeat the steps for each + of the MongoDB pods that are not starting correctly due to the volume attachment error. + +The upgrade process will continue once all MongoDB pods are up and available. Verify the new nodes deployed successfully +by checking the status of the nodes. Log in to the +[system console](../enterprise-version/system-management/system-management.md#access-the-system-console), navigate to +left **Main Menu** and select **Enterprise Cluster**. The **Nodes** tab will display the status of the nodes in the +cluster. + +![A view of three nodes in a healthy status](/troubleshootig_palette-upgrade_nodes-healthy.webp) + +If you continue to encounter issues, contact our support team by emailing +[support@spectrocloud.com](mailto:support@spectrocloud.com) so that we can provide you with further guidance. diff --git a/docs/docs-content/troubleshooting/pcg.md b/docs/docs-content/troubleshooting/pcg.md index aaa54ec3b3..f4dab562a0 100644 --- a/docs/docs-content/troubleshooting/pcg.md +++ b/docs/docs-content/troubleshooting/pcg.md @@ -171,3 +171,47 @@ log. 2. Contact your VMware administrator if you are missing any of the required permissions. 3. Delete the existing PCG cluster and redeploy a new one so that the new permissions take effect. + +## Scenario - VMware Resources Remain After Cluster Deletion + +In the scenario where a VMWare workload cluster is deleted and later re-created with the same name, the resources from +the previous cluster may not be fully cleaned up. This can cause the new cluster to fail to provision. To address this +issue, you must manually clean up the resources from the previous cluster. Use the following steps for guidance. + +:::info + +If you are using the System PCG for VMware cluster deployments, follow the same steps below but target the self-hosted +Palette or VerteX cluster instead when issuing the kubectl command. You will need access to the kubeconfig file for the +self-hosted Palette or VerteX cluster. Reach out to your Palette system administrator for the kubeconfig file. + +::: + +### Debug Steps + +1. Open a terminal session and ensure you have the [kubectl command-line tool](https://kubernetes.io/docs/tasks/tools/) + installed. + +2. Download the kubeconfig file for the PCG cluster from Palette. The kubeconfig file contains the necessary + configuration details to access the Kubernetes cluster. + + :::tip + + You can find the kubeconfig file in the PCG cluster's details page in Palette. Navigate to the left **Main Menu** and + select **Tenant Settings**. From the **Tenant settings Menu**, select **Private Cloud Gateways**. Select the PCG + cluster that is deployed in the VMware environment to access the details page. + + ::: + +3. Setup kubectl to use the kubeconfig file you downloaded in the previous step. Check out the + [Access Cluster with CLI](../clusters/cluster-management/palette-webctl.md) page to learn how to set up kubectl. + + ```bash + export KUBECONFIG=[path_to_kubeconfig] + ``` + +4. Issue the following command to remove the remaining cluster resources. Replace `` with the name of the + cluster you removed. + + ```bash + kubectl delete VSphereFailureDomain + ``` diff --git a/docs/docs-content/user-management/palette-rbac/tenant-scope-roles-permissions.md b/docs/docs-content/user-management/palette-rbac/tenant-scope-roles-permissions.md index c8f28c53d6..d3b2996f14 100644 --- a/docs/docs-content/user-management/palette-rbac/tenant-scope-roles-permissions.md +++ b/docs/docs-content/user-management/palette-rbac/tenant-scope-roles-permissions.md @@ -11,7 +11,7 @@ tags: ["user-management", "rbac"] ## Global Tenant Scope Tenant is an isolated workspace within the Palette Console. Users and teams with specific roles can be associated with -the [tenants](../../glossary-all.md#organization) and [projects](../../glossary-all#project) you create. +the [tenants](../../glossary-all.md#organization) and [projects](../../glossary-all.md#project) you create. Each user is assigned a role and permissions, which apply to the scopes, resources, and resourceKey. The Permissions format is `resourceKey.operation`, where resourceKey refers to resource or the API functionality, and Operation refers diff --git a/docs/docs-content/vertex/install-palette-vertex/airgap/airgap.md b/docs/docs-content/vertex/install-palette-vertex/airgap/airgap.md index cf38e1c6d0..17e7faa15e 100644 --- a/docs/docs-content/vertex/install-palette-vertex/airgap/airgap.md +++ b/docs/docs-content/vertex/install-palette-vertex/airgap/airgap.md @@ -1,7 +1,7 @@ --- -sidebar_label: "Airgap" -title: "Airgap" -description: "Learn about Palette VerteX in an airgap environment and how to install Palette in an airgap environment." +sidebar_label: "Airgap Resources" +title: "Airgap Resources" +description: "Airgap installation resources for Palette VerteX." icon: "" sidebar_position: 10 hide_table_of_contents: false @@ -55,13 +55,11 @@ following diagram outlines the major pre-install steps for an airgap installatio To get started with an airgap VerteX installation, check out the respective platform guide. -- [Kubernetes Airgap Instructions](kubernetes-airgap-instructions.md) +- [Kubernetes Airgap Instructions](../install-on-kubernetes/airgap-install/airgap-install.md) -- [VMware vSphere Airgap Instructions](vmware-vsphere-airgap-instructions.md) +- [VMware vSphere Airgap Instructions](../install-on-vmware/airgap-install/airgap-install.md) -Each platform guide provides detailed instructions on how to complete the pre-install steps. We also recommend you -review the [Checklist](checklist.md) to ensure you have completed all the required steps before deploying the airgap -VerteX installation. +Each platform guide provides detailed instructions on how to complete the pre-install steps. ## Supported Platforms @@ -76,12 +74,6 @@ The following table outlines the supported platforms for an airgap VerteX instal ## Resources -- [Kubernetes Airgap Instructions](kubernetes-airgap-instructions.md) - -- [VMware vSphere Airgap Instructions](vmware-vsphere-airgap-instructions.md) - -- [Checklist](checklist.md) - - [Additional Packs](supplemental-packs.md) - [Offline Documentation](offline-docs.md) diff --git a/docs/docs-content/vertex/install-palette-vertex/airgap/supplemental-packs.md b/docs/docs-content/vertex/install-palette-vertex/airgap/supplemental-packs.md index b5403775ea..4e427e50c5 100644 --- a/docs/docs-content/vertex/install-palette-vertex/airgap/supplemental-packs.md +++ b/docs/docs-content/vertex/install-palette-vertex/airgap/supplemental-packs.md @@ -11,57 +11,91 @@ keywords: ["self-hosted", "vertex"] Review the following table to determine which pack binaries you need to download and upload to your OCI registry. -| **File Name** | **Download URL** | -| ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| `airgap-fips-pack-amazon-linux-eks-1.0.0.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-amazon-linux-eks-1.0.0.bin | -| `airgap-fips-pack-cni-aws-vpc-eks-helm-fips-1.1.17.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-cni-aws-vpc-eks-helm-fips-1.1.17.bin | -| `airgap-fips-pack-cni-calico-3.24.1.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-cni-calico-3.24.1.bin | -| `airgap-fips-pack-cni-calico-3.25.1.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-cni-calico-3.25.1.bin | -| `airgap-fips-pack-csi-aws-ebs-1.17.0.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-csi-aws-ebs-1.17.0.bin | -| `airgap-fips-pack-csi-longhorn-fips-1.4.1.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-csi-longhorn-fips-1.4.1.bin | -| `airgap-fips-pack-csi-vsphere-csi-3.0.0.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-csi-vsphere-csi-3.0.0.bin | -| `airgap-fips-pack-edge-k3s-1.27.2.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-edge-k3s-1.27.2.bin | -| `airgap-fips-pack-edge-k8s-1.24.13.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-edge-k8s-1.24.13.bin | -| `airgap-fips-pack-edge-k8s-1.25.9.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-edge-k8s-1.25.9.bin | -| `airgap-fips-pack-edge-k8s-1.26.4.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-edge-k8s-1.26.4.bin | -| `airgap-fips-pack-edge-k8s-1.27.2.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-edge-k8s-1.27.2.bin | -| `airgap-fips-pack-edge-native-byoi-1.0.0.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-edge-native-byoi-1.0.0.bin | -| `airgap-fips-pack-edge-rke2-1.24.6.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-edge-rke2-1.24.6.bin | -| `airgap-fips-pack-edge-rke2-1.25.0.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-edge-rke2-1.25.0.bin | -| `airgap-fips-pack-edge-rke2-1.25.2.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-edge-rke2-1.25.2.bin | -| `airgap-fips-pack-edge-rke2-1.26.4.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-edge-rke2-1.26.4.bin | -| `airgap-fips-pack-edge-rke2-1.27.2.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-edge-rke2-1.27.2.bin | -| `airgap-fips-pack-generic-byoi-1.0.0.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-generic-byoi-1.0.0.bin | -| `airgap-fips-pack-kubernetes-1.25.10.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-kubernetes-1.25.10.bin | -| `airgap-fips-pack-kubernetes-1.25.9.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-kubernetes-1.25.9.bin | -| `airgap-fips-pack-kubernetes-1.26.4.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-kubernetes-1.26.4.bin | -| `airgap-fips-pack-kubernetes-1.26.5.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-kubernetes-1.26.5.bin | -| `airgap-fips-pack-kubernetes-1.27.1.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-kubernetes-1.27.1.bin | -| `airgap-fips-pack-kubernetes-1.27.2.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-kubernetes-1.27.2.bin | -| `airgap-fips-pack-kubernetes-eks-1.24.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-kubernetes-eks-1.24.bin | -| `airgap-fips-pack-kubernetes-eks-1.25.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-kubernetes-eks-1.25.bin | -| `airgap-fips-pack-kubernetes-rke2-1.25.10-rke2r1-build20230518.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-kubernetes-rke2-1.25.10-rke2r1-build20230518.bin | -| `airgap-fips-pack-kubernetes-rke2-1.26.5-rke2r1-build20230518.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-kubernetes-rke2-1.26.5-rke2r1-build20230518.bin | -| `airgap-fips-pack-spectro-proxy-1.3.0.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-spectro-proxy-1.3.0.bin | -| `airgap-fips-pack-spectro-proxy-1.4.0.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-spectro-proxy-1.4.0.bin | -| `airgap-fips-pack-ubuntu-aws-20.04.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-ubuntu-aws-20.04.bin | -| `airgap-fips-pack-ubuntu-vsphere-20.04.bin` | https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-ubuntu-vsphere-20.04.bin | +| **File Name** | **Download URL** | +| --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `airgap-pack-cni-azure-1.4.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-azure-1.4.0.bin | +| `airgap-pack-custom_os-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-custom_os-1.0.0.bin | +| `airgap-pack-kubernetes-custom-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-custom-1.0.0.bin | +| `airgap-pack-nutanix-csi-2.6.6.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-nutanix-csi-2.6.6.bin | +| `airgap-vertex-pack-cni-calico-3.24.1.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-cni-calico-3.24.1.bin | +| `airgap-vertex-pack-cni-calico-3.25.1.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-cni-calico-3.25.1.bin | +| `airgap-vertex-pack-cni-calico-3.26.3.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-cni-calico-3.26.3.bin | +| `airgap-vertex-pack-cni-calico-azure-fips-3.25.1.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-cni-calico-azure-fips-3.25.1.bin | +| `airgap-vertex-pack-csi-azure-fips-1.28.3.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-csi-azure-fips-1.28.3.bin | +| `airgap-vertex-pack-csi-longhorn-fips-1.4.1.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-csi-longhorn-fips-1.4.1.bin | +| `airgap-vertex-pack-csi-vsphere-csi-3.0.0.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-csi-vsphere-csi-3.0.0.bin | +| `airgap-vertex-pack-edge-k3s-1.27.2.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k3s-1.27.2.bin | +| `airgap-vertex-pack-edge-k8s-1.24.13.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.24.13.bin | +| `airgap-vertex-pack-edge-k8s-1.25.9.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.25.9.bin | +| `airgap-vertex-pack-edge-k8s-1.26.12.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.26.12.bin | +| `airgap-vertex-pack-edge-k8s-1.26.4.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.26.4.bin | +| `airgap-vertex-pack-edge-k8s-1.27.2.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.27.2.bin | +| `airgap-vertex-pack-edge-k8s-1.27.9.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.27.9.bin | +| `airgap-vertex-pack-edge-k8s-1.28.5.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.28.5.bin | +| `airgap-vertex-pack-edge-native-byoi-1.0.0.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-native-byoi-1.0.0.bin | +| `airgap-vertex-pack-edge-rke2-1.24.6.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.24.6.bin | +| `airgap-vertex-pack-edge-rke2-1.25.0.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.25.0.bin | +| `airgap-vertex-pack-edge-rke2-1.25.2.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.25.2.bin | +| `airgap-vertex-pack-edge-rke2-1.26.12.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.26.12.bin | +| `airgap-vertex-pack-edge-rke2-1.26.14.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.26.14.bin | +| `airgap-vertex-pack-edge-rke2-1.27.11.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.27.11.bin | +| `airgap-vertex-pack-edge-rke2-1.27.2.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.27.2.bin | +| `airgap-vertex-pack-edge-rke2-1.28.7.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.28.7.bin | +| `airgap-vertex-pack-edge-rke2-1.29.3.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.29.3.bin | +| `airgap-vertex-pack-generic-byoi-1.0.0.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-generic-byoi-1.0.0.bin | +| `airgap-vertex-pack-kubernetes-1.25.10.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.25.10.bin | +| `airgap-vertex-pack-kubernetes-1.25.9.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.25.9.bin | +| `airgap-vertex-pack-kubernetes-1.26.10.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.26.10.bin | +| `airgap-vertex-pack-kubernetes-1.26.12.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.26.12.bin | +| `airgap-vertex-pack-kubernetes-1.26.15.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.26.15.bin | +| `airgap-vertex-pack-kubernetes-1.26.4.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.26.4.bin | +| `airgap-vertex-pack-kubernetes-1.26.5.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.26.5.bin | +| `airgap-vertex-pack-kubernetes-1.27.1.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.27.1.bin | +| `airgap-vertex-pack-kubernetes-1.27.11.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.27.11.bin | +| `airgap-vertex-pack-kubernetes-1.27.2.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.27.2.bin | +| `airgap-vertex-pack-kubernetes-1.27.7.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.27.7.bin | +| `airgap-vertex-pack-kubernetes-1.27.9.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.27.9.bin | +| `airgap-vertex-pack-kubernetes-1.28.3.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.28.3.bin | +| `airgap-vertex-pack-kubernetes-1.28.5.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.28.5.bin | +| `airgap-vertex-pack-kubernetes-aks-1.27.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-aks-1.27.bin | +| `airgap-vertex-pack-kubernetes-aks-1.28.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-aks-1.28.bin | +| `airgap-vertex-pack-kubernetes-rke2-1.25.10-rke2r1-build20230518.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.25.10-rke2r1-build20230518.bin | +| `airgap-vertex-pack-kubernetes-rke2-1.26.11-rke2r1-build20231115.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.26.11-rke2r1-build20231115.bin | +| `airgap-vertex-pack-kubernetes-rke2-1.26.12-rke2r1-build20231220.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.26.12-rke2r1-build20231220.bin | +| `airgap-vertex-pack-kubernetes-rke2-1.26.5-rke2r1-build20230518.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.26.5-rke2r1-build20230518.bin | +| `airgap-vertex-pack-kubernetes-rke2-1.27.8-rke2r1-build20231115.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.27.8-rke2r1-build20231115.bin | +| `airgap-vertex-pack-kubernetes-rke2-1.27.9-rke2r1-build20231220.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.27.9-rke2r1-build20231220.bin | +| `airgap-vertex-pack-kubernetes-rke2-1.28.4-rke2r1-build20231115.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.28.4-rke2r1-build20231115.bin | +| `airgap-vertex-pack-kubernetes-rke2-1.28.5-rke2r1-build20231220.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.28.5-rke2r1-build20231220.bin | +| `airgap-vertex-pack-spectro-proxy-1.3.0.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-spectro-proxy-1.3.0.bin | +| `airgap-thirdparty-4.3.5.bin` | https://software-private.spectrocloud.com/airgap/thirdparty/airgap-thirdparty-4.3.5.bin | +| `airgap-vertex-pack-ubuntu-aks-22.04.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-ubuntu-aks-22.04.bin | +| `airgap-vertex-pack-ubuntu-azure-20.04.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-ubuntu-azure-20.04.bin | +| `airgap-vertex-pack-ubuntu-vsphere-20.04.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-ubuntu-vsphere-20.04.bin | ### Usage Instructions To download a binary you must provide the username and password for the support team's private repository. Reach out to our support team to [obtain the credentials](../../vertex.md#access-palette-vertex). -The following example shows how to download the `airgap-fips-pack-amazon-linux-eks-1.0.0.bin` binary. Replace `XXXX` -with your username and `YYYY` with your password. +The following example shows how to download the `airgap-vertex-pack-cni-calico-3.25.1.bin` binary. Replace `XXXX` with +your username and `YYYY` with your password. ```bash curl --user 'XXXX:YYYY' \ -https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-amazon-linux-eks-1.0.0.bin \ ---output airgap-fips-pack-amazon-linux-eks-1.0.0.bin +https://software-private.spectrocloud.com/airgap-fips/packs/airgap-vertex-pack-cni-calico-3.25.1.bin \ +--output airgap-vertex-pack-cni-calico-3.25.1.bin +``` + +Once the download is complete, issue the following command to start the binary and the upload process. Replace the +binary name with the one you downloaded. + +```bash +chmod +x airgap-vertex-pack-cni-calico-3.25.1.bin && \ +./airgap-vertex-pack-cni-calico-3.25.1.bin ``` @@ -70,8 +104,16 @@ https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-ama ```shell wget --user='XXXX' --password='YYYY' \ ---output-document=airgap-fips-pack-amazon-linux-eks-1.0.0.bin \ -https://software-private.spectrocloud.com/airgap-fips/packs/airgap-fips-pack-amazon-linux-eks-1.0.0.bin +--output-document=airgap-vertex-pack-cni-calico-3.25.1.bin \ +https://software-private.spectrocloud.com/airgap-fips/packs/airgap-vertex-pack-cni-calico-3.25.1.bin +``` + +Once the download is complete, issue the following command to start the binary and the upload process. Replace the +binary name with the one you downloaded. + +```bash +chmod +x airgap-vertex-pack-cni-calico-3.25.1.bin && \ +./airgap-vertex-pack-cni-calico-3.25.1.bin ```
@@ -83,6 +125,14 @@ All binaries require the OCI environment variables to be set and for the registr ::: +## Conformance Capabilities + +In an airgap installation, you need to upload the conformance packs to the self-hosted OCI registry. The conformance +binary contains the packs required to use the [Compliance Scan](../../../clusters/cluster-management/compliance-scan.md) +capabilities. The conformance binary can be found in the pack table above. The binary has the prefix +`airgap-thirdparty-`. Follow the [Usage Instructions](#usage-instructions) to upload the conformance packs to the OCI +registry. + ## Additional OVAs The following table lists additional OVAs that may be required depending on the Kubernetes version and distribution you @@ -95,14 +145,18 @@ want to use for your workload clusters. | Kubernetes 1.26.4 | u-2004-0-k-1264-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-1264-fips.ova` | | Kubernetes 1.26.5 | u-2004-0-k-1265-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-1265-fips.ova` | | Kubernetes 1.26.10 | u-2004-0-k-12610-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-12610-fips.ova` | +| Kubernetes 1.26.12 | u-2004-0-k-12612-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-12612-fips.ova` | | Kubernetes 1.27.1 | u-2004-0-k-1271-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-1271-fips.ova` | | Kubernetes 1.27.2 | u-2004-0-k-1272-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-1272-fips.ova` | | Kubernetes 1.28.3 | u-2004-0-k-1283-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-1283-fips.ova` | | RKE2 1.25.10 | u-2004-0-k-rke2-1250-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-rke2-1250-fips.ova` | | RKE2 1.26.5 | u-2004-0-k-rke2-1265-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-rke2-1265-fips.ova` | | RKE2 1.26.11 | u-2004-0-k-rke2-12611-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-rke2-12611-fips.ova` | +| RKE2 1.26.12 | u-2004-0-k-rke2-12612-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-rke2-12612-fips.ova` | | RKE2 1.27.8 | u-2004-0-k-rke2-1278-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-rke2-1278-fips.ova` | +| RKE2 1.27.9 | u-2004-0-k-rke2-1279-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-rke2-1279-fips.ova` | | RKE2 1.28.4 | u-2004-0-k-rke2-1284-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-rke2-1284-fips.ova` | +| RKE2 1.28.5 | u-2004-0-k-rke2-1285-fips.ova | `https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2004-0-k-rke2-1285-fips.ova` | ### Usage Instructions diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/_category_.json b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/_category_.json new file mode 100644 index 0000000000..455b8e4969 --- /dev/null +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/airgap-install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/airgap-install.md new file mode 100644 index 0000000000..ebe38fd58c --- /dev/null +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/airgap-install.md @@ -0,0 +1,66 @@ +--- +sidebar_label: "Airgap Installation" +title: "Airgap Installation" +description: "Learn how to deploy VerteX to a Kubernetes cluster using a Helm Chart." +icon: "" +hide_table_of_contents: false +sidebar_position: 0 +tags: ["vertex", "enterprise", "airgap", "kubernetes"] +keywords: ["self-hosted", "vertex"] +--- + +You can install VerteX in an airgap Kubernetes environment. An airgap environment lacks direct access to the internet +and is intended for environments with strict security requirements. + +The installation process for an airgap environment is different due to the lack of internet access. Before the primary +Palette installation steps, you must download the following artifacts: + +- Palette platform manifests and required platform packages. + +- Container images for core platform components and third-party dependencies. + +- Palette packs. + +The other significant change is that VerteX's default public OCI registry is not used. Instead, a private OCI registry +is utilized to store images and packs. + +## Overview + +Before you can install Palette VerteX in an airgap environment, you must first set up your environment as outlined in +the following diagram. + +![An architecture diagram outlining the five different installation phases](/enterprise-version_air-gap-repo_overview-order-diagram.webp) + +1. In an environment with internet access, download the airgap setup binary from the URL provided by our support team. + The airgap setup binary is a self-extracting archive that contains the Palette platform manifests, images, and + required packs. The airgap setup binary is a single-use binary for uploading Palette images and packs to your OCI + registry. You will not use the airgap setup binary again after the initial installation. + +2. Move the airgap setup binary to the airgap environment. The airgap setup binary is used to extract the manifest + content and upload the required images and packs to your private OCI registry. Start the airgap setup binary in a + Linux Virtual Machine (VM). + +3. The airgap script will push the required images and packs to your private OCI registry. + +4. Extract the manifest content from the airgap setup binary. The manifest content must be hosted on a web server that + is accessible from the airgap environment. You can use the same Linux VM from step two to host the manifest content + or use a different web server. + +5. Install Palette using the Kubernetes Helm chart. + +## Get Started + +To get started with the airgap Palette installation, start by reviewing the +[Environment Setup](./kubernetes-airgap-instructions.md) page. The environment setup guide provides detailed +instructions on how to prepare your airgap environment. After you have completed the environment setup, you can proceed +with the [Install VerteX](./install.md) guide. + +## Resources + +- [Environment Setup](kubernetes-airgap-instructions.md) + +- [Install VerteX](./install.md) + +- [Airgap Installation Checklist](checklist.md) + +- [Additional Packs](../../airgap/supplemental-packs.md) diff --git a/docs/docs-content/vertex/install-palette-vertex/airgap/checklist.md b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md similarity index 58% rename from docs/docs-content/vertex/install-palette-vertex/airgap/checklist.md rename to docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md index 42981d3521..08e7646a73 100644 --- a/docs/docs-content/vertex/install-palette-vertex/airgap/checklist.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md @@ -1,22 +1,18 @@ --- sidebar_label: "Checklist" -title: "Checklist" +title: "Airgap VerteX Installation Checklist" description: - "An airgap installation of VerteX requires a few steps to be completed before the installation can begin. This + "An airgap installation of Palette requires a few steps to be completed before the installation can begin. This checklist will help you prepare for the installation." icon: "" -sidebar_position: 40 +sidebar_position: 10 hide_table_of_contents: false -tags: ["vertex", "self-hosted", "airgap"] +tags: ["vertex", "enterprise", "airgap", "kubernetes"] keywords: ["self-hosted", "vertex"] --- Use the following checklist to ensure you have completed all the required steps before deploying the airgap Palette -VerteX installation. - - - - +installation. - [ ] `oras` CLI v1.0.0 is installed and available. @@ -39,30 +35,11 @@ VerteX installation. - [ ] Set the required environment variables for the airgap setup binary. The values are different depending on what type of OCI registry you use. -- [ ] Start the airgap setup binary and verify the setup is completed successfully. +- [ ] Start the airgap setup binary and verified the setup completed successfully. - [ ] Review the list of pack binaries to download and upload to your OCI registry. - [ ] Extract the manifest content from the airgap setup binary to an HTTP file server. - [ ] Ensure the manifest content is hosted on an HTTP file server accessible from the environment to which you are - installing VerteX. - - - - - -- [ ] Create a vSphere VM and Template folder named `spectro-templates`. - -- [ ] Import the Operating System and Kubernetes distribution OVA required for the installation and place the OVA in the - `spectro-templates` folder. - -- [ ] Append an `r_` prefix and remove the `.ova` suffix from the OVA name after the import. - -- [ ] Start the airgap setup binary and verify the setup is completed successfully. - -- [ ] Reviewe the list of [pack binaries](./supplemental-packs.md) to download and upload to your OCI registry. - - - - + installing Palette. diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md new file mode 100644 index 0000000000..c01fa944c2 --- /dev/null +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md @@ -0,0 +1,887 @@ +--- +sidebar_label: "Install VerteX" +title: "Install VerteX" +description: "Learn how to deploy airgap VerteX to a Kubernetes cluster using a Helm Chart." +icon: "" +hide_table_of_contents: false +sidebar_position: 30 +tags: ["vertex", "enterprise"] +keywords: ["self-hosted", "vertex"] +--- + +You can use the Palette VerteX Helm Chart to install VerteX in a multi-node Kubernetes cluster in your airgap production +environment. + +This installation method is common in secure environments with restricted network access that prohibits using VerteX +SaaS. Review our [architecture diagrams](../../../../architecture/networking-ports.md) to ensure your Kubernetes cluster +has the necessary network connectivity for VerteX to operate successfully. + +:::warning + +Complete the [Environment Setup](./kubernetes-airgap-instructions.md) steps before proceeding with the installation. + +::: + +## Prerequisites + +- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) is installed and available. + +- [Helm](https://helm.sh/docs/intro/install/) is installed and available. + +- Access to the target Kubernetes cluster's kubeconfig file. You must be able to interact with the cluster using + `kubectl` commands and have sufficient permissions to install VerteX. We recommend using a role with `cluster-admin` + permissions to install VerteX. + +- Ensure `unzip` or a similar extraction utility is installed on your system. + +- The Kubernetes cluster must be set up on a supported version of Kubernetes, which includes versions v1.25 to v1.27. + +- Ensure the Kubernetes cluster does not have Cert Manager installed. VerteX requires a unique Cert Manager + configuration to be installed as part of the installation process. If Cert Manager is already installed, you must + uninstall it before installing VerteX. + +- The Kubernetes cluster must have a Container Storage Interface (CSI) installed and configured. VerteX requires a CSI + to store persistent data. You may install any CSI that is compatible with your Kubernetes cluster. + +- We recommended the following resources for VerteX. Refer to the + [VerteX size guidelines](../../../install-palette-vertex/install-palette-vertex.md#size-guidelines) for additional + sizing information. + + - 8 CPUs per node. + + - 16 GB Memory per node. + + - 100 GB Disk Space per node. + - A Container Storage Interface (CSI) for persistent data. + + - A minimum of three worker nodes or three untainted control plane nodes. + +- The following network ports must be accessible for VerteX to operate successfully. + + - TCP/443: Inbound and outbound to and from the VerteX management cluster. + + - TCP/6443: Outbound traffic from the VerteX management cluster to the deployed clusters' Kubernetes API server. + +- Ensure you have an SSL certificate that matches the domain name you will assign to VerteX. You will need this to + enable HTTPS encryption for VerteX. Reach out to your network administrator or security team to obtain the SSL + certificate. You need the following files: + + - x509 SSL certificate file in the base64 format. + + - x509 SSL certificate key file in the base64 format. + + - x509 SSL certificate authority file in the base64 format. + +- An Nginx controller will be installed by default. If you already have an Nginx controller deployed in the cluster, you + must set the `ingress.enabled` parameter to `false` in the **values.yaml** file. + +- A custom domain and the ability to update Domain Name System (DNS) records. You will need this to enable HTTPS + encryption for VerteX. + +- If you are installing VerteX behind a network proxy server, ensure you have the Certificate Authority (CA) certificate + file in the base64 format. You will need this to enable VerteX to communicate with the network proxy server. + +- Access to the VerteX Helm Charts. Refer to the [Access VerteX](../../../vertex.md#access-palette-vertex) for + instructions on how to request access to the Helm Chart. + +:::warning + +Do not use a VerteX-managed Kubernetes cluster when installing VerteX. VerteX-managed clusters contain the VerteX agent +and VerteX-created Kubernetes resources that will interfere with the installation. + +::: + +## Install VerteX + +The following instructions are agnostic to the Kubernetes distribution you are using. Depending on the underlying +infrastructure provider and your Kubernetes distribution, you may need to modify the instructions to match your +environment. Reach out to our support team if you need assistance. + +1. Open a terminal session and navigate to the directory where you downloaded the VerteX installation zip file provided + by our support. Unzip the file to a directory named **vertex-install**. + + ```shell + unzip release-*.zip -d vertex-install + ``` + +2. Navigate to the release folder inside the **vertex-install** directory. + + ```shell + cd vertex-install/charts/release-* + ``` + +3. Open the file **extras/cert-manager/values.yaml** in a text editor and append the URL to your OCI registry, which + also includes the namespace or project that is hosting the Spectro Cloud images. The URL should be in the format + `/`. In the example configuration below, the value `my-oci-registry.com/spectro-images` is + prefixed to each URL. Save the file after you have appended the URL. + + ```yaml hideClipboard + image: + cainjectorImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-cainjector:spectro-v1.11.0-20230427" + controllerImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-controller:spectro-v1.11.0-20230427" + webhookImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-webhook:spectro-v1.11.0-20230808" + amceResolverImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-acmesolver:spectro-v1.11.0-20230427" + ``` + +4. Install Cert Manager using the following command. Replace the actual file name of the Cert Manager Helm Chart with + the one you downloaded, as the version number may be different. + + ```shell + helm upgrade --values extras/cert-manager/values.yaml \ + cert-manager extras/cert-manager/cert-manager-*.tgz --install + ``` + + ```shell hideClipboard + Release "cert-manager" does not exist. Installing it now. + NAME: cert-manager + LAST DEPLOYED: Mon Jan 29 16:32:33 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 1 + TEST SUITE: None + ``` + +5. Open the file **extras/image-swap/values.yaml** in a text editor and append the URL to your OCI registry that also + includes the namespace or project that is hosting the Spectro Cloud images. + + ```yaml hideClipboard + config: + imageSwapImages: + imageSwapInitImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release/thewebroot/imageswap-init:v1.5.2-spectro-4.1.1" + imageSwapImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release/thewebroot/imageswap:v1.5.2-spectro-4.1.1" + ``` + +6. Update the `ociImageRegistry` section with the proper configuration values to your OCI registry. The + `ociImageRegistry` section should look similar to the following example. + + :::info + + Use the following `mirrorRegistries`placeholder string to replace the respective values of your OCI registry. + + ```yaml + docker.io::OCI_URL/IMAGE_PROJECT,gcr.io::OCI_URL/IMAGE_PROJECT,ghcr.io::OCI_URL/IMAGE_PROJECT,k8s.gcr.io::OCI_URL/IMAGE_PROJECT,registry.k8s.io::OCI_URL/IMAGE_PROJECT,quay.io::OCI_URL/IMAGE_PROJECT" + ``` + + ::: + + ```yaml hideClipboard + ociImageRegistry: + endpoint: "my-oci-registry.com" + name: "Airgap Images OCI" + password: "" + username: "" + baseContentPath: "spectro-images" # + insecureSkipVerify: true + caCert: "" + mirrorRegistries: "docker.io::my-oci-registry.com/spectro-images,gcr.io::my-oci-registry.com/spectro-images,ghcr.io::my-oci-registry.com/spectro-images,k8s.gcr.io::my-oci-registry.com/spectro-images,registry.k8s.io::my-oci-registry.com/spectro-images,quay.io::my-oci-registry.com/spectro-images" + ``` + +7. Go ahead and install the image-swap chart using the following command. Point to the **values.yaml** file you + configured in steps five through six. + + ```shell + helm upgrade --values extras/image-swap/values.yaml \ + image-swap extras/image-swap/image-swap-*.tgz --install + ``` + + ```shell hideClipboard + Release "image-swap" does not exist. Installing it now. + NAME: image-swap + LAST DEPLOYED: Mon Jan 29 17:04:23 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 1 + TEST SUITE: None + ``` + + :::tip + + If you need to override the image-swap registry configuration post-deployment, refer to the + [Override Registry Configuration](../../../system-management/registry-override.md) page for instructions. + + ::: + +8. Open the **values.yaml** file in the **spectro-mgmt-plane** folder with a text editor of your choice. The + **values.yaml** file contains the default values for the Palette installation parameters. However, you must populate + the following parameters before installing Palette. You can learn more about the parameters on the **values.yaml** + file on the [Helm Configuration Reference](../vertex-helm-ref.md) page. + + Ensure you provide the proper `ociImageRegistry.mirrorRegistries` values if you are using a self-hosted OCI + registry. You can find the placeholder string in the `ociImageRegistry` section of the **values.yaml** file. + + | **Parameter** | **Description** | **Type** | + | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | + | `env.rootDomain` | The URL name or IP address you will use for the VerteX installation. | string | + | `config.installationMode` | The installation mode for VerteX. The values can be `connected` or `airgap`. Set this value to `airgap`. | string | + | `ociPackEcrRegistry` | The OCI registry credentials for the VerteX FIPS packs repository. | object | + | `ociImageRegistry` | The OCI registry credentials for the VerteX images repository. | object | + | `ociImageRegistry.mirrorRegistries` | Replace the placeholder string with the respective values of your OCI registry repository that is hosting the images. Do not use the same values you provided to the image-swap **values.yaml**. The placeholders require a `/v2/` endpoint if your OCI registry supports the Docker Registry protocol v2, otherwise container pull images will fail. | + | `imageSwapImages` | The image swap configuration for VerteX. If you are using an OCI registry, such as Harbor. Replace the prefix URLs with your OCI registry URL that includes the image namespace or project: `/`. | object | + | `imageSwapConfig.isEKSCluster` | If you are NOT installing VerteX on an EKS cluster, set this value to `false`. | boolean | + | `scar` | Specify your HTTP file server values. If your HTTP file server requires credentials ensure the provided values are base64-encoded. Example of the string "admin" encoded in base64 - `YWRtaW4=`. | object | + | `ingress.enabled` | Whether to install the Nginx ingress controller. Set this to `false` if you already have an Nginx controller deployed in the cluster. | boolean | + | `reach-system` | Set `reach-system.enabled` to `true` and configure the `reach-system.proxySettings` parameters for VerteX to use a network proxy in your environment. | object | + + Save the **values.yaml** file after you have populated the required parameters mentioned in the table. + + :::warning + + VerteX VerteX does not support insecure connections. Ensure you have the Certificate Authority (CA) available, in + PEM format, when using a custom packs and image registry. Otherwise, VerteX will not be able to pull packs and + images from the registry. Use the `caCert` parameter to provide the base64-encoded CA certificate. + + ::: + + Select one of the following tabs to review an example of the **values.yaml** file with the required parameters + highlighted. + + + + + + + ```yaml {23,53,87-95,97-102,104-106,109} + ######################### + # Spectro Cloud VerteX # + ######################### + # MongoDB Configuration + mongo: + # Whether to deploy MongoDB in-cluster (internal == true) or use Mongo Atlas + internal: true + + # Mongodb URL. Only change if using Mongo Atlas. + databaseUrl: "mongo-0.mongo,mongo-1.mongo,mongo-2.mongo" + # Mongo Atlas password, base64 encoded. Only enter if using Mongo Atlas. + databasePassword: "" + + # No. of mongo replicas to run, default is 3 + replicas: 3 + # The following only apply if mongo.internal == true + cpuLimit: "2000m" + memoryLimit: "4Gi" + pvcSize: "20Gi" + storageClass: "" # leave empty to use the default storage class + + config: + installationMode: "airgap" # values can be connected or airgap. + + # SSO SAML Configuration (Optional for self-hosted type) + sso: + saml: + enabled: false + acsUrlRoot: "myfirstpalette.spectrocloud.com" + acsUrlScheme: "https" + audienceUrl: "https://www.spectrocloud.com" + entityId: "https://www.spectrocloud.com" + apiVersion: "v1" + + # Email Configurations. (Optional for self-hosted type) + email: + enabled: false + emailId: "noreply@spectrocloud.com" + smtpServer: "smtp.gmail.com" + smtpPort: 587 + insecureSkipVerifyTls: true + fromEmailId: "noreply@spectrocloud.com" + password: "" # base64 encoded SMTP password + + env: + # rootDomain is a DNS record which will be mapped to the ingress-nginx-controller load balancer + # E.g., myfirstpalette.spectrocloud.com + # - Mandatory if ingress.internal == false + # - Optional if ingress.internal == true (leave empty) + # + # IMPORTANT: a DNS record must be created separately and it must be a wildcard to account for Organization prefixes + # E.g., *.myfirstpalette.spectrocloud.com + rootDomain: "vertex.example.com" + + # stableEndpointAccess is used when deploying EKS clusters in Private network type. + # When your Saas installed instance have connectivity to the private VPC where you want to launch the cluster set the stableEndpointAccess to true + cluster: + stableEndpointAccess: false + + # registry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # insecureSkipVerify: false + # caCert: "" + + # ociPackRegistry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # baseContentPath: "" # + # insecureSkipVerify: false + # caCert: "" + + # ociPackEcrRegistry: + # endpoint: "" # + # name: "" # + # accessKey: "" # + # secretKey: "" # + # baseContentPath: "" # + # isPrivate: true + # insecureSkipVerify: false + # caCert: "" + + ociImageRegistry: + endpoint: "my-oci-registry.com" # + name: "Airgap Image OCI" # + password: "" # + username: "" # + baseContentPath: "spectro-images" # + insecureSkipVerify: true + caCert: "" + mirrorRegistries: "docker.io::my-oci-registry.com/v2/spectro-images,gcr.io::my-oci-registry.com/v2/spectro-images,ghcr.io::my-oci-registry.com/v2/spectro-images,k8s.gcr.io::my-oci-registry.com/v2/spectro-images,registry.k8s.io::my-oci-registry.com/v2/spectro-images,quay.io::my-oci-registry.com/v2/spectro-images" + + scar: + endpoint: "http://10.15.20.15:2015" + username: "YWRtaW4=" + password: "YWRtaW4=" + insecureSkipVerify: true + caCert: "" + + imageSwapImages: + imageSwapInitImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/thewebroot/imageswap-init:v1.5.2" + imageSwapImage: "my-oci-registry.com/spectro-images/gcr.io/spectro-images-public/release-fips/thewebroot/imageswap:v1.5.2" + + imageSwapConfig: + isEKSCluster: true #If the Cluster you are trying to install is EKS cluster set value to true else set to false + + nats: + # Should we install nats as part of the nats chart bundled with hubble charts + # If not enabled NATS service should be installed as a separate service. + + enabled: true + + # Whether to front NATS with a cloud load balancer (internal == false) or + # either share the ingress load balancer or use hostNetwork (internal == true). + # See nats.natsUrl comments for further detail. + internal: true + + # NATS URL + # Comma separated list of mappings for nats load balancer service + # E.g., "message1.dev.spectrocloud.com:4222,message2.dev.spectrocloud.com:4222" + # + # Mandatory if nats.internal == false + # Otherwise, if nats.internal == true: + # - If ingress.ingress.internal == true: leave empty (use hostNetwork) + # - If ingress.ingress.internal == false: use ":4222" (share ingress lb) + natsUrl: "" + + # *********************** IMPORTANT NOTE ****************************** + # * if nats.internal == true, ignore all of the following NATS config * + # ********************************************************************* + + # NATS load balancer annotations + annotations: {} + + # AWS example + # service.beta.kubernetes.io/aws-load-balancer-ssl-cert: + # service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "server-port" + # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp + + # Azure example + # service.beta.kubernetes.io/azure-load-balancer-internal: "true" + # service.beta.kubernetes.io/azure-dns-label-name: myserviceuniquelabel + + # Static IP for the nats loadbalancer service. If empty, a dynamic IP will be generated. + natsStaticIP: "" + grpc: + external: false + endpoint: "" # Please provide DNS endpoint with the port eg: msg.spectrocloud.com:443 + caCertificateBase64: "" # Please provide caCertificate for the grpc server Cert + serverCrtBase64: "" + serverKeyBase64: "" + insecureSkipVerify: false + + ingress: + # When enabled nginx ingress controller would be installed + enabled: true + + ingress: + # Whether to front NGINX Ingress Controller with a cloud + # load balancer (internal == false) or use host network + internal: false + + # Default SSL certificate and key for NGINX Ingress Controller (Optional) + # A wildcard cert for config.env.rootDomain, e.g., *.myfirstpalette.spectrocloud.com + # If left blank, the NGINX ingress controller will generate a self-signed cert (when terminating TLS upstream of ingress-nginx-controller) + certificate: "" + key: "" + + #If ACM is enabled please use grpc as a non internal and bring grpc on different LB. Provide certificate and dns for it. + annotations: {} + # AWS example + # service.beta.kubernetes.io/aws-load-balancer-internal: "true" + # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp + # service.beta.kubernetes.io/aws-load-balancer-ssl-cert: + # service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https" + + # Azure example + # service.beta.kubernetes.io/azure-load-balancer-internal: "true" + # service.beta.kubernetes.io/azure-dns-label-name: myserviceuniquelabel + + # Static IP for the Ingress load balancer service. If empty, a dynamic IP will be generated. + ingressStaticIP: "" + + # For Service like AWS Load Balancer using https we would want to terminate the HTTPS at Load Balancer. + terminateHTTPSAtLoadBalancer: false + nats: + enabled: true + + frps: + frps: + enabled: false + frpHostURL: proxy.sample.spectrocloud.com + server: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURqekNDQW5lZ0F3SUJBZ0lVZTVMdXBBZGljd0Z1SFJpWWMyWEgzNTFEUzJJd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tERW1NQ1FHQTFVRUF3d2RjSEp2ZUhrdWMyRnRjR3hsTG5Od1pXTjBjbTlqYkc5MVpDNWpiMjB3SGhjTgpNakl4TURFME1UTXlOREV5V2hjTk1qY3hNREV6TVRNeU5ERXlXakI3TVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHCkExVUVDQk1DUTBFeEV6QVJCZ05WQkFjVENsTmhiblJoUTJ4aGNtRXhGVEFUQmdOVkJBb1RERk53WldOMGNtOUQKYkc5MVpERUxNQWtHQTFVRUN4TUNTVlF4SmpBa0JnTlZCQU1USFhCeWIzaDVMbk5oYlhCc1pTNXpjR1ZqZEhKdgpZMnh2ZFdRdVkyOXRNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXd5bEt3MmlxClBXM2JrQU0wV3RhaEFLbEppcWFHd05LUDVRRTZ6ZW5NM2FURko3TjIwN0dWcUNGYzJHTDNodmNhTDFranZjeEkKK2lybHpkbm9hcVhUSmV3ZkJiTGs2SGVhZmdXUVp3NHNNeE5QRUVYYlNXYm54Mm03Y2FlbVJiUWZSQWhPWXRvWgpIWG1IMzQ1Q25mNjF0RnhMeEEzb0JRNm1yb0JMVXNOOUh2WWFzeGE5QUFmZUNNZm5sYWVBWE9CVmROalJTN1VzCkN5NmlSRXpEWFgvem1nOG5WWFUwemlrcXdoS3pqSlBJd2FQa2ViaXVSdUJYdEZ0VlQwQmFzS3VqbURzd0lsRFQKVmR4SHRRQUVyUmM4Q2Nhb20yUkpZbTd1aHNEYlo2WVFzS3JiMmhIbU5rNENVWUd5eUJPZnBwbzR2bFd1S2FEcgpsVFNYUXlPN0M0ejM1d0lEQVFBQm8xNHdYREJhQmdOVkhSRUVVekJSZ2dsc2IyTmhiR2h2YzNTSEJIOEFBQUdDCkhYQnliM2g1TG5OaGJYQnNaUzV6Y0dWamRISnZZMnh2ZFdRdVkyOXRnaDhxTG5CeWIzaDVMbk5oYlhCc1pTNXoKY0dWamRISnZZMnh2ZFdRdVkyOXRNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUEvRFJFVm54SWJRdi9uMDEvSQpJd1d0ekhKNGNHOUp6UlB6dmszNUcvRGJOVzZYZ0M3djBoWlFIVHg5bzMrckxoSUFiWTNmbjc1VEtlN3hMRWpiCkI3M3pGWURJSStkYzM5NkQzZU51M2NxRGIvY01kYmlFalhod2ttZk9NRm9qMnpOdHJIdzFsSjA0QlNFMWw1YWgKMDk0Vy9aaEQ2YTVLU3B0cDh1YUpKVmNrejRYMEdRWjVPYjZadGdxZVVxNytqWVZOZ0tLQzJCMW1SNjMyMDNsZwozVFZmZEkrdmI3b292dVdOOFRBVG9qdXNuS25WMmRMeTFBOWViWXYwMEM3WWZ6Q0NhODgrN2dzTGhJaUJjRHBPClJkWjU3QStKanJmSU5IYy9vNm5YWFhDZ2h2YkFwUVk1QnFnMWIzYUpUZERNWThUY0hoQVVaQzB5eU04bXcwMnQKWHRRQwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBd3lsS3cyaXFQVzNia0FNMFd0YWhBS2xKaXFhR3dOS1A1UUU2emVuTTNhVEZKN04yCjA3R1ZxQ0ZjMkdMM2h2Y2FMMWtqdmN4SStpcmx6ZG5vYXFYVEpld2ZCYkxrNkhlYWZnV1FadzRzTXhOUEVFWGIKU1dibngybTdjYWVtUmJRZlJBaE9ZdG9aSFhtSDM0NUNuZjYxdEZ4THhBM29CUTZtcm9CTFVzTjlIdllhc3hhOQpBQWZlQ01mbmxhZUFYT0JWZE5qUlM3VXNDeTZpUkV6RFhYL3ptZzhuVlhVMHppa3F3aEt6akpQSXdhUGtlYml1ClJ1Qlh0RnRWVDBCYXNLdWptRHN3SWxEVFZkeEh0UUFFclJjOENjYW9tMlJKWW03dWhzRGJaNllRc0tyYjJoSG0KTms0Q1VZR3l5Qk9mcHBvNHZsV3VLYURybFRTWFF5TzdDNHozNXdJREFRQUJBb0lCQUFPVVZFeTFOTG9mczdFMgpmZFZVcm10R3I1U2RiVWRJRlYrTDREbzZtWWxQSmxhT0VoWGI0ZlROZDloNEtEWVBmaWwwSnhXcUU0U1RHTmZuCnNUMlRnUVhuQ01LZi8xYk1Lc2M0N3VjVStYYU9XaHJnVFI5UmhkckFjN0duODRLL3hQc0ljL2VZTEhHLzh1QUUKeWUvLzVmRkM2QmpXY0hUM1NkTlZnd3duamJudG5XTXIzTFJBVnJBamZBckxveWUwS0F2YytYdXJLTEVCcmMyVQpjaHlDbitZemJKN0VlSG44UXdQNGdBNXVSK0NCMFJPeFErYXIzS3M5YUhkZTQ1OEVNNEtLMnpUOXA4RWZRc1lFCkFtNUpxWjliR0JEVHV1dEkyNm9GK0pLQ1IzZzhXNERRcHVYRUZoVjlya0pMSm13RDhQb0JaclF6UzZvdmJhdkkKRk42QVM4RUNnWUVBOEcxQzFxZVh4dTQ4aEYxak5MTCswRmxkeWdFem9SMmFoRGJCai8weUZkQVVjU2pYTzk0NAozN1dORTBUUG10WG1Vc3NZTlBTR21XaWI2OUhicEFoMTY3SWVwNE9LaVlZdkozYm1oUC9WNzFvK3M0SWJlSHh1CkVJbWVVckFOZWRoQURVQnZ4c1lXRWxlVlVJSFFRcjY1VHM2ZjIrWkpTKzg4TU05bUorL3BmcmNDZ1lFQXo4MXgKR3JiSE5oak56RjhZMjhiK0hMNW5rdDR0SUdkU3hnbW9PMFFJeGkrQVNZTzB0WW42VFk0ZHI5ZXErMzE3b21ZawpMbDNtNENORDhudG1vYzRvWnM4SUpDQ0IrZjNqcTY4OHdoQU9vVHZ4dDhjZVJqOFRhRHl1SHZwS043OVNsVVd2CjBJd2ZRNDNIemd3SWJiSWhjcTRJVGswanI0VHdWbThia283VElGRUNnWUJoNnUzVXhHN0JHeGZVaE1BNW4waSsKREJkeGhPbkZEV3gzdW1FOHhrN1dxV2NaNnhzMWk3eTRCNVhNS2pNdkNUeURyYWxQTCtOOXFTZ1BjK216TmFybwo4aU1mOENmRStMeE5vMVFoQ0p6Vm5YaDUzVnhZeHJ5QXlidU1TNTFCYVh3MHFYQ2NrT0krV0NNOHBaSHZEUVFsCmYydUZ3SlZMY3NTZDBHbjNpL01ab3dLQmdBY1BzUjg2Uk15MnpROTd6OGx3R3FSNVorV2F2U2ZUdXdGVnhLeTIKNUNGdjdja1J1NnRMbEFEY3FtK1dRWTRvTm5KUFREMXpIV3hTWm5XdjhjM2Z4b212MFZRQThzbSs4ZVNjb05EcgpZTVBqMkpQcEpVTTMwMzRBU2Q1dG5PWUdEMVZaTjk4N1U3aWs4Ynd6dG5tYnl2MHRvc1NlWkc4TGNtdE5mVDllCnNSZnhBb0dCQUpTV1lDellyTlRMNnRUSnh5M2FqWm5jZkxrMEV0eWNCd05FRXZHVzVSVE9LOUFYTE96RzN0eHUKajZqWlRpaUFRU09aaVd0clJHU0U0bEkyQ1MvcjNjd3VuSGlnZlovd1dKZldkZ0JpRnZqOTVFbUVQWUZaRDRobQpkT3l5UHhRRXFTRmprQ21BS2plOFBpTDdpU01GbGhBZTZQWFljQlExdCtzd01UeXBnY3RrCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== + ca: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURNVENDQWhtZ0F3SUJBZ0lVSHhWK0ljVGZHUElzdW8yY3dqQ0Q0Z2RSTFFRd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tERW1NQ1FHQTFVRUF3d2RjSEp2ZUhrdWMyRnRjR3hsTG5Od1pXTjBjbTlqYkc5MVpDNWpiMjB3SGhjTgpNakl4TURFME1UTXlOREV5V2hjTk16WXdOakl5TVRNeU5ERXlXakFvTVNZd0pBWURWUVFEREIxd2NtOTRlUzV6CllXMXdiR1V1YzNCbFkzUnliMk5zYjNWa0xtTnZiVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0MKQVFvQ2dnRUJBSy90WXBHVi9HRURUWnZzL25QQ2lOK0U3K1dOQ21GeU1NQjdkazVOT3JzQWZIaVVvZ1JRVUo0WQptSjhwVmYrSzhTRFBsdGNYcW40WVVTbmxiUERsVlBkWU5zOTEwT3RaS1EwNW96aUtGV2pNbS85NHlLSjVyVzNsCndDNEN0ayttUm9Ib0ZQQS81dmFVbVZHdlVadjlGY0JuL0pKN2F4WnRIQk1PRiticXQ0Zmd0ci9YMWdOeWhPVzUKZTVScGpESkozRjJTVnc5NUpBQSt4a3V3UitFSmVseEtnQVpxdDc0ejB4U2ROODZ0QzNtK0wxRGs2WVVlQWEzZApvM3Rsa3ZkeDV6dUJvSmI2QmpZWEV4UE1PbThRcHFNVWRLK3lDZUdrem9XQStDOUtFdGtVaERCWktENStNWXRZCktVMUh1RXJCbmw2Z3BuWTRlbzJjVTRxdkNwZzZ4S3NDQXdFQUFhTlRNRkV3SFFZRFZSME9CQllFRklKMkRkTjgKc2ZtVjRCT1ZFL0FjZ0VEejArNmlNQjhHQTFVZEl3UVlNQmFBRklKMkRkTjhzZm1WNEJPVkUvQWNnRUR6MCs2aQpNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQWhQVi9RMVl1YWVTOTZVCmhjVGQ4RWdJaHhpbHFiTWlTQm5WaVdrdlJzWk94UUIwNTFScWtwT3g0UTRsckdaOGVJWWc3T0trTTdzejhuTVQKL2pxS21sZDY0MzJCcURCMlNkNVp5ZFdReHAwU1laRTlnVWszYk9KRGtZVXQ4b1cvZDBWeG9uU05LQVN3QmZKaApWV1VZUUlpNm55K0ZZZmtuRFNvRnFlY2Z3SDBQQVUraXpnMkI3KzFkbko5YisyQ21IOUVCallOZ2hoNlFzVlFQCkh2SkdQQURtandPNkJOam5HK0Z3K0Z6cmFXUTNCTjAwb08zUjF6UmgxZERmTTQzR3oxRmZGRW5GSXI5aGFuUnQKWHJFZm8vZWU5bjBLWUFESEJnV1g4dlhuNHZrRmdWRjgwYW9MUUJSQTBxWXErcW1pVlp6YnREeE9ldFEyRWFyTQpyNmVWL0lZPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + service: + annotations: {} + + ui-system: + enabled: true + ui: + nocUI: + enable: true + mapBoxAccessToken: "" # Leave Empty to use Default Access Token from Palette + mapBoxStyledLayerID: "" # Leave Empty to use Default Style Layer ID + + reachSystem: + enabled: false + proxySettings: + http_proxy: "" + https_proxy: "" + no_proxy: "" + ca_crt_path: "" # Set the 'ca_crt_path' parameter to the location of the certificate file on each node. + scheduleOnControlPlane: true + ``` + + + + + + ```yaml {23,53,77-85,87-95,110-115} + ######################### + # Spectro Cloud VerteX # + ######################### + # MongoDB Configuration + mongo: + # Whether to deploy MongoDB in-cluster (internal == true) or use Mongo Atlas + internal: true + + # Mongodb URL. Only change if using Mongo Atlas. + databaseUrl: "mongo-0.mongo,mongo-1.mongo,mongo-2.mongo" + # Mongo Atlas password, base64 encoded. Only enter if using Mongo Atlas. + databasePassword: "" + + # No. of mongo replicas to run, default is 3 + replicas: 3 + # The following only apply if mongo.internal == true + cpuLimit: "2000m" + memoryLimit: "4Gi" + pvcSize: "20Gi" + storageClass: "" # leave empty to use the default storage class + + config: + installationMode: "airgap" # values can be connected or airgap. + + # SSO SAML Configuration (Optional for self-hosted type) + sso: + saml: + enabled: false + acsUrlRoot: "myfirstpalette.spectrocloud.com" + acsUrlScheme: "https" + audienceUrl: "https://www.spectrocloud.com" + entityId: "https://www.spectrocloud.com" + apiVersion: "v1" + + # Email Configurations. (Optional for self-hosted type) + email: + enabled: false + emailId: "noreply@spectrocloud.com" + smtpServer: "smtp.gmail.com" + smtpPort: 587 + insecureSkipVerifyTls: true + fromEmailId: "noreply@spectrocloud.com" + password: "" # base64 encoded SMTP password + + env: + # rootDomain is a DNS record which will be mapped to the ingress-nginx-controller load balancer + # E.g., myfirstpalette.spectrocloud.com + # - Mandatory if ingress.internal == false + # - Optional if ingress.internal == true (leave empty) + # + # IMPORTANT: a DNS record must be created separately and it must be a wildcard to account for Organization prefixes + # E.g., *.myfirstpalette.spectrocloud.com + rootDomain: "vertex.example.com" + + # stableEndpointAccess is used when deploying EKS clusters in Private network type. + # When your Saas installed instance have connectivity to the private VPC where you want to launch the cluster set the stableEndpointAccess to true + cluster: + stableEndpointAccess: false + + # registry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # insecureSkipVerify: false + # caCert: "" + + # ociPackRegistry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # baseContentPath: "" # + # insecureSkipVerify: false + # caCert: "" + + ociPackEcrRegistry: + endpoint: "123456789.dkr.ecr.us-east-1.amazonaws.com" # + name: "Airgap Packs OCI" # + accessKey: "*************" # + secretKey: "*************" # + baseContentPath: "production-fips" # + isPrivate: true + insecureSkipVerify: true + caCert: "" + + ociImageRegistry: + endpoint: "public.ecr.aws/123456789" # + name: "Airgap Images OCI" # + password: "" # + username: "" # + baseContentPath: "spectro-images" # + insecureSkipVerify: false + caCert: "" + mirrorRegistries: "docker.io::public.ecr.aws/123456789/v2/spectr-images,gcr.io::public.ecr.aws/123456789/v2/spectro-images,ghcr.io::public.ecr.aws/123456789/v2/spectro-images,k8s.gcr.io::public.ecr.aws/123456789/v2/spectro-images,registry.k8s.io::public.ecr.aws/123456789/v2/spectro-images,quay.io::public.ecr.aws/123456789/v2/spectro-imagesßßß" + # + # Instruction for mirrorRegistries. + # ---------------------------------- + # Please provide the registry endpoint for the following registries, separated by double colons (::): + # docker.io + # gcr.io + # ghcr.io + # k8s.gcr.io + # registry.k8s.io + # quay.io + # For each registry, follow this example format: + # docker.io::/v2/,gcr.io::/v2/,ghcr.io::/v2/,k8s.gcr.io::/v2/,registry.k8s.io::/v2/,quay.io::/v2/ + # Replace with your actual registry endpoint and , , , , , and with the specific endpoint details for each registry. + + scar: + endpoint: "http://10.15.20.15:2015" + username: "YWRtaW4=" + password: "YWRtaW4=" + insecureSkipVerify: true + caCert: "" + + imageSwapImages: + imageSwapInitImage: "public.ecr.aws/123456789/gcr.io/spectro-images-public/release-fips/thewebroot/imageswap-init:v1.5.2" + imageSwapImage: "public.ecr.aws/123456789/gcr.io/spectro-images-public/release-fips/thewebroot/imageswap:v1.5.2" + + imageSwapConfig: + isEKSCluster: true # If the Cluster you are trying to install is EKS cluster set value to true else set to false + + nats: + # Should we install nats as part of the nats chart bundled with hubble charts + # If not enabled NATS service should be installed as a separate service. + + enabled: true + + # Whether to front NATS with a cloud load balancer (internal == false) or + # either share the ingress load balancer or use hostNetwork (internal == true). + # See nats.natsUrl comments for further detail. + internal: true + + # NATS URL + # Comma separated list of mappings for nats load balancer service + # E.g., "message1.dev.spectrocloud.com:4222,message2.dev.spectrocloud.com:4222" + # + # Mandatory if nats.internal == false + # Otherwise, if nats.internal == true: + # - If ingress.ingress.internal == true: leave empty (use hostNetwork) + # - If ingress.ingress.internal == false: use ":4222" (share ingress lb) + natsUrl: "" + + # *********************** IMPORTANT NOTE ****************************** + # * if nats.internal == true, ignore all of the following NATS config * + # ********************************************************************* + + # NATS load balancer annotations + annotations: {} + + # AWS example + # service.beta.kubernetes.io/aws-load-balancer-ssl-cert: + # service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "server-port" + # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp + + # Azure example + # service.beta.kubernetes.io/azure-load-balancer-internal: "true" + # service.beta.kubernetes.io/azure-dns-label-name: myserviceuniquelabel + + # Static IP for the nats loadbalancer service. If empty, a dynamic IP will be generated. + natsStaticIP: "" + grpc: + external: false + endpoint: "" #Please provide DNS endpoint with the port eg: msg.spectrocloud.com:443 + caCertificateBase64: "" #Please provide caCertificate for the grpc server Cert + serverCrtBase64: "" + serverKeyBase64: "" + insecureSkipVerify: false + + ingress: + # When enabled nginx ingress controller would be installed + enabled: true + + ingress: + # Whether to front NGINX Ingress Controller with a cloud + # load balancer (internal == false) or use host network + internal: false + + # Default SSL certificate and key for NGINX Ingress Controller (Optional) + # A wildcard cert for config.env.rootDomain, e.g., *.myfirstpalette.spectrocloud.com + # If left blank, the NGINX ingress controller will generate a self-signed cert (when terminating TLS upstream of ingress-nginx-controller) + certificate: "" + key: "" + + # If ACM is enabled please use grpc as a non internal and bring grpc on different LB. Provide certificate and dns for it. + annotations: {} + # AWS example + # service.beta.kubernetes.io/aws-load-balancer-internal: "true" + # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp + # service.beta.kubernetes.io/aws-load-balancer-ssl-cert: + # service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https" + + # Azure example + # service.beta.kubernetes.io/azure-load-balancer-internal: "true" + # service.beta.kubernetes.io/azure-dns-label-name: myserviceuniquelabel + + # Static IP for the Ingress load balancer service. If empty, a dynamic IP will be generated. + ingressStaticIP: "" + + # For Service like AWS Load Balancer using https we would want to terminate the HTTPS at Load Balancer. + terminateHTTPSAtLoadBalancer: false + nats: + enabled: true + + frps: + frps: + enabled: false + frpHostURL: proxy.sample.spectrocloud.com + server: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURqekNDQW5lZ0F3SUJBZ0lVZTVMdXBBZGljd0Z1SFJpWWMyWEgzNTFEUzJJd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tERW1NQ1FHQTFVRUF3d2RjSEp2ZUhrdWMyRnRjR3hsTG5Od1pXTjBjbTlqYkc5MVpDNWpiMjB3SGhjTgpNakl4TURFME1UTXlOREV5V2hjTk1qY3hNREV6TVRNeU5ERXlXakI3TVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHCkExVUVDQk1DUTBFeEV6QVJCZ05WQkFjVENsTmhiblJoUTJ4aGNtRXhGVEFUQmdOVkJBb1RERk53WldOMGNtOUQKYkc5MVpERUxNQWtHQTFVRUN4TUNTVlF4SmpBa0JnTlZCQU1USFhCeWIzaDVMbk5oYlhCc1pTNXpjR1ZqZEhKdgpZMnh2ZFdRdVkyOXRNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXd5bEt3MmlxClBXM2JrQU0wV3RhaEFLbEppcWFHd05LUDVRRTZ6ZW5NM2FURko3TjIwN0dWcUNGYzJHTDNodmNhTDFranZjeEkKK2lybHpkbm9hcVhUSmV3ZkJiTGs2SGVhZmdXUVp3NHNNeE5QRUVYYlNXYm54Mm03Y2FlbVJiUWZSQWhPWXRvWgpIWG1IMzQ1Q25mNjF0RnhMeEEzb0JRNm1yb0JMVXNOOUh2WWFzeGE5QUFmZUNNZm5sYWVBWE9CVmROalJTN1VzCkN5NmlSRXpEWFgvem1nOG5WWFUwemlrcXdoS3pqSlBJd2FQa2ViaXVSdUJYdEZ0VlQwQmFzS3VqbURzd0lsRFQKVmR4SHRRQUVyUmM4Q2Nhb20yUkpZbTd1aHNEYlo2WVFzS3JiMmhIbU5rNENVWUd5eUJPZnBwbzR2bFd1S2FEcgpsVFNYUXlPN0M0ejM1d0lEQVFBQm8xNHdYREJhQmdOVkhSRUVVekJSZ2dsc2IyTmhiR2h2YzNTSEJIOEFBQUdDCkhYQnliM2g1TG5OaGJYQnNaUzV6Y0dWamRISnZZMnh2ZFdRdVkyOXRnaDhxTG5CeWIzaDVMbk5oYlhCc1pTNXoKY0dWamRISnZZMnh2ZFdRdVkyOXRNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUEvRFJFVm54SWJRdi9uMDEvSQpJd1d0ekhKNGNHOUp6UlB6dmszNUcvRGJOVzZYZ0M3djBoWlFIVHg5bzMrckxoSUFiWTNmbjc1VEtlN3hMRWpiCkI3M3pGWURJSStkYzM5NkQzZU51M2NxRGIvY01kYmlFalhod2ttZk9NRm9qMnpOdHJIdzFsSjA0QlNFMWw1YWgKMDk0Vy9aaEQ2YTVLU3B0cDh1YUpKVmNrejRYMEdRWjVPYjZadGdxZVVxNytqWVZOZ0tLQzJCMW1SNjMyMDNsZwozVFZmZEkrdmI3b292dVdOOFRBVG9qdXNuS25WMmRMeTFBOWViWXYwMEM3WWZ6Q0NhODgrN2dzTGhJaUJjRHBPClJkWjU3QStKanJmSU5IYy9vNm5YWFhDZ2h2YkFwUVk1QnFnMWIzYUpUZERNWThUY0hoQVVaQzB5eU04bXcwMnQKWHRRQwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBd3lsS3cyaXFQVzNia0FNMFd0YWhBS2xKaXFhR3dOS1A1UUU2emVuTTNhVEZKN04yCjA3R1ZxQ0ZjMkdMM2h2Y2FMMWtqdmN4SStpcmx6ZG5vYXFYVEpld2ZCYkxrNkhlYWZnV1FadzRzTXhOUEVFWGIKU1dibngybTdjYWVtUmJRZlJBaE9ZdG9aSFhtSDM0NUNuZjYxdEZ4THhBM29CUTZtcm9CTFVzTjlIdllhc3hhOQpBQWZlQ01mbmxhZUFYT0JWZE5qUlM3VXNDeTZpUkV6RFhYL3ptZzhuVlhVMHppa3F3aEt6akpQSXdhUGtlYml1ClJ1Qlh0RnRWVDBCYXNLdWptRHN3SWxEVFZkeEh0UUFFclJjOENjYW9tMlJKWW03dWhzRGJaNllRc0tyYjJoSG0KTms0Q1VZR3l5Qk9mcHBvNHZsV3VLYURybFRTWFF5TzdDNHozNXdJREFRQUJBb0lCQUFPVVZFeTFOTG9mczdFMgpmZFZVcm10R3I1U2RiVWRJRlYrTDREbzZtWWxQSmxhT0VoWGI0ZlROZDloNEtEWVBmaWwwSnhXcUU0U1RHTmZuCnNUMlRnUVhuQ01LZi8xYk1Lc2M0N3VjVStYYU9XaHJnVFI5UmhkckFjN0duODRLL3hQc0ljL2VZTEhHLzh1QUUKeWUvLzVmRkM2QmpXY0hUM1NkTlZnd3duamJudG5XTXIzTFJBVnJBamZBckxveWUwS0F2YytYdXJLTEVCcmMyVQpjaHlDbitZemJKN0VlSG44UXdQNGdBNXVSK0NCMFJPeFErYXIzS3M5YUhkZTQ1OEVNNEtLMnpUOXA4RWZRc1lFCkFtNUpxWjliR0JEVHV1dEkyNm9GK0pLQ1IzZzhXNERRcHVYRUZoVjlya0pMSm13RDhQb0JaclF6UzZvdmJhdkkKRk42QVM4RUNnWUVBOEcxQzFxZVh4dTQ4aEYxak5MTCswRmxkeWdFem9SMmFoRGJCai8weUZkQVVjU2pYTzk0NAozN1dORTBUUG10WG1Vc3NZTlBTR21XaWI2OUhicEFoMTY3SWVwNE9LaVlZdkozYm1oUC9WNzFvK3M0SWJlSHh1CkVJbWVVckFOZWRoQURVQnZ4c1lXRWxlVlVJSFFRcjY1VHM2ZjIrWkpTKzg4TU05bUorL3BmcmNDZ1lFQXo4MXgKR3JiSE5oak56RjhZMjhiK0hMNW5rdDR0SUdkU3hnbW9PMFFJeGkrQVNZTzB0WW42VFk0ZHI5ZXErMzE3b21ZawpMbDNtNENORDhudG1vYzRvWnM4SUpDQ0IrZjNqcTY4OHdoQU9vVHZ4dDhjZVJqOFRhRHl1SHZwS043OVNsVVd2CjBJd2ZRNDNIemd3SWJiSWhjcTRJVGswanI0VHdWbThia283VElGRUNnWUJoNnUzVXhHN0JHeGZVaE1BNW4waSsKREJkeGhPbkZEV3gzdW1FOHhrN1dxV2NaNnhzMWk3eTRCNVhNS2pNdkNUeURyYWxQTCtOOXFTZ1BjK216TmFybwo4aU1mOENmRStMeE5vMVFoQ0p6Vm5YaDUzVnhZeHJ5QXlidU1TNTFCYVh3MHFYQ2NrT0krV0NNOHBaSHZEUVFsCmYydUZ3SlZMY3NTZDBHbjNpL01ab3dLQmdBY1BzUjg2Uk15MnpROTd6OGx3R3FSNVorV2F2U2ZUdXdGVnhLeTIKNUNGdjdja1J1NnRMbEFEY3FtK1dRWTRvTm5KUFREMXpIV3hTWm5XdjhjM2Z4b212MFZRQThzbSs4ZVNjb05EcgpZTVBqMkpQcEpVTTMwMzRBU2Q1dG5PWUdEMVZaTjk4N1U3aWs4Ynd6dG5tYnl2MHRvc1NlWkc4TGNtdE5mVDllCnNSZnhBb0dCQUpTV1lDellyTlRMNnRUSnh5M2FqWm5jZkxrMEV0eWNCd05FRXZHVzVSVE9LOUFYTE96RzN0eHUKajZqWlRpaUFRU09aaVd0clJHU0U0bEkyQ1MvcjNjd3VuSGlnZlovd1dKZldkZ0JpRnZqOTVFbUVQWUZaRDRobQpkT3l5UHhRRXFTRmprQ21BS2plOFBpTDdpU01GbGhBZTZQWFljQlExdCtzd01UeXBnY3RrCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== + ca: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURNVENDQWhtZ0F3SUJBZ0lVSHhWK0ljVGZHUElzdW8yY3dqQ0Q0Z2RSTFFRd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tERW1NQ1FHQTFVRUF3d2RjSEp2ZUhrdWMyRnRjR3hsTG5Od1pXTjBjbTlqYkc5MVpDNWpiMjB3SGhjTgpNakl4TURFME1UTXlOREV5V2hjTk16WXdOakl5TVRNeU5ERXlXakFvTVNZd0pBWURWUVFEREIxd2NtOTRlUzV6CllXMXdiR1V1YzNCbFkzUnliMk5zYjNWa0xtTnZiVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0MKQVFvQ2dnRUJBSy90WXBHVi9HRURUWnZzL25QQ2lOK0U3K1dOQ21GeU1NQjdkazVOT3JzQWZIaVVvZ1JRVUo0WQptSjhwVmYrSzhTRFBsdGNYcW40WVVTbmxiUERsVlBkWU5zOTEwT3RaS1EwNW96aUtGV2pNbS85NHlLSjVyVzNsCndDNEN0ayttUm9Ib0ZQQS81dmFVbVZHdlVadjlGY0JuL0pKN2F4WnRIQk1PRiticXQ0Zmd0ci9YMWdOeWhPVzUKZTVScGpESkozRjJTVnc5NUpBQSt4a3V3UitFSmVseEtnQVpxdDc0ejB4U2ROODZ0QzNtK0wxRGs2WVVlQWEzZApvM3Rsa3ZkeDV6dUJvSmI2QmpZWEV4UE1PbThRcHFNVWRLK3lDZUdrem9XQStDOUtFdGtVaERCWktENStNWXRZCktVMUh1RXJCbmw2Z3BuWTRlbzJjVTRxdkNwZzZ4S3NDQXdFQUFhTlRNRkV3SFFZRFZSME9CQllFRklKMkRkTjgKc2ZtVjRCT1ZFL0FjZ0VEejArNmlNQjhHQTFVZEl3UVlNQmFBRklKMkRkTjhzZm1WNEJPVkUvQWNnRUR6MCs2aQpNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQWhQVi9RMVl1YWVTOTZVCmhjVGQ4RWdJaHhpbHFiTWlTQm5WaVdrdlJzWk94UUIwNTFScWtwT3g0UTRsckdaOGVJWWc3T0trTTdzejhuTVQKL2pxS21sZDY0MzJCcURCMlNkNVp5ZFdReHAwU1laRTlnVWszYk9KRGtZVXQ4b1cvZDBWeG9uU05LQVN3QmZKaApWV1VZUUlpNm55K0ZZZmtuRFNvRnFlY2Z3SDBQQVUraXpnMkI3KzFkbko5YisyQ21IOUVCallOZ2hoNlFzVlFQCkh2SkdQQURtandPNkJOam5HK0Z3K0Z6cmFXUTNCTjAwb08zUjF6UmgxZERmTTQzR3oxRmZGRW5GSXI5aGFuUnQKWHJFZm8vZWU5bjBLWUFESEJnV1g4dlhuNHZrRmdWRjgwYW9MUUJSQTBxWXErcW1pVlp6YnREeE9ldFEyRWFyTQpyNmVWL0lZPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + service: + annotations: {} + + ui-system: + enabled: true + ui: + nocUI: + enable: true + mapBoxAccessToken: "" # Leave Empty to use Default Access Token from Palette + mapBoxStyledLayerID: "" # Leave Empty to use Default Style Layer ID + + reachSystem: + enabled: false + proxySettings: + http_proxy: "" + https_proxy: "" + no_proxy: "" + ca_crt_path: "" # Set the 'ca_crt_path' parameter to the location of the certificate file on each node. + scheduleOnControlPlane: true + ``` + + + + + + :::warning + + Ensure you have configured the **values.yaml** file with the required parameters before proceeding to the next + steps. + + ::: + +9. This step is only required if you are installing VerteX in an environment where a network proxy must be configured + for VerteX to access the internet. If you are not using a network proxy, skip to the next step. + + Install the reach-system chart using the following command. Point to the **values.yaml** file you configured in the + step eight. + + ```shell + helm upgrade --values vertex/values.yaml \ + reach-system extras/reach-system/reach-system-*.tgz --install + ``` + + ```shell hideClipboard + Release "reach-system" does not exist. Installing it now. + NAME: reach-system + LAST DEPLOYED: Mon Jan 29 17:04:23 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 1 + TEST SUITE: None + ``` + +10. Install the VerteX Helm Chart using the following command. + + ```shell + helm upgrade --values vertex/values.yaml \ + hubble vertex/spectro-mgmt-plane-*.tgz --install + ``` + + ```shell hideClipboard + Release "hubble" does not exist. Installing it now. + NAME: hubble + LAST DEPLOYED: Mon Jan 29 17:07:51 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 1 + TEST SUITE: None + ``` + +11. Track the installation process using the command below. VerteX is ready when the deployments in the namespaces + `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system`, and `ui-system` reach the _Ready_ state. The + installation takes between two to three minutes to complete. + + ```shell + kubectl get pods --all-namespaces --watch + ``` + + :::tip + + For a more user-friendly experience, use the open-source tool [k9s](https://k9scli.io/) to monitor the installation + process. + + ::: + +12. Create a DNS CNAME record that is mapped to the VerteX `ingress-nginx-controller` load balancer. You can use the + following command to retrieve the load balancer IP address. You may require the assistance of your network + administrator to create the DNS record. + + ```shell + kubectl get service ingress-nginx-controller --namespace ingress-nginx \ + --output jsonpath='{.status.loadBalancer.ingress[0].hostname}' + ``` + + :::info + + As you create tenants in VerteX, the tenant name is prefixed to the domain name you assigned to VerteX. For example, + if you create a tenant named `tenant1` and the domain name you assigned to VerteX is `vertex.example.com`, the + tenant URL will be `tenant1.vertex.example.com`. You can create an additional wildcard DNS record to map all tenant + URLs to the VerteX load balancer. + + ::: + +13. Use the custom domain name or the IP address of the load balancer to visit the VerteX system console. To access the + system console, open a web browser, paste the custom domain URL in the address bar, and append the value `/system`. + + The first time you visit the VerteX system console, a warning message about a not-trusted SSL certificate may + appear. This is expected, as you have not yet uploaded your SSL certificate to VerteX. You can ignore this warning + message and proceed. + + ![Screenshot of the VerteX system console showing Username and Password fields.](/vertex_install-on-kubernetes_install_system-console.webp) + +14. Log in to the system console using the following default credentials. + + | **Parameter** | **Value** | + | ------------- | --------- | + | Username | `admin` | + | Password | `admin` | + + After login, you will be prompted to create a new password. Enter a new password and save your changes. You will be + redirected to the VerteX system console. + +15. After login, a summary page is displayed. VerteX is installed with a self-signed SSL certificate. To assign a + different SSL certificate, you must upload the SSL certificate, SSL certificate key, and SSL certificate authority + files to VerteX. You can upload the files using the VerteX system console. Refer to the + [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how + to upload the SSL certificate files to Palette. + + :::warning + + If you plan to deploy host clusters into different networks, you may require a reverse proxy. Check out the + [Configure Reverse Proxy](../../../system-management/reverse-proxy.md) guide for instructions on how to configure a + reverse proxy for VerteX. + + ::: + +You now have a self-hosted instance of VerteX installed in a Kubernetes cluster. Make sure you retain the +**values.yaml** file, as you may need it for future upgrades. + +## Validate + +Use the following steps to validate the VerteX installation. + +1. Open up a web browser and navigate to the VerteX system console. To access the system console, open a web browser, + paste the `env.rootDomain` value you provided in the address bar, and append the value `/system` in the following + format: `/system`. You can also use the IP address of the load balancer. + +2. Log in using the credentials you received from our support team. After login, you will be prompted to create a new + password. Enter a new password and save your changes. You will be redirected to the VerteX system console. + +3. Open a terminal session and issue the following command to verify the VerteX installation. The command should return + a list of deployments in the `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system`, and `ui-system` namespaces. + + ```shell + kubectl get pods --all-namespaces --output custom-columns="NAMESPACE:metadata.namespace,NAME:metadata.name,STATUS:status.phase" \ + | grep -E '^(cp-system|hubble-system|ingress-nginx|jet-system|ui-system)\s' + ``` + + Your output should look similar to the following. + + ```shell hideClipboard + cp-system spectro-cp-ui-689984f88d-54wsw Running + hubble-system auth-85b748cbf4-6drkn Running + hubble-system auth-85b748cbf4-dwhw2 Running + hubble-system cloud-fb74b8558-lqjq5 Running + hubble-system cloud-fb74b8558-zkfp5 Running + hubble-system configserver-685fcc5b6d-t8f8h Running + hubble-system event-68568f54c7-jzx5t Running + hubble-system event-68568f54c7-w9rnh Running + hubble-system foreq-6b689f54fb-vxjts Running + hubble-system hashboard-897bc9884-pxpvn Running + hubble-system hashboard-897bc9884-rmn69 Running + hubble-system hutil-6d7c478c96-td8q4 Running + hubble-system hutil-6d7c478c96-zjhk4 Running + hubble-system mgmt-85dbf6bf9c-jbggc Running + hubble-system mongo-0 Running + hubble-system mongo-1 Running + hubble-system mongo-2 Running + hubble-system msgbroker-6c9b9fbf8b-mcsn5 Running + hubble-system oci-proxy-7789cf9bd8-qcjkl Running + hubble-system packsync-28205220-bmzcg Succeeded + hubble-system spectrocluster-6c57f5775d-dcm2q Running + hubble-system spectrocluster-6c57f5775d-gmdt2 Running + hubble-system spectrocluster-6c57f5775d-sxks5 Running + hubble-system system-686d77b947-8949z Running + hubble-system system-686d77b947-cgzx6 Running + hubble-system timeseries-7865bc9c56-5q87l Running + hubble-system timeseries-7865bc9c56-scncb Running + hubble-system timeseries-7865bc9c56-sxmgb Running + hubble-system user-5c9f6c6f4b-9dgqz Running + hubble-system user-5c9f6c6f4b-hxkj6 Running + ingress-nginx ingress-nginx-controller-2txsv Running + ingress-nginx ingress-nginx-controller-55pk2 Running + ingress-nginx ingress-nginx-controller-gmps9 Running + jet-system jet-6599b9856d-t9mr4 Running + ui-system spectro-ui-76ffdf67fb-rkgx8 Running + ``` + +## Next Steps + +You have successfully installed VerteX in a Kubernetes cluster. Your next steps are to configure VerteX for your +organization. Start by creating the first tenant to host your users. Use the +[Create a Tenant](../../../system-management/tenant-management.md) page for instructions on how to create a tenant. diff --git a/docs/docs-content/vertex/install-palette-vertex/airgap/kubernetes-airgap-instructions.md b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md similarity index 57% rename from docs/docs-content/vertex/install-palette-vertex/airgap/kubernetes-airgap-instructions.md rename to docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md index 51ebfb138d..1cb8838d07 100644 --- a/docs/docs-content/vertex/install-palette-vertex/airgap/kubernetes-airgap-instructions.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md @@ -1,7 +1,7 @@ --- -sidebar_label: "Kubernetes Airgap Instructions" -title: "Kubernetes Airgap Instructions" -description: "Learn how to install VerteX into an air gap environment." +sidebar_label: "Environment Setup" +title: "Environment Setup" +description: "Learn how to prepare VerteX for an airgap install" icon: "" hide_table_of_contents: false sidebar_position: 20 @@ -12,8 +12,8 @@ keywords: ["self-hosted", "vertex"] ![Overview diagram of the pre-install steps eager-load](/enterprise-version_air-gap-repo_overview-order-diagram-focus.webp) This guide provides instructions to prepare your airgap environment for a Palette VerteX installation by completing the -required preparatory steps 1 through 4 shown in the diagram. The respective installation guides for each platform cover -the remaining installation process +required preparatory steps one through four shown in the diagram. The respective installation guides for each platform +cover the remaining installation process. ## Prepare Airgap Installation @@ -68,7 +68,7 @@ Each prerequisite is required for a successful installation. - [Oras](https://oras.land/docs/installation.html) CLI v1.0.0 - This version is explicitly required for the setup script. - [zip](https://linux.die.net/man/3/zip) - Required for the setup script. - - [unzip](https://linux.die.net/man/1/unzip) - or equivalent for extracting the manifest content from the airgap setup + - [unzip](https://linux.die.net/man/1/unzip) - Or equivalent for extracting the manifest content from the airgap setup binary. - [jq](https://jqlang.github.io/jq/download/) - Command-line JSON processor installed and available. - [Docker](https://docs.docker.com/get-docker/) - The airgap setup binary requires Docker to be installed and @@ -80,88 +80,111 @@ Complete the following steps before deploying the airgap VerteX installation. 1. Log in to the OCI registry where you will host the VerteX images and packages. -2. Create a repository with the name `spectro-packs` and ensure the repository is private. This repository will host the - VerteX packs. +2. Create a private repository named `spectro-packs`. This repository will host the VerteX packs. - Refer to the [Create Projects](https://goharbor.io/docs/2.0.0/working-with-projects/create-projects/) guide for information about creating a repository in Harbor. - Refer to the [Create a repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) guide for information about creating a repository in AWS ECR. -3. In your OCI registry, create another repository with the name `spectro-images` and ensure the repository is public. - The public repositry will host the images required by VerteX. +3. In your OCI registry, create a public repository named `spectro-images`. The public repositry will host the images + required by VerteX. 4. Download the Certificate Authority (CA) for your OCI registry. You will need to provide the installation process the CA, otherwise you may encounter errors when authenticating with the OCI registry which could result in an incomplete - install. + install. Skip this step if you are using AWS ECR. -5. Log in to the Linux environment where you will download the airgap binaries and complete the remaining steps, - including the VerteX installation. +5. Log in to the Linux environment where you will download the airgap binaries. This steps requires internet access to + download the airgap setup binary. -6. Authenticate with your OCI registry and acquire credentials to both repositories you created earlier. You will need - these credentials when deploying the airgap VerteX installation. +6. Download the airgap setup binary. Our support team will provide you with the proper version and credentials. Replace + the values in the commands below with our support team's recommended version and credentials. - - + ```shell + VERSION=X.X.X + ``` -Use `oras` to log in to your OCI registry. Replace the values below with your environment configuration values. Check -out the [oras login](https://oras.land/docs/commands/oras_login) documentation for information about additional CLI -flags and examples. + ```shell + curl --user XXXXX:YYYYYYY https://software-private.spectrocloud.com/airgap-fips/$VERSION/airgap-fips-v$VERSION.bin \ + --output airgap-fips-v$VERSION.bin + ``` -```shell -oras login X.X.X.X --user 'yourUserNameHere' --password 'yourPasswordHere' -``` +7. Update the airgap setup binary permissions to allow execution. Replace the file name below with the name of the + airgap setup binary you downloaded. -If you are using a Harbor registry with a self-signed certificate, you will need to add the `--insecure` flag to the -`oras` command. + ```shell + chmod +x airgap-fips-v$VERSION.bin + ``` -```shell -oras login X.X.X.X --insecure --user 'yourUserNameHere' --password 'yourPasswordHere' -``` +8. Copy or move the airgap binary to another Linux environment inside your airgap environment. Use any approved method + to transfer the binary to the airgap environment. - - +9. Log in to the Linux environment inside your airgap environment where you copied the airgap setup binary. -You can acquire the AWS ECR authentication command from the AWS ECR console. From the ECR repository details page, click -on the **View push commands** button to access the command. Refer to the -[AWS ECR Authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) -documentation for more information. +10. Authenticate with your OCI registry and acquire credentials to both repositories you created earlier. You will need + these credentials when deploying the airgap VerteX installation. -Below is the command you will use to authenticate to AWS ECR. The output of the `aws` command is passed to `oras` to -authenticate with the ECR registry. Replace the values below with your environment configuration values. + -```shell -aws ecr get-login-password --region xxxxx | oras login --username AWS --password-stdin 1234567890.dkr.ecr.us-east-1.amazonaws.com -``` + -For the public image repository, use the `docker` CLI instead of using `oras`. Replace the values below with your -environment configuration values. + Use `oras` to log in to your OCI registry. Replace the values below with your environment configuration values. + Check out the [oras login](https://oras.land/docs/commands/oras_login) documentation for information about + additional CLI flags and examples. -```shell -aws ecr-public get-login-password --region xxxxx | docker login --username AWS --password-stdin public.ecr.aws/xxxxxxx -``` + ```shell + oras login X.X.X.X --user 'yourUserNameHere' --password 'yourPasswordHere' + ``` - - + If you are using a Harbor registry with a self-signed certificate, you will need to add the `--insecure` flag to the + `oras` command. -:::tip + ```shell + oras login X.X.X.X --insecure --user 'yourUserNameHere' --password 'yourPasswordHere' + ``` -Be aware of the timeout period for the authentication token. The process of uploading images and packages to the OCI -registry can take a approximately an hour. If the authentication token expires, you will need to re-authenticate to the -OCI registry and restart the upload process. + -::: + ---- + You can acquire the AWS ECR authentication command from the AWS ECR console. From the ECR repository details page, + click on the **View push commands** button to access the command. Refer to the + [AWS ECR Authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) + documentation for more information. + + Use the following command to authenticate with AWS ECR. The output of the `aws` command is passed to `oras` to + authenticate with the ECR registry. Replace the values below with your environment configuration values. + + ```shell + aws ecr get-login-password --region xxxxx | oras login --username AWS --password-stdin 1234567890.dkr.ecr.us-east-1.amazonaws.com + ``` + + For the public image repository, use the `docker` CLI instead of using `oras`. Replace the values below with your + environment configuration values. + + ```shell + aws ecr-public get-login-password --region xxxxx | docker login --username AWS --password-stdin public.ecr.aws/xxxxxxx + ``` + + + + + + :::tip -7. The airgap setup binary requires a set of environment variables to be available and populated. The environment - variables will be different depending on the OCI registry you are using. Select the OCI registry and populate the - environment variables accordingly. + Be aware of the timeout period for the authentication token. The process of uploading images and packages to the OCI + registry can take a approximately an hour. If the authentication token expires, you will need to re-authenticate to + the OCI registry and restart the upload process. - - + ::: + +11. The airgap setup binary requires a set of environment variables to be available and populated. The environment + variables will be different depending on the OCI registry you are using. Select the OCI registry and populate the + environment variables accordingly. + + -
+ - `OCI_IMAGE_REGISTRY`: The IP address or domain name of the OCI registry. - `OCI_PACK_BASE`: The namespace or repository name that hosts the VerteX Packs. @@ -175,7 +198,7 @@ OCI registry and restart the upload process. export OCI_IMAGE_BASE=spectro-images ``` - Example + Example: ```shell hideClipboard export OCI_IMAGE_REGISTRY=example.internal.com @@ -184,10 +207,9 @@ OCI registry and restart the upload process. export OCI_IMAGE_BASE=spectro-images ``` - - + -
+ - `ECR_IMAGE_REGISTRY`: The IP address or domain name of the public OCI registry for images. - `ECR_IMAGE_BASE`: The namespace or repository name that hosts the VerteX images. @@ -199,13 +221,13 @@ OCI registry and restart the upload process. ```shell export ECR_IMAGE_REGISTRY= export ECR_IMAGE_BASE=spectro-images - export ECR_IMAGE_REGISTRY_REGION=us-east-1 + export ECR_IMAGE_REGISTRY_REGION= export ECR_PACK_REGISTRY= export ECR_PACK_BASE=spectro-packs - export ECR_PACK_REGISTRY_REGION=us-east-1 + export ECR_PACK_REGISTRY_REGION= ``` - Example + Example: ```shell hideClipboard export ECR_IMAGE_REGISTRY=public.ecr.aws/1234567890 @@ -216,37 +238,17 @@ OCI registry and restart the upload process. export ECR_PACK_REGISTRY_REGION=us-east-1 ``` - -
+
---- +
-8. Download the airgap setup binary. Our support team will provide you with the proper version and credentials. Replace - the values in the commands below with our support team's recommended version and credentials. - -```shell -VERSION=X.X.X -``` - -```shell -curl --user XXXXX:YYYYYYY https://software-private.spectrocloud.com/airgap-fips/$VERSION/airgap-fips-v$VERSION.bin \ ---output airgap-fips-v$VERSION.bin -``` - -9. Update the airgap setup binary permissions to allow execution. Replace the file name below with the name of the - airgap setup binary you downloaded. +12. Start the airgap setup binary. Replace the file name below with the name of the airgap setup binary you downloaded. -```shell -chmod +x airgap-fips-v$VERSION.bin -``` - -10. Start the airgap setup binary. Replace the file name below with the name of the airgap setup binary you downloaded. - -```shell -./airgap-fips-v$VERSION.bin -``` + ```shell + ./airgap-fips-v$VERSION.bin + ``` -Upon completion, a success message will be displayed. The output is condensed for brevity. + Upon completion, a success message will be displayed. The output is condensed for brevity. ```shell hideClipboard {10} Verifying archive integrity... 100% MD5 checksums are OK. All good. @@ -263,14 +265,14 @@ Upon completion, a success message will be displayed. The output is condensed fo Setup Completed ``` -:::info + :::info -If you encounter an error during the airgap setup process, verify the required environment variables are set and -populated correctly. If you are still having issues, reach out to our support team for assistance. + If you encounter an error during the airgap setup process, verify the required environment variables are set and + populated correctly. If you are still having issues, reach out to our support team for assistance. -::: + ::: -11. Move the manifest file located in your temporary directory to the location of your file server. Unzip the manifest +13. Move the manifest file located in your temporary directory to the location of your file server. Unzip the manifest file to a folder accessible by the file server. Replace the file name below with the name of the manifest file provided to you by the airgap setup. @@ -298,29 +300,32 @@ populated correctly. If you are still having issues, reach out to our support te ::: -12. Review the additional packs available for download. The supplemental packs are optional and not required for a +14. Review the additional packs available for download. The supplemental packs are optional and not required for a successful installation. However, to create cluster profiles you may require several of the packs available for - download. Refer to the [Additional Packs](supplemental-packs.md) resource for a list of available packs. + download. Refer to the [Additional Packs](../../airgap/supplemental-packs.md) resource for a list of available + packs. -13. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the - upload process. +15. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the + upload process. This step requires internet access, so you may have to download the binaries on a separate machine + outside the airgap environment and transfer them to the airgap environment using an approved method. -In the example below, the `airgap-fips-pack-amazon-linux-eks-1.0.0.bin` binary is downloaded and started. + In the example below, the `airgap-fips-pack-amazon-linux-eks-1.0.0.bin` binary permissions are updated to allow + execution and the binary is started. -```shell -chmod +x airgap-fips-pack-amazon-linux-eks-1.0.0.bin && \ -./airgap-fips-pack-amazon-linux-eks-1.0.0.bin -``` + ```shell + chmod +x airgap-fips-pack-amazon-linux-eks-1.0.0.bin && \ + ./airgap-fips-pack-amazon-linux-eks-1.0.0.bin + ``` -```shell hideClipboard - Verifying archive integrity... 100% MD5 checksums are OK. All good. - Uncompressing Airgap Pack - amazon-linux-eks Version 4.0.17 100% - Setting up Packs - - Pushing Pack amazon-linux-eks:1.0.0 - Setup Completed -``` + ```shell hideClipboard + Verifying archive integrity... 100% MD5 checksums are OK. All good. + Uncompressing Airgap Pack - amazon-linux-eks Version 4.0.17 100% + Setting up Packs + - Pushing Pack amazon-linux-eks:1.0.0 + Setup Completed + ``` -14. Repeat step 13 for each pack you want to install. +16. Repeat step 13 for each pack you want to install. You now have completed the preparation steps for an airgap installation. Check out the [Validate](#validate) section to ensure the airgap setup process completed successfully. @@ -335,32 +340,31 @@ Use the following steps to validate the airgap setup process completed successfu installation process. The screenshot below is an example of a file server hosting the unzipped manifest content. The example is using Caddy as the file server. -![Example of a file server hosting the unzipped manifest content](/enterprise-version_airgap_airgap-instructions_file-server-caddy.webp) + ![Example of a file server hosting the unzipped manifest content](/enterprise-version_airgap_airgap-instructions_file-server-caddy.webp) 3. Ensure your file server is accessible from the environment you are installing VerteX. Use the following command to verify the manifest content is accessible from the file server. Replace the hostname or IP address below with your file server hostname or IP address. -```shell -curl http://:/roar/nickfury/versions.yaml -``` - -```yaml hideClipboard -versions: - - version: "3.3" - filepath: "/roar/nickfury/3.3/version.yaml" - patchVersionsFilepath: "/roar/nickfury/3.3/versions.yaml" - - version: "3.4" - filepath: "/roar/nickfury/3.4/version.yaml" - patchVersionsFilepath: "/roar/nickfury/3.4/versions.yaml" - - version: "4.0" - filepath: "/roar/nickfury/4.0/version.yaml" - patchVersionsFilepath: "/roar/nickfury/4.0/versions.yaml" -``` + ```shell + curl http://:/roar/nickfury/versions.yaml + ``` + + ```yaml hideClipboard + versions: + - version: "3.3" + filepath: "/roar/nickfury/3.3/version.yaml" + patchVersionsFilepath: "/roar/nickfury/3.3/versions.yaml" + - version: "3.4" + filepath: "/roar/nickfury/3.4/version.yaml" + patchVersionsFilepath: "/roar/nickfury/3.4/versions.yaml" + - version: "4.0" + filepath: "/roar/nickfury/4.0/version.yaml" + patchVersionsFilepath: "/roar/nickfury/4.0/versions.yaml" + ``` ## Next Steps You are now ready to deploy the airgap VerteX installation. The important difference is that you will specify your OCI -registry and file server during the installation process. Refer to the -[Kubernetes Install Instructions](../install-on-kubernetes/install-on-kubernetes.md) guide for detailed guidance on -installing VerteX. +registry and file server during the installation process. Refer to the [VerteX Install](./install.md) guide for detailed +guidance on installing VerteX. diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md index a88de5d0a8..313600dba4 100644 --- a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md @@ -9,14 +9,24 @@ keywords: ["self-hosted", "vertex"] --- Palette VerteX can be installed on Kubernetes with internet connectivity or an airgap environment. When you install -Palette VerteX, a three-node cluster is created. You use a Helm chart our support team provides to install Palette -VerteX on Kubernetes. Refer to [Access Palette VerteX](../../vertex.md#access-palette-vertex) for instructions on -requesting access to the Helm Chart. +VerteX, a three-node cluster is created. You use a Helm chart our support team provides to install VerteX on Kubernetes. +Refer to [Access Palette VerteX](../../vertex.md#access-palette-vertex) for instructions on requesting access to the +Helm Chart. -To get started with Palette VerteX on Kubernetes, refer to the [Install Instructions](install.md) guide. +## Get Started + +Select the scenario and the corresponding guide to install VerteX on Kubernetes. If you are installing VerteX in an +airgap environment, refer to the environment preparation guide before installing VerteX. + +| Scenario | Environment Preparation Guide | Install Guide | +| ------------------------------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------- | +| Install VerteX on Kubernetes with internet connectivity | None | [Install Instructions](install.md) | +| Install VerteX on Kubernetes in an airgap environment | [Environment Setup](./airgap-install/kubernetes-airgap-instructions.md) | [Airgap Install Instructions](./airgap-install/install.md) | ## Resources -- [Install Instructions](install.md) +- [Non-Airgap Install Instructions](install.md) + +- [Airgap Install Instructions](./airgap-install/install.md) -- [Helm Configuration Reference](vertex-helm-ref.md) +- [Helm Configuration Reference](./vertex-helm-ref.md) diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install.md index 2a578be9b4..3a4e2727b6 100644 --- a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Instructions" -title: "Instructions" +sidebar_label: "Non-Airgap Installation" +title: "Install Non-Airgap Self-Hosted Palette VerteX" description: "Learn how to deploy self-hosted VerteX to a Kubernetes cluster using a Helm Chart." icon: "" hide_table_of_contents: false @@ -18,14 +18,6 @@ has the necessary network connectivity for VerteX to operate successfully. ## Prerequisites -:::warning - -If you are installing VerteX in an airgap environment, ensure you complete all the airgap pre-install steps before -proceeding with the installation. Refer to the -[Kubernetes Airgap Instructions](../airgap/kubernetes-airgap-instructions.md) guide for more information. - -::: - - [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) is installed and available. - [Helm](https://helm.sh/docs/intro/install/) is installed and available. @@ -139,10 +131,6 @@ your environment. Reach out to our support team if you need assistance. parameters before installing VerteX. You can learn more about the parameters in the **values.yaml** file in the [Helm Configuration Reference](vertex-helm-ref.md) page. - - - - | **Parameter** | **Description** | **Type** | | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | | `env.rootDomain` | The URL name or IP address you will use for the VerteX installation. | string | @@ -151,16 +139,19 @@ your environment. Reach out to our support team if you need assistance. | `ingress.enabled` | Whether to install the Nginx ingress controller. Set this to `false` if you already have an Nginx controller deployed in the cluster. | boolean | | `reach-system` | Set `reach-system.enabled` to `true` and configure the `reach-system.proxySettings` parameters to configure VerteX to use a network proxy in your environment | object | - Save the **values.yaml** file after you have populated the required parameters mentioned in the table. Expand the - following sections to review an example of the **values.yaml** file with the required parameters highlighted. + Save the **values.yaml** file after you have populated the required parameters mentioned in the table. + + Select one of the following tabs to review an example of the **values.yaml** file with the required parameters + highlighted. -
+ + - Example - values.yaml + ```yaml {53,77-85,97-102} ######################### - # Spectro Cloud VerteX # + # Spectro Cloud Palette # ######################### # MongoDB Configuration mongo: @@ -243,7 +234,7 @@ your environment. Reach out to our support team if you need assistance. baseContentPath: "production-fips" # isPrivate: true insecureSkipVerify: false - caCert: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURqekNDQW5lZ0F3SUJBZ0lVZTVMdXBBZGljd0Z1SFJpWWMyWEgzNTFEUzJJd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tERW1NQ1FHQTFVRUF3d2RjSEp2ZUhrdWMyRnRjR3hsTG5Od1pXTjBjbTlqYkc5MVpDNWpiMjB3SGhjTgpNakl4TURFME1UTXlOREV5V2hjTk1qY3hNREV6TVRNeU5ERXlXakI3TVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHCkExVUVDQk1DUTBFeEV6QVJCZ05WQkFjVENsTmhiblJoUTJ4aGNtRXhGVEFUQmdOVkJBb1RERk53WldOMGNtOUQKYkc5MVpERUxNQWtHQTFVRUN4TUNTVlF4SmpBa0JnTlZCQU1USFhCeWIzaDVMbk5oYlhCc1pTNXpjR1ZqZEhKdgpZMnh2ZFdRdVkyOXRNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQV" + caCert: "" # ociImageRegistry: # endpoint: "" # @@ -368,54 +359,24 @@ your environment. Reach out to our support team if you need assistance. ui: nocUI: enable: true - mapBoxAccessToken: "" # Leave Empty to use Default Access Token from VerteX + mapBoxAccessToken: "" # Leave Empty to use Default Access Token from Palette mapBoxStyledLayerID: "" # Leave Empty to use Default Style Layer ID - reach-system: - reachSystem: - enabled: false - proxySettings: - http_proxy: "" - https_proxy: "" - no_proxy: "" - ca_crt_path: "" + reachSystem: + enabled: false + proxySettings: + http_proxy: "" + https_proxy: "" + no_proxy: "" + ca_crt_path: "" # Set the 'ca_crt_path' parameter to the location of the certificate file on each node. This file should contain the Proxy CA Certificate, in case the Proxy being used requires a certificate. + scheduleOnControlPlane: true ``` -
-
- - - | **Parameter** | **Description** | **Type** | - | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | - | `env.rootDomain` | The URL name or IP address you will use for the VerteX installation. | string | - | `config.installationMode` | The installation mode for VerteX. The values can be `connected` or `airgap`. Set this value to `airgap`. | string | - | `ociPackEcrRegistry` or `ociPackRegistry` | The OCI registry credentials for the VerteX FIPS packs repository. If you are using a Harbor registry, use the `ociPackRegistry` parameter block but ensure you have the OCI registry CA available. | object | - | `ociImageRegistry` | The OCI registry credentials for the VerteX images repository. | object | - | `ociImageRegistry.ca` | If you are using a self-hosted OCI, such as Harbor, ensure you provide the CA in PEM format. If you are using AWS ECR, you can leave this parameter empty. | string | - | `ociImageRegistry.mirrorRegistries` | Replace the placeholder string with the respective values of your OCI registry repository that is hosting the images. | - | `imageSwapConfig.isEKSCluster` | Set this value to `false` if you are NOT installing VerteX on an EKS cluster. | boolean | - | `scar` | Specify your HTTP file server values. If your HTTP file server requires credentials ensure the provided values are base64 encoded. Example of the string "admin" in base64 encoding - `YWRtaW4=`. | object | - | `ingress.enabled` | Whether to install the Nginx ingress controller. Set this to `false` if you already have an Nginx controller deployed in the cluster. | boolean | - | `reach-system` | Set `reach-system.enabled` to `true` and configure the `reach-system.proxySettings` parameters for VerteX to use a network proxy in your environment | object | - - Save the **values.yaml** file after you have populated the required parameters mentioned in the table. Expand the - following sections to review an example of the **values.yaml** file with the required parameters highlighted. - - :::warning - - Palette VerteX does not support insecure connections. Ensure you have the Certificate Authority (CA) available, in - PEM format, when using a custom packs and image registry. Otherwise, VerteX will not be able to pull packs and - images from the registry. Use the `caCert` parameter to provide the base64-encoded CA certificate. - - ::: + -
- - Example - values.yaml - - ```yaml {23,53,77-85,87-95,97-102,109} + ```yaml {53,68-75,110-115} ######################### # Spectro Cloud VerteX # ######################### @@ -438,7 +399,7 @@ your environment. Reach out to our support team if you need assistance. storageClass: "" # leave empty to use the default storage class config: - installationMode: "airgap" #values can be connected or airgap. + installationMode: "connected" #values can be connected or airgap. # SSO SAML Configuration (Optional for self-hosted type) sso: @@ -475,47 +436,60 @@ your environment. Reach out to our support team if you need assistance. cluster: stableEndpointAccess: false - # registry: - # endpoint: "" # - # name: "" # - # password: "" # - # username: "" # - # insecureSkipVerify: false - # caCert: "" + # registry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # insecureSkipVerify: false + # caCert: "" + + ociPackRegistry: + endpoint: "example.harbor.org" # + name: "VerteX Packs OCI" # + password: "**************" # + username: "**************" # + baseContentPath: "spectro-packs" # + insecureSkipVerify: false + caCert: "" + + # ociPackEcrRegistry: + # endpoint: "" # + # name: "" # + # accessKey: "" # + # secretKey: "" # + # baseContentPath: "" # + # isPrivate: true + # insecureSkipVerify: false + # caCert: "" - # ociPackRegistry: - # endpoint: "" # - # name: "" # - # password: "" # - # username: "" # - # baseContentPath: "" # - # insecureSkipVerify: false - # caCert: "" - - ociPackEcrRegistry: - endpoint: "123456789.dkr.ecr.us-east-1.amazonaws.com" # - name: "Airgap Packs OCI" # - accessKey: "*************" # - secretKey: "*************" # - baseContentPath: "spectro-packs" # - isPrivate: true - insecureSkipVerify: false - caCert: "" + # ociImageRegistry: + # endpoint: "" # + # name: "" # + # password: "" # + # username: "" # + # baseContentPath: "" # + # insecureSkipVerify: false + # caCert: "" + # mirrorRegistries: "" - ociImageRegistry: - endpoint: "public.ecr.aws/123456789" # - name: "Airgap Image OCI" # - password: "" # - username: "" # - baseContentPath: "spectro-images" # - insecureSkipVerify: true - caCert: "" - mirrorRegistries: "docker.io::public.ecr.aws/v2/123456789/spectro-images,gcr.io::public.ecr.aws/v2/123456789/spectro-images,ghcr.io::public.ecr.aws/v2/123456789/spectro-images,k8s.gcr.io::public.ecr.aws/v2/123456789/spectro-images,registry.k8s.io::public.ecr.aws/v2/123456789/spectro-images,quay.io::public.ecr.aws/v2/123456789/spectro-images" + # Instruction for mirrorRegistries. + # ---------------------------------- + # Please provide the registry endpoint for the following registries, separated by double colons (::): + # docker.io + # gcr.io + # ghcr.io + # k8s.gcr.io + # registry.k8s.io + # quay.io + # For each registry, follow this example format: + # docker.io::/v2/,gcr.io::/v2/,ghcr.io::/v2/,k8s.gcr.io::/v2/,registry.k8s.io::/v2/,quay.io::/v2/ + # Replace with your actual registry endpoint and , , , , , and with the specific endpoint details for each registry. scar: - endpoint: "http://10.15.20.15:2015" - username: "YWRtaW4=" - password: "YWRtaW4=" + endpoint: "https://saas-repo-fips.console.spectrocloud.com" + username: "**********" + password: "**********" insecureSkipVerify: true caCert: "" @@ -625,47 +599,31 @@ your environment. Reach out to our support team if you need assistance. ui: nocUI: enable: true - mapBoxAccessToken: "" # Leave Empty to use Default Access Token from VerteX + mapBoxAccessToken: "" # Leave Empty to use Default Access Token from Palette mapBoxStyledLayerID: "" # Leave Empty to use Default Style Layer ID - reach-system: - reachSystem: - enabled: false - proxySettings: - http_proxy: "" - https_proxy: "" - no_proxy: "" - ca_crt_path: "" + reachSystem: + enabled: false + proxySettings: + http_proxy: "" + https_proxy: "" + no_proxy: "" + ca_crt_path: "" # Set the 'ca_crt_path' parameter to the location of the certificate file on each node. This file should contain the Proxy CA Certificate, in case the Proxy being used requires a certificate. + scheduleOnControlPlane: true ``` -
-
-5. This step only applies to those who are installing an airgap VerteX or who are using a self-hosted OCI registry with - registry caching enabled. Otherwise, skip to the next step. - - Go ahead and install the image-swap chart using the following command. Point to the **values.yaml** file you - configured in the previous step. + :::warning - ```shell - helm upgrade --values vertex/values.yaml \ - image-swap extras/image-swap/image-swap-*.tgz --install - ``` + Ensure you have configured the **values.yaml** file with the required parameters before proceeding to the next + steps. - ```shell hideClipboard - Release "image-swap" does not exist. Installing it now. - NAME: image-swap - LAST DEPLOYED: Mon Jan 29 17:04:23 2024 - NAMESPACE: default - STATUS: deployed - REVISION: 1 - TEST SUITE: None - ``` + ::: -6. This step is only required if you are installing Palette in an environment where a network proxy must be configured +5. This step is only required if you are installing Palette in an environment where a network proxy must be configured for Palette to access the internet. If you are not using a network proxy, skip to the next step. Install the reach-system chart using the following command. Point to the **values.yaml** file you configured in the @@ -686,7 +644,7 @@ your environment. Reach out to our support team if you need assistance. TEST SUITE: None ``` -7. Install the Palette Helm Chart using the following command. +6. Install the Palette Helm Chart using the following command. ```shell helm upgrade --values vertex/values.yaml \ @@ -703,7 +661,7 @@ your environment. Reach out to our support team if you need assistance. TEST SUITE: None ``` -8. Track the installation process using the command below. VerteX is ready when the deployments in the namespaces +7. Track the installation process using the command below. VerteX is ready when the deployments in the namespaces `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system` , and `ui-system` reach the _Ready_ state. The installation takes between two to three minutes to complete. @@ -718,7 +676,7 @@ your environment. Reach out to our support team if you need assistance. ::: -9. Create a DNS CNAME record that is mapped to the VerteX `ingress-nginx-controller` load balancer. You can use the +8. Create a DNS CNAME record that is mapped to the VerteX `ingress-nginx-controller` load balancer. You can use the following command to retrieve the load balancer IP address. You may require the assistance of your network administrator to create the DNS record. @@ -736,7 +694,7 @@ your environment. Reach out to our support team if you need assistance. ::: -10. Use the custom domain name or the IP address of the load balancer to visit the VerteX system console. To access the +9. Use the custom domain name or the IP address of the load balancer to visit the VerteX system console. To access the system console, open a web browser and paste the custom domain URL in the address bar and append the value `/system`. Replace the domain name in the URL with your custom domain name or the IP address of the load balancer. Alternatively, you can use the load balancer IP address with the appended value `/system` to access the system @@ -748,7 +706,7 @@ your environment. Reach out to our support team if you need assistance. ![Screenshot of the VerteX system console showing Username and Password fields.](/vertex_install-on-kubernetes_install_system-console.webp) -11. Log in to the system console using the following default credentials. +10. Log in to the system console using the following default credentials. | **Parameter** | **Value** | | ------------- | --------- | diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md index 9dd7cc31cb..f6cd1c5584 100644 --- a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md @@ -4,7 +4,7 @@ title: "Helm Configuration Reference" description: "Reference resource for the Palette VerteX Helm Chart installation parameters." icon: "" hide_table_of_contents: false -sidebar_position: 10 +sidebar_position: 20 tags: ["vertex", "helm"] keywords: ["self-hosted", "vertex"] --- @@ -34,7 +34,7 @@ information, refer to the [Image Swap Configuration](#image-swap-configuration) ## MongoDB -Palette VerteX uses MongoDB Enterprise as its internal database and supports two modes of deployment:

+Palette VerteX uses MongoDB Enterprise as its internal database and supports two modes of deployment: - MongoDB Enterprise deployed and active inside the cluster. @@ -157,8 +157,6 @@ config: rootDomain: "" ``` -
- :::warning As you create tenants in Palette VerteX, the tenant name is prefixed to the domain name you assigned to Palette VerteX. @@ -204,8 +202,6 @@ registry and configure Palette VerteX to reference the registry. Alternatively, provided by us, refer to the [`ociPackEcrRegistry`](#oci-ecr-registry) section to learn more about the publicly available OCI registry. -
- :::warning If you are using a self-hosted OCI registry, you must provide the required FIPS packs to the registry. Contact support @@ -305,8 +301,6 @@ SCAR credentials are required to download the necessary FIPS manifests. Our supp | `scar.insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the SCAR connection. | Boolean | `false` | | `scar.caCert` | The base64-encoded certificate authority (CA) certificate for SCAR. | String | `""` | -
- ```yaml config: scar: @@ -330,8 +324,6 @@ chart to use this option, otherwise, Palette VerteX will ignore the configuratio | `imageSwapConfig` | The image swap configuration for specific environments. | String | `""` | | `imageSwapConfig.isEKSCluster` | Specifies whether the cluster is an Amazon EKS cluster. Set to `false` if the Kubernetes cluster is not an EKS cluster. | Boolean | `true` | -
- ```yaml config: imageSwapImages: diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/_category_.json b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/_category_.json new file mode 100644 index 0000000000..455b8e4969 --- /dev/null +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md new file mode 100644 index 0000000000..af36199b16 --- /dev/null +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md @@ -0,0 +1,67 @@ +--- +sidebar_label: "Airgap Installation" +title: "Airgap Installation" +description: "Learn how to deploy VerteX in an airgapped environment." +icon: "" +hide_table_of_contents: false +sidebar_position: 0 +tags: ["vertex", "enterprise", "airgap", "vmware", "vsphere"] +keywords: ["self-hosted", "vertex"] +--- + +You can install Palette VerteX in an airgap VMware vSphere environment. An airgap environment lacks direct access to the +internet and is intended for environments with strict security requirements. + +The installation process for an airgap environment is different due to the lack of internet access. Before the primary +Palette installation steps, you must download the following artifacts. + +- VerteX platform manifests and required platform packages. + +- Container images for core platform components and third-party dependencies. + +- VerteX packs. + +The other significant change is that VerteX's default public OCI registry is not used. Instead, a private OCI registry +is utilized for storing images and packs. + +## Overview + +Before you can install VerteX in an airgap environment, you must complete all the required pre-installation steps. The +following diagram outlines the major pre-installation steps for an airgap installation. + +![An architecture diagram outlining the five different installation phases](/enterprise-version_air-gap-repo_overview-order-diagram.webp) + +1. Download the airgap setup binary from the URL provided by the support team. The airgap setup binary is a + self-extracting archive that contains the Palette platform manifests, images, and required packs. The airgap setup + binary is a one-time use binary for uploading Palette images and packs to your OCI registry. You will not use the + airgap setup binary again after the initial installation. This step must be completed in an environment with internet + access. + +2. Move the airgap setup binary to the airgap environment. The airgap setup binary is used to extract the manifest + content and upload the required images and packs to your private OCI registry. Start the airgap setup binary in a + Linux Virtual Machine (VM). + +3. The airgap script will push the required images and packs to your private OCI registry. + +4. Extract the manifest content from the airgap setup binary. The manifest content must be hosted on a web server that + is accessible from the airgap environment. You can use the same Linux VM from step 2 to host the manifest content or + use a different web server. + +5. Install Palette using the Palette CLI or the Kubernetes Helm chart. + +Configure your Palette environment + +## Get Started + +To get started with an airgap Palette installation, begin by reviewing the +[Environment Setup](./vmware-vsphere-airgap-instructions.md) guide. + +## Resources + +- [Environment Setup](./vmware-vsphere-airgap-instructions.md) + +- [Airgap Install Checklist](./checklist.md) + +- [Airgap Install](./install.md) + +- [Additional Packs](../../airgap/supplemental-packs.md) diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md new file mode 100644 index 0000000000..1bc8bed37d --- /dev/null +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md @@ -0,0 +1,27 @@ +--- +sidebar_label: "Checklist" +title: "Checklist" +description: + "An airgap installation of Palette requires a few steps to be completed before the installation can begin. This + checklist will help you prepare for the installation." +icon: "" +sidebar_position: 10 +hide_table_of_contents: false +tags: ["palette", "self-hosted", "airgap"] +keywords: ["self-hosted", "enterprise"] +--- + +Use the following checklist to ensure you have completed all the required steps before deploying the airgap Palette +installation. + +- [ ] Create a vSphere VM and Template folder named `spectro-templates`. + +- [ ] Import the Operating System and Kubernetes distribution OVA required for the installation and place the OVA in the + `spectro-templates` folder. + +- [ ] Append the `r_` prefix and remove the `.ova` suffix from the OVA name after the import. + +- [ ] Start the airgap setup binary and verify the setup is completed successfully. + +- [ ] Review the list of [pack binaries](../../airgap/supplemental-packs.md) to download and upload to your OCI + registry. diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md new file mode 100644 index 0000000000..28326d48c0 --- /dev/null +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md @@ -0,0 +1,412 @@ +--- +sidebar_label: "Install VerteX" +title: "Install VerteX" +description: "Learn how to install VerteX in an airgap VMware environment." +icon: "" +sidebar_position: 30 +hide_table_of_contents: false +tags: ["vertex", "enterprise", "airgap", "vmware", "vsphere"] +keywords: ["self-hosted", "vertex"] +--- + +You install Palette VerteX in an airgap environment through the Palette Command Line Interface (CLI). The CLI provides +you with an interactive experience that guides you through the installation process. You can invoke the Palette CLI on +any Linux x86-64 system with the Docker daemon installed and connectivity to the VMware vSphere environment where +Palette VerteX will be deployed. + +## Prerequisites + +:::warning + +If you are installing Palette VerteX in an airgap environment, ensure you complete all the airgap pre-install steps +before proceeding with the installation. Refer to the +[VMware vSphere Airgap Instructions](./vmware-vsphere-airgap-instructions.md) guide for more information. + +::: + +- An AMD64 Linux environment with connectivity to the VMware vSphere environment. + +- [Docker](https://docs.docker.com/engine/install/) or equivalent container runtime installed and available on the Linux + host. + +- Palette CLI installed and available. Refer to the Palette CLI + [Install](../../../../palette-cli/install-palette-cli.md#download-and-setup) page for guidance. + +- An Ubuntu Pro Subscription and token. Ubuntu Pro provides access to FIPS 140-2 certified cryptographic packages. + +- Review the required VMware vSphere [permissions](../vmware-system-requirements.md). Ensure you have created the proper + custom roles and zone tags. + +- We recommended the following resources for Palette VerteX. Refer to the + [Palette VerteX size guidelines](../../install-palette-vertex.md#instance-sizing) for additional sizing information. + + - 8 CPUs per VM. + + - 16 GB Memory per VM. + + - 100 GB Disk Space per VM. + +- The following network ports must be accessible for Palette VerteX to operate successfully. + + - TCP/443: Inbound to and outbound from the Palette VerteX management cluster. + + - TCP/6443: Outbound traffic from the Palette VerteX management cluster to the deployed cluster's Kubernetes API + server. + +- The network IP address range you specify during the installation must not overlap with any existing IP addresses in + your environment. The IP address range must also have connectivity to the VMware vSphere environment. + +- Ensure you have an SSL certificate that matches the domain name you will assign to Palette VerteX. You will need this + to enable HTTPS encryption for Palette VerteX. Reach out to your network administrator or security team to obtain the + SSL certificate. You need the following files: + + - x509 SSL certificate file in base64 format. + + - x509 SSL certificate key file in base64 format. + + - x509 SSL certificate authority file in base64 format. This file is optional. + +- Zone tagging is required for dynamic storage allocation across fault domains when provisioning workloads that require + persistent storage. Refer to [Zone Tagging](../vmware-system-requirements.md#zone-tagging) for information. + +- Assigned IP addresses for application workload services, such as Load Balancer services. + +- Shared Storage between VMware vSphere hosts. + +:::info + +Self-hosted Palette VerteX installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do +not require a separate, user-installed PCG. However, you can create additional PCGs as needed to support provisioning +into remote data centers that do not have a direct incoming connection from the Palette console. To learn how to install +a PCG on VMware, check out the [Deploy to VMware vSphere](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. + +::: + +:::warning + +Palette VerteX does not support insecure connections. Ensure you have the Certificate Authority (CA) available, in PEM +format, when using a custom packs and image registry. Otherwise, VerteX will not be able to pull packs and images from +the registry. The Palette CLI will prompt you to provide the CA certificate file path when necessary. + +::: + +## Deployment + +The video below demonstrates the installation wizard and the prompts you will encounter. Take a moment to watch the +video before you begin the installation process. Make sure to use values that are appropriate for your environment. Use +the **three-dots Menu** in the lower right corner of the video to expand the video to full screen and to change the +playback speed. + + + +Use the following steps to install Palette VerteX. + +1. Log in to your vCenter environment. + +2. Create a vSphere VM and Template folder with the name `spectro-templates`. Ensure this folder is accessible by the + user account you will use to deploy the airgap VerteX installation. + +3. Use the URL below to import the Operating System and Kubernetes distribution OVA required for the install. Place the + OVA in the `spectro-templates` folder. Refer to the + [Import Items to a Content Library](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vm-administration/GUID-B413FBAE-8FCB-4598-A3C2-8B6DDA772D5C.html?hWord=N4IghgNiBcIJYFsAOB7ATgFwAQYKbIjDwGcQBfIA) + guide for information about importing an OVA in vCenter. + + ```url + https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12711-0.ova + ``` + +4. Append an `r_` prefix to the OVA name and remove the `.ova` suffix after the import. For example, the final output + should look like `r_u-2204-0-k-12711-0`. This naming convention is required for the install process to identify the + OVA. Refer to the [Supplement Packs](../../airgap/supplemental-packs.md#additional-ovas) page for a list of + additional OVAs you can download and upload to your vCenter environment. + + :::tip + + You can also use the **Deploy OVF Template** wizard in vSphere to make the OVA available in the `spectro-templates` + folder. Append the `r_` prefix, and remove the `.ova` suffix when assigning a name and target location. You can + terminate the deployment after the OVA is available in the `spectro-templates` folder. Refer to the + [Deploy an OVF or OVA Template](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vm-administration/GUID-AFEDC48B-C96F-4088-9C1F-4F0A30E965DE.html) + guide for more information about deploying an OVA in vCenter. + + ::: + +5. Open a terminal window and invoke the Palette CLI by using the `ec` command to install the enterprise cluster. The + interactive CLI prompts you for configuration details and then initiates the installation. For more information + about the `ec` subcommand, refer to [Palette Commands](../../../../palette-cli/commands/ec.md). + + ```bash + palette ec install + ``` + +6. At the **Enterprise Cluster Type** prompt, choose **Palette VerteX**. + +7. Type `y` to enable Ubuntu Pro, and provide your Ubuntu Pro token when prompted. + + :::warning + + To ensure FIPS compliance, be sure to enter your Ubuntu Pro token. + + ::: + +8. Specify the URL or IP address of the Spectro Cloud Repository that is provided to you by the airgap setup script. + Make sure to specify the file path to the CA certificate when prompted. + + :::info + + If you are using the Palette CLI from inside an [airgap support VM](./vmware-vsphere-airgap-instructions.md), the + CLI will automatically detect the airgap environment and prompt you to **Use local, air-gapped Spectro Cloud + Artifact Repository (SCAR) configuration**. Type `y` to use the local resources and skip filling in the repository + URL and credentials. + + ::: + +9. Enter the repository credentials. Our support team provides the credentials you need to access the public Spectro + Cloud repository. Airgap installations, provide the credentials to your private repository provided to you by the + airgap setup script . + +10. Choose `VMware vSphere` as the cloud type. This is the default. + +11. Type an enterprise cluster name. Your VM instances will use this name as a prefix. + +12. When prompted, enter the information listed in each of the following tables. + + #### Environment Configuration + + | **Parameter** | **Description** | + | :-------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | **HTTPS Proxy** | Leave this blank unless you are using an HTTPS Proxy. This setting will be propagated to all EC nodes and all of its target cluster nodes. Example: `https://USERNAME:PASSWORD@PROXYIP:PROXYPORT`. | + | **HTTP Proxy** | Leave this blank unless you are using an HTTP Proxy. This setting will be propagated to all EC nodes and all of its target cluster nodes. Example: `http://USERNAME:PASSWORD@PROXYIP:PROXYPORT`. | + | **No Proxy** | The default is blank. You can add a comma-separated list of local network CIDR addresses, hostnames, and domain names that should be excluded from being a proxy. This setting will be propagated to all the nodes to bypass the proxy server. Example if you have a self-hosted environment: `maas.company.com,10.10.0.0/16`. | + | **Proxy CA Certificate Filepath** | The default is blank. You can provide the filepath of a CA certificate on the installer host. If provided, this CA certificate will be copied to each host in the PCG cluster during deployment. The provided path will be used on the PCG cluster hosts. Example: `/usr/local/share/ca-certificates/ca.crt`. | + | **Pod CIDR** | Enter the CIDR pool IP that will be used to assign IP addresses to pods in the EC cluster. The pod IP addresses should be unique and not overlap with any machine IPs in the environment. | + | **Service IP Range** | Enter the IP address range that will be used to assign IP addresses to services in the EC cluster. The service IP addresses should be unique and not overlap with any machine IPs in the environment. | + +13. Select the OCI registry type and provide the configuration values. Review the following table for more information. + If you are using the Palette CLI from inside an [airgap support VM](./vmware-vsphere-airgap-instructions.md), the + CLI will automatically detect the airgap environment and prompt you to **Use local, air-gapped Pack Registry?** Type + `y` to use the local resources and skip filling in the OCI registry URL and credentials. + + :::warning + + For self-hosted OCI registries, ensure you have the server Certificate Authority (CA) certificate file available on + the host where you are using the Palette CLI. You will be prompted to provide the file path to the OCI CA + certificate. Failure to provide the OCI CA certificate will result in self-linking errors. Refer to the + [Self-linking Error](../../../../troubleshooting/enterprise-install.md#scenario---self-linking-error) + troubleshooting guide for more information. + + ::: + + #### Pack & Image Registry Configuration + + | **Parameter** | **Description** | + | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Registry Type** | Specify the type of registry. Allowed values are `OCI` or `OCI ECR`. Airgap users, select `OCI`. | + | **Registry Name** | Enter the name of the registry. | + | **Registry Endpoint** | Enter the registry endpoint. Airgap users, provide the **Spectro Cloud Repository** URL or hostname shared by the airgap setup script. | + | **Registry Base Path** | Enter the registry base path. | + | **Allow Insecure Connection** | Bypasses x509 verification. Type `n` to specify a certificate authority in the follow-up prompt. Airgap user, ensure you select `n`. | + | **Registry CA certificate filepath** | Specify the file path to the certificate authority. Use absolute paths. Airgap users, provide the filepath displayed by the aurgap setup script. | + | **Registry Username** or **Registry Access Key** | Enter the registry username or the access key if using `OCI ECR`. | + | **Registry Password** or **Registry Secret Key** | Enter the registry password or the secret key if using `OCI ECR`. | + | **Registry Region** | Enter the registry region. This option is only available if you are using `OCI ECR`. | + | **ECR Registry Private** | Type `y` if the registry is private. Otherwise, type `n`. | + | **Use Public Registry for Images** | Type `y` to use a public registry for images. Type `n` to a different registry for images. If you are using another registry for images, you will be prompted to enter the registry URL, base path, username, and password. Airgap users, select `n` so that you can specify the values for the OCI registry that contains all the required images. | + + When prompted to **Pull images from public registry**, type `n` and specify the OCI registry configuration values + for your image registry. If you are an [airgap support VM](./vmware-vsphere-airgap-instructions.md), the CLI will + automatically detect the airgap environment and prompt you to **Use local, air-gapped Image Registry?**. Type `y` to + use the local resources and skip filling in the OCI registry URL and credentials. Refer to the table above for more + information. + + :::info + + You will be provided with an opportunity to update the mirror registries values. To exit `vi` press the `Escape` key + and type `:wq` to save and exit. + + ::: + +14. The next set of prompts is for the VMware vSphere account information. Enter the information listed in the following + table. + + #### VMware vSphere Account Information + + | **Parameter** | **Description** | + | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **vSphere Endpoint** | VMware vSphere endpoint. Must be a fully qualified domain name (FQDN) or IP address without a scheme - that is, without an IP protocol, such as `https://`. Example: `vcenter.mycompany.com`. | + | **vSphere Username** | VMware vSphere account username. | + | **vSphere Password** | VMware vSphere account password. | + | **Allow Insecure Connection** | Bypasses x509 verification. Type `Y` if using a VMware vSphere instance with self-signed Transport Layer Security (TLS) certificates. Otherwise, type `n`. | + + #### VMware vSphere Cluster Configuration + + This information determines where Palette will be deployed in your VMware vSphere environment. The Palette CLI will use + the provided VMware credentials to retrieve information from your VMware vSphere environment and present options for you + to select from. + + | **Parameter** | **Description** | + | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Datacenter** | The installer retrieves the Datacenter automatically. | + | **Folder** | Select the folder that contains the VM instance. | + | **Cluster** | Select the cluster where you want to deploy Palette. | + | **Network** | Select the network where you want to deploy Palette. | + | **Resource Pool** | Select the resource pool where you want to deploy Palette. | + | **Datastore** | Select the datastore where you want to deploy Palette. | + | **Fault Domains** | Configure one or more fault domains by selecting values for these properties: Cluster, Network (with network connectivity), Resource Pool, and Storage Type (Datastore or VM Storage Policy). Note that when configuring the Network, if you are using a distributed switch, choose the network that contains the switch. | + | **NTP Servers** | You can provide a list of Network Time Protocol (NTP) servers, such as `pool.ntp.org`. | + | **SSH Public Keys** | Provide any public SSH keys to access your Palette VMs. This option opens up your system's default text editor. Vi is the default text editor for most Linux distributions. To review basic vi commands, check out the [vi Commands](https://www.cs.colostate.edu/helpdocs/vi.html) reference. | + +15. Specify the IP pool configuration. The placement type can be Static or Dynamic Domain Name Server (DDNS). Choosing + static placement creates an IP pool from which VMs are assigned IP addresses. Choosing DDNS assigns IP addresses + using DNS. + + #### Static Placement Configuration + + | **Parameter** | **Description** | + | ------------------------------- | ------------------------------------------------------------------------------------------- | + | **IP Start range** | Enter the first address in the EC IP pool range. | + | **IP End range** | Enter the last address in the EC IP pool range. | + | **Network Prefix** | Enter the network prefix for the IP pool range. Valid values are in [0, 32]. Example: `18`. | + | **Gateway IP Address** | Enter the IP address of the static IP gateway. | + | **Name servers** | Comma-separated list of DNS name server IP addresses. | + | **Name server search suffixes** | An optional comma-separated list of DNS search domains. | + +16. The last set of prompts are for the vSphere machine and database configuration. Use the following table for + guidance. + + #### vSphere Machine Configuration + + | **Parameter** | **Description** | + | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Small** | Deploy VM nodes with 8 CPU, 16 GB memory, 60 GB storage. The database specs are 20 GB database with 2 CPU limit and 4 GB memory limit. | + | **Medium** | Deploy VM nodes with 16 CPU, 32 GB memory, 100 GB storage. The database specs are 60 GB database with 4 CPU limit and 8 GB memory limit. | + | **Large** | Deploy VM nodes with 32 CPU, 64 GB memory, 120 GB storage. The database specs are 80 GB database with 8 CPU limit and 16 GB memory limit. | + | **Custom** | Deploy VM nodes with custom CPU, memory, storage, database size, CPU limit, and memory limit. If you specify custom, you will be prompted for the CPU, memory, and storage. | + + #### Additional vSphere Machine Configuration + + | **Parameter** | **Description** | + | ----------------- | ---------------------------------------------------------------------------------------- | + | **Node Affinity** | Select the node affinity. Enter `y` to schedule all Palette pods on control plane nodes. | + + The installation process stands up a [kind](https://kind.sigs.k8s.io/) cluster locally that will orchestrate the + remainder of the installation. The installation takes some time. + + Upon completion, the enterprise cluster configuration file named `ec.yaml` contains the information you provided, + and its location is displayed in the terminal. Credentials and tokens are encrypted in the YAML file. + + ```bash hideClipboard + ==== Enterprise Cluster config saved ==== + Location: :/home/spectro/.palette/ec/ec-20230706150945/ec.yaml + ``` + + :::tip + + If an error occurs during installation, remove the `kind` cluster that was created and restart the installation. To + remove the `kind` cluster, issue the following command. Replace `spectro-mgmt-cluster` with the name of your cluster + if you used a different name. + + ```bash + kind delete cluster spectro-mgmt-cluster + ``` + + Restart the install process by referencing the `ec.yaml` file that was created during the first installation + attempt. For example: + + ```bash + palette ec install --config /home/spectro/.palette/ec/ec-20230706150945/ec.yaml + ``` + + ::: + + When the installation is complete, Enterprise Cluster Details that include a URL and default credentials are + displayed in the terminal. You will use these to access the Palette VerteX System Console. The Palette CLI has the + kubectl CLI included. You can find the kubectl binary in the **bin** directory of the Palette CLI configuration + directory, located at **~/.palette/bin/kubectl**. + + ```bash hideClipboard + =========================================== + ==== Enterprise Cluster System Console ==== + =========================================== + Console URL: https://10.10.100.0/system + Username: ************ + Password: ************ + + The first of three Enterprise Cluster nodes is online and will now provision nodes two and three. + + It will take another ~30-45 minutes for the installation to complete. + + You can monitor its progress via kubectl/k9s or by viewing the system console. + + export KUBECONFIG=/ubuntu/.palette/ec/ec-20231012215923/spectro_mgmt.conf + ``` + +17. Copy the URL and paste it in your browser's URL field to access the system console. You will be prompted to reset. + + :::info + + The first time you visit the Palette VerteX system console, a warning message about an untrusted SSL certificate may + appear. This is expected, as you have not yet uploaded your SSL certificate to Palette VerteX. You can ignore this + warning message and proceed. + + ::: + + ![Screenshot of the Palette VerteX system console showing Username and Password fields.](/vertex_installation_install-on-vmware_vertex-system-console.webp) + +18. Log in to the System Console using the credentials provided in the Enterprise Cluster Details output. After login, + you will be prompted to create a new password. Enter a new password and save your changes. You will be redirected to + the Palette VerteX system console. + +19. After login, a Summary page is displayed. Palette VerteX is installed with a self-signed SSL certificate. To assign + a different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority + files to Palette VerteX. You can upload the files using the Palette VerteX system console. Refer to the + [Configure HTTPS Encryption](/vertex/system-management/ssl-certificate-management) page for instructions on how to + upload the SSL certificate files to Palette VerteX. + +20. The last step is to start setting up a tenant. To learn how to create a tenant, check out the + [Tenant Management](../../../system-management/tenant-management.md) guide. + + ![Screenshot of the Summary page showing where to click Go to Tenant Management button.](/vertex_installation_install-on-vmware_goto-tenant-management.webp) + +## Validate + +You can verify the installation is successful if you can access the system console using the IP address provided in +Enterprise Cluster Details and if the Summary page displays the **Go to Tenant Management** button. + +You can also validate that a three-node Kubernetes cluster is launched and Palette VerteX is deployed on it. + +1. Log in to the vCenter Server by using vSphere Client. + +2. Navigate to your vSphere Datacenter and locate your Palette VM instances. The VMs are prefixed with the name you + provided during the installation. For example, if you provided `spectro-mgmt-cluster` as the name, the VMs are named + `spectro-mgmt-cluster-`, followed by a unique set of alphanumeric values. Verify three nodes are available. + +3. Open a web browser session, and use the IP address provided in Enterprise Cluster Details at the completion of the + installation to connect to the Palette system console. Copy the IP address to the address bar and append `/system`. + +4. Log in using your credentials. + +5. A **Summary** page will be displayed that contains a tile with a **Go to Tenant Management** button. After initial + installation, the **Summary** page shows there are zero tenants. + +## Next Steps + +You have successfully installed Palette VerteX in vSphere. Your next steps are to configure Palette VerteX for your +organization. Start by creating the first tenant to host your users. Refer +to [Create a Tenant](../../../system-management/tenant-management.md) for instructions. + +After you create the tenant, you are ready to configure authentication types in tenant settings and create users and +teams. + +## Resources + +- [Environment Setup](./vmware-vsphere-airgap-instructions.md) + +- [Create a Tenant](../../../system-management/tenant-management.md) + +- [Enterprise Install Troubleshooting](../../../../troubleshooting/enterprise-install.md) + +- [Palette CLI](../../../../palette-cli/install-palette-cli.md#download-and-setup) + +- [System Management](../../../system-management/system-management.md) + +- [VMware System Requirements](../vmware-system-requirements.md) diff --git a/docs/docs-content/vertex/install-palette-vertex/airgap/vmware-vsphere-airgap-instructions.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions.md similarity index 91% rename from docs/docs-content/vertex/install-palette-vertex/airgap/vmware-vsphere-airgap-instructions.md rename to docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions.md index d0bd73812b..c9671a4b32 100644 --- a/docs/docs-content/vertex/install-palette-vertex/airgap/vmware-vsphere-airgap-instructions.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions.md @@ -1,10 +1,10 @@ --- -sidebar_label: "VMware vSphere Airgap Instructions" -title: "VMware vSphere Airgap Instructions" +sidebar_label: "Environment Setup" +title: "Environment Setup" description: "Learn how to install VerteX in an air gap environment." icon: "" hide_table_of_contents: false -sidebar_position: 30 +sidebar_position: 20 tags: ["vertex", "enterprise", "airgap", "vmware", "vsphere"] keywords: ["self-hosted", "vertex"] --- @@ -13,10 +13,9 @@ This guide helps you to prepare your airgap environment for Palette VerteX insta :::info -This guide is for preparing your airgap environment only. For instructions on installing VerteX on -[VMware](../install-on-vmware/install.md) or [Kubernetes](../install-on-kubernetes/install.md), refer to their -respective guides. A checklist of the steps you will complete to prepare your airgap environment for VerteX is available -in the [Checklist](./checklist.md) page. +This guide is for preparing your airgap environment only. For instructions on installing Palette on +[VMware](./install.md). A checklist of the steps you will complete to prepare your airgap environment for Palette is +available in the [Checklist](./checklist.md) page. ::: @@ -49,10 +48,10 @@ VerteX. - Configure the Dynamic Host Configuration Protocol (DHCP) to access the airgap support VM via SSH. You can disable DHCP or modify the IP address after deploying the airgap support VM. -- Review the required vSphere [permissions](../install-on-vmware/vmware-system-requirements.md) and ensure you've - created the proper custom roles and zone tags. Zone tagging enables dynamic storage allocation across fault domains - when provisioning workloads that require persistent storage. Refer to - [Zone Tagging](../install-on-vmware/vmware-system-requirements.md#zone-tagging) for information. +- Review the required vSphere [permissions](../vmware-system-requirements.md) and ensure you've created the proper + custom roles and zone tags. Zone tagging enables dynamic storage allocation across fault domains when provisioning + workloads that require persistent storage. Refer to [Zone Tagging](../vmware-system-requirements.md#zone-tagging) for + information.
@@ -61,7 +60,7 @@ VerteX. Self-hosted VerteX installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can deploy additional PCG instances to support provisioning into remote data centers without a direct incoming connection to VerteX. To learn how to install a PCG on VMware, check out -the [VMware](../../../clusters/data-center/vmware.md) guide. +the [VMware](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: @@ -88,13 +87,13 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock distribution OVA required for the installation. ```url - https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12610-0.ova + https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12711-0.ova ``` Place the OVA in the **spectro-templates** folder. Append the `r_` prefix, and remove the `.ova` suffix when - assigning its name and target location. For example, the final output should look like `r_u-2004-0-k-12610`. This + assigning its name and target location. For example, the final output should look like `r_u-2204-0-k-12711-0`. This naming convention is required for the installation process to identify the OVA. Refer to the - [Supplement Packs](./supplemental-packs.md#additional-ovas) page for a list of additional OS OVAs. + [Supplement Packs](../../airgap/supplemental-packs.md) page for a list of additional OS OVAs. You can terminate the deployment after the OVA is available in the `spectro-templates` folder. Refer to the [Deploy an OVF or OVA Template](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vm-administration/GUID-AFEDC48B-C96F-4088-9C1F-4F0A30E965DE.html) @@ -322,8 +321,8 @@ If you are working in Vim, press `i` to enter insert mode in the text editor. Pr 20. The output of the script contains credentials and values you will need when completing the installation with the Palette CLI. If you need to review this information in the future, invoke the script again. -21. Review the [Additional Packs](./supplemental-packs.md) page and identify any additional packs you want to add to - your OCI registry. By default, the installation includes only the minimum required packs. You can also add +21. Review the [Additional Packs](../../airgap/supplemental-packs.md) page and identify any additional packs you want to + add to your OCI registry. By default, the installation includes only the minimum required packs. You can also add additional packs after the installation is complete. You have now completed the preparation steps for an airgap installation. Check out the [Validate](#validate) section to @@ -401,8 +400,7 @@ installed in the airgap support VM and ready to use. palette ec install ``` -Complete all the Palette CLI steps outlined in the [VMware Install Instructions](../install-on-vmware/install.md) guide -from the airgap support VM. +Complete all the Palette CLI steps outlined in the [Install VerteX](./install.md) guide from the airgap support VM. :::info @@ -421,5 +419,3 @@ example values are for reference only. When prompted for **Allow Insecure Connection (Bypass x509 Verification)?**, enter `n` to continue and specify the server certificate filepath from the script output. - -::: diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md index 7ce0104cbd..5a001b8dea 100644 --- a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md @@ -15,6 +15,8 @@ repository access. ## Resources -- [Install on VMware](install.md) +- [Non-Airgap Install on VMware](install.md) + +- [Airgap Installation](./airgap-install/airgap-install.md) - [VMware System Requirements](vmware-system-requirements.md) diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md index 034415ed07..cc52daba89 100644 --- a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Instructions" -title: "Install Palette VerteX on VMware" +sidebar_label: "Non-Airgap Install" +title: "Non-Airgap Install" description: "Learn how to deploy Palette VerteX on VMware." icon: "" hide_table_of_contents: false @@ -9,21 +9,13 @@ tags: ["vertex", "vmware"] keywords: ["self-hosted", "vertex"] --- -You install Palette VerteX using the Palette Command Line Interface (CLI) that guides you for details to create a -configuration file and a three-node enterprise cluster for high availability (HA). You can invoke the Palette CLI on any -Linux x86-64 system with the Docker daemon installed and connectivity to the VMware vSphere environment where Palette -VerteX will be deployed. +You install Palette VerteX in an airgap environment through the Palette Command Line Interface (CLI). The CLI provides +you with an interactive experience that guides you through the installation process. You can invoke the Palette CLI on +any Linux x86-64 system with the Docker daemon installed and connectivity to the VMware vSphere environment where +Palette VerteX will be deployed. ## Prerequisites -:::warning - -If you are installing Palette VerteX in an airgap environment, ensure you complete all the airgap pre-install steps -before proceeding with the installation. Refer to the -[VMware vSphere Airgap Instructions](../airgap/vmware-vsphere-airgap-instructions.md) guide for more information. - -::: - - An AMD64 Linux environment with connectivity to the VMware vSphere environment. - [Docker](https://docs.docker.com/engine/install/) or equivalent container runtime installed and available on the Linux @@ -66,6 +58,14 @@ before proceeding with the installation. Refer to the - x509 SSL certificate authority file in base64 format. This file is optional. + :::warning + + Palette VerteX does not support insecure connections. Ensure you have the Certificate Authority (CA) available, in + PEM format, when using a custom packs and image registry. Otherwise, VerteX will not be able to pull packs and + images from the registry. The Palette CLI will prompt you to provide the CA certificate file path when necessary. + + ::: + - Zone tagging is required for dynamic storage allocation across fault domains when provisioning workloads that require persistent storage. Refer to [Zone Tagging](vmware-system-requirements.md#zone-tagging) for information. @@ -82,14 +82,6 @@ a PCG on VMware, check out the [Deploy to VMware vSphere](../../../clusters/pcg/ ::: -:::warning - -Palette VerteX does not support insecure connections. Ensure you have the Certificate Authority (CA) available, in PEM -format, when using a custom packs and image registry. Otherwise, VerteX will not be able to pull packs and images from -the registry. The Palette CLI will prompt you to provide the CA certificate file path when necessary. - -::: - ## Deployment The video below demonstrates the installation wizard and the prompts you will encounter. Take a moment to watch the @@ -97,20 +89,8 @@ video before you begin the installation process. Make sure to use values that ar the **three-dots Menu** in the lower right corner of the video to expand the video to full screen and to change the playback speed. - - - - - - - - - - - - Use the following steps to install Palette VerteX. 1. Log in to your vCenter environment. @@ -124,11 +104,11 @@ Use the following steps to install Palette VerteX. guide for information about importing an OVA in vCenter. ```url - https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12610-0.ova + https://vmwaregoldenimage-console.s3.us-east-2.amazonaws.com/u-2204-0-k-12711-0.ova ``` 4. Append an `r_` prefix to the OVA name and remove the `.ova` suffix after the import. For example, the final output - should look like `r_u-2004-0-k-12610`. This naming convention is required for the install process to identify the + should look like `r_u-2204-0-k-12711-0`. This naming convention is required for the install process to identify the OVA. Refer to the [Supplement Packs](../airgap/supplemental-packs.md#additional-ovas) page for a list of additional OVAs you can download and upload to your vCenter environment. @@ -160,12 +140,7 @@ Use the following steps to install Palette VerteX. ::: -8. Depending on that type of install of Palette you are using, the Spectro Cloud repository URL value will be - different. - - - Non-Airgap: `https://saas-repo-fips.console.spectrocloud.com` - - Airgap: The URL or IP address of the Spectro Cloud Repository that is provided to you by the airgap setup script. - Make sure to specify the file path to the CA certificate when prompted. +8. The Spectro Cloud repository URL is `https://saas-repo-fips.console.spectrocloud.com`. 9. Enter the repository credentials. Our support team provides the credentials you need to access the public Spectro Cloud repository. Airgap installations, provide the credentials to your private repository provided to you by the @@ -177,7 +152,7 @@ Use the following steps to install Palette VerteX. 12. When prompted, enter the information listed in each of the following tables. - #### Environment Configuration + #### Environment Configuration | **Parameter** | **Description** | | :-------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | @@ -188,60 +163,7 @@ Use the following steps to install Palette VerteX. | **Pod CIDR** | Enter the CIDR pool IP that will be used to assign IP addresses to pods in the EC cluster. The pod IP addresses should be unique and not overlap with any machine IPs in the environment. | | **Service IP Range** | Enter the IP address range that will be used to assign IP addresses to services in the EC cluster. The service IP addresses should be unique and not overlap with any machine IPs in the environment. | -13. Select the tab below that matches your installation type for further guidance. - - - - - Select `y` to use the Spectro Cloud FIPS repository and proceed to the next step. - - - - - - Select the OCI registry type and provide the configuration values. Review the following table for more information. - -:::warning - -For self-hosted OCI registries, ensure you have the server Certificate Authority (CA) certificate file available on the -host where you are using the Palette CLI. You will be prompted to provide the file path to the OCI CA certificate. -Failure to provide the OCI CA certificate will result in self-linking errors. Refer to the -[Self-linking Error](../../../troubleshooting/enterprise-install.md#scenario---self-linking-error) troubleshooting guide -for more information. - -::: - - #### Pack & Image Registry Configuration - - | **Parameter** | **Description** | - | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Registry Type** | Specify the type of registry. Allowed values are `OCI` or `OCI ECR`. Airgap users, select `OCI`. | - | **Registry Name** | Enter the name of the registry. | - | **Registry Endpoint** | Enter the registry endpoint. Airgap users, provide the **Spectro Cloud Repository** URL or hostname shared by the airgap setup script. | - | **Registry Base Path** | Enter the registry base path. | - | **Allow Insecure Connection** | Bypasses x509 verification. Type `n` to specify a certificate authority in the follow-up prompt. Airgap user, ensure you select `n`. | - | **Registry CA certificate filepath** | Specify the file path to the certificate authority. Use absolute paths. Airgap users, provide the filepath displayed by the aurgap setup script. | - | **Registry Username** or **Registry Access Key** | Enter the registry username or the access key if using `OCI ECR`. | - | **Registry Password** or **Registry Secret Key** | Enter the registry password or the secret key if using `OCI ECR`. | - | **Registry Region** | Enter the registry region. This option is only available if you are using `OCI ECR`. | - | **ECR Registry Private** | Type `y` if the registry is private. Otherwise, type `n`. | - | **Use Public Registry for Images** | Type `y` to use a public registry for images. Type `n` to a different registry for images. If you are using another registry for images, you will be prompted to enter the registry URL, base path, username, and password. Airgap users, select `n` so that you can specify the values for the OCI registry that contains all the required images. | - - When prompted to **Pull images from public registry**, type `n` and specify the OCI registry configuration values for - your image registry. Refer to the table above for more information. - -:::info - -You will be provided with an opportunity to update the mirror registries values. To exit `vi` press the `Escape` key and -type `:wq` to save and exit. - -::: - - - - - ---- +13. Select `y` to use the Spectro Cloud FIPS repository and proceed to the next step. 14. The next set of prompts is for the VMware vSphere account information. Enter the information listed in the following table. @@ -417,7 +339,7 @@ teams. ## Resources -- [Airgap Instructions](../airgap/vmware-vsphere-airgap-instructions.md) +- [Airgap Instructions](./airgap-install/vmware-vsphere-airgap-instructions.md) - [Create a Tenant](../../system-management/tenant-management.md) diff --git a/docs/docs-content/vertex/install-palette-vertex/install-palette-vertex.md b/docs/docs-content/vertex/install-palette-vertex/install-palette-vertex.md index 342d3c678b..baefe2015a 100644 --- a/docs/docs-content/vertex/install-palette-vertex/install-palette-vertex.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-palette-vertex.md @@ -17,13 +17,15 @@ VerteX is available in the following modes: | VMware | Install Palette VerteX in VMware environment. | [Install on VMware](./install-on-vmware/install.md) | | Kubernetes | Install Palette VerteX using a Helm Chart in an existing Kubernetes cluster. | [Install on Kubernetes](./install-on-kubernetes/install.md) | +## Airgap Installation + You can also install Palette VerteX in an airgap environment. For more information, refer to the [Airgap Installation](airgap/airgap.md) section. -| **Supported Airgap Platform** | **Description** | -| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| **Supported Airgap Platform** | **Description** | **Install Guide** | +| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | VMware | Install Palette VerteX in VMware environment using your own OCI registry server. | -| Kubernetes | Install Palette VerteX using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | +| Kubernetes | Install Palette VerteX using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Airgap Install](./install-on-kubernetes/airgap-install/airgap-install.md) | The next sections describe specific requirements for installing Palette VerteX. diff --git a/docs/docs-content/vertex/supported-platforms.md b/docs/docs-content/vertex/supported-platforms.md index 32eaa3bc7f..e9be2c0078 100644 --- a/docs/docs-content/vertex/supported-platforms.md +++ b/docs/docs-content/vertex/supported-platforms.md @@ -48,6 +48,7 @@ VerteX supports the following Azure services. | **Service** | **Azure Gov Support?** | | ----------- | ---------------------- | | **IaaS** | ✅ | +| **AKS** | ✅ | All Azure Government regions are supported with the exception of Department of Defense regions. Refer to the [official Azure Government documentation](https://learn.microsoft.com/en-us/azure/azure-government/documentation-government-overview-dod) diff --git a/docs/docs-content/vertex/system-management/account-management/account-management.md b/docs/docs-content/vertex/system-management/account-management/account-management.md index 4b3ba9273e..e8c2095be9 100644 --- a/docs/docs-content/vertex/system-management/account-management/account-management.md +++ b/docs/docs-content/vertex/system-management/account-management/account-management.md @@ -9,12 +9,81 @@ tags: ["vertex", "management", "account"] keywords: ["self-hosted", "vertex"] --- +VerteX supports the ability to have multiple system administrators with different roles and permissions. Use the +different roles to separate the duties of system administrators. + +:::info + +Separation of duties addresses the potential for abuse of authorized privileges and helps to reduce the risk of +malevolent activity without collusion. Separation of duties is supported for management of VerteX for system +administrators using the system console by defining account administration roles that are separate from operations +roles. + +::: + +You can also manage and update your individual user settings, such as email address and credentials from the system +console. + +## System Administrators + +System administrators are users who have access to the system console and can perform various operations based on their +assigned role. VerteX supports the following system administrator roles: + +- Root Administrator + +- Operations Administrator + +- Account Administrator + +The following table outlines the high-level permissions for each system administrator role. + +| Permission | Root Administrator | Operations Administrator | Account Administrator | Description | +| --------------------------------------------- | ------------------ | ------------------------ | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Create and manage other system administrators | :white_check_mark: | :x: | :white_check_mark: | Create and manage system administrators and their settings. Refer to [Create and Manage System Accounts](./manage-system-accounts.md) to learn more. | +| Manage system settings | :white_check_mark: | :white_check_mark: | :x: | View and modify system settings such as SMTP, pack registries, DNS, and more. Refer to the [System Management](../system-management.md) section and its resources to learn more. | +| Manage tenants | :white_check_mark: | :white_check_mark: | :x: | Create and manage tenants. | + +:::info + +All system administrators can access the system console and change individual user settings, such as email address, +password and passkeys. + +::: + +Review the following sections to learn more about each role. + +### Root Administrator + +The root administrator has full access to the system and can perform all operations. The root administrator credentials +are used to log in to the [system console](../system-management.md#system-console) for the first time and must be +changed after the initial login. We recommend you create an account administrator and operations administrator to manage +the system upon initial login. + +### Operations Administrator + +The operations administrator has access to the system console and can perform all operations except for creating and +managing other system administrators. The operations administrator can create and manage tenants, manage system +settings, and manage the system's overall health and performance. + +### Account Administrator + +The account administrator has access to the system console and can only create and manage system administrator accounts +and their settings. System maintenance and tenant management are not available to the account administrator. Use +Operations Administrator to manage system settings and tenants. + +To learn how to create and manage system administrator accounts, check out the +[Create and Manage System Accounts](./manage-system-accounts.md) guide. + +## User Settings + As an admin user, you can update and manage your user settings, such as changing the email address and changing the credentials. You can also enable passkey to access the admin panel. The passkey feature supports both virtual passkey and physical passkey. ## Resources +- [Create and Manage System Accounts](./manage-system-accounts.md) + - [Email Address](./email.md) - [User Credentials](./credentials.md) diff --git a/docs/docs-content/vertex/system-management/account-management/credentials.md b/docs/docs-content/vertex/system-management/account-management/credentials.md index 707b5046be..e46bdd8eae 100644 --- a/docs/docs-content/vertex/system-management/account-management/credentials.md +++ b/docs/docs-content/vertex/system-management/account-management/credentials.md @@ -4,7 +4,7 @@ title: "Manage User Credentials" description: "Update and manage the user credentials" icon: "" hide_table_of_contents: false -sidebar_position: 10 +sidebar_position: 20 tags: ["vertex", "management", "account", "credentials"] keywords: ["self-hosted", "vertex"] --- @@ -12,7 +12,30 @@ keywords: ["self-hosted", "vertex"] You can manage the credentials of the admin user by logging in to the system console. You can also enable passkeys to access the admin panel. The passkey feature supports both virtual passkey and physical passkey. -Use the sections below to learn how to manage user credentials. +## Password Requirements and Security + +Palette VerteX passwords are hashed and salted, the cryptographic key value of the password is stored inside the +internal system database. The cryptographic key is created using Password Based Key Derivation Function 2 (PBKDF2) and +SHA512 with an iteration count of 210,000. The salt is 32 bytes long. + +All system administrators are required to set a password that complies with the following password policy: + +- The password must be at least 14 characters long. +- The password must contain at least one uppercase letter. +- The password must contain at least one lowercase letter. +- The password must contain at least one digit. +- The password must contain at least one special character. +- The password cannot be the same as the previous password. + +Additionally, system administrators can manage the [password blocklist](./password-blocklist.md) to prevent users from +using common or weak passwords. The password blocklist is a list of passwords that are not allowed to be used by users +when setting or updating their passwords. The password blocklist is enforced when users set or update their passwords. + +All system administrators are allowed a maximum of five failed login attempts. After five failed login attempts, the +user account will be placed in a temporary suspended state for a duration of 15 minutes. Upon expiration of the 15 +minutes, the user can try to log in again. + +Use the following sections to learn how to manage user credentials. ## Change Password @@ -27,6 +50,9 @@ Use the following steps to change the password of the admin user. - A Simple Mail Transfer Protocol (SMTP) server must be configured in the system console. Refer to [Configure SMTP](../smtp.md) page for guidance on how to configure an SMTP server. +- The password cannot be in the password blocklist. Refer to the [Manage Password Blocklist](./password-blocklist.md) + guide for guidance on how to manage the password blocklist. + ### Steps 1. Log in to the Palette VerteX system console. Refer to diff --git a/docs/docs-content/vertex/system-management/account-management/email.md b/docs/docs-content/vertex/system-management/account-management/email.md index 13fff520e9..2c5e433030 100644 --- a/docs/docs-content/vertex/system-management/account-management/email.md +++ b/docs/docs-content/vertex/system-management/account-management/email.md @@ -4,7 +4,7 @@ title: "Update Email Address" description: "Update and manage the email address of the admin user." icon: "" hide_table_of_contents: false -sidebar_position: 20 +sidebar_position: 30 tags: ["vertex", "management", "account", "credentials"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/vertex/system-management/account-management/manage-system-accounts.md b/docs/docs-content/vertex/system-management/account-management/manage-system-accounts.md new file mode 100644 index 0000000000..35218a7c1a --- /dev/null +++ b/docs/docs-content/vertex/system-management/account-management/manage-system-accounts.md @@ -0,0 +1,166 @@ +--- +sidebar_label: "Create and Manage System Accounts" +title: "Create and Manage System Accounts" +description: "Learn how to create and manage system accounts in Palette VerteX." +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["vertex", "management", "account"] +keywords: ["self-hosted", "vertex"] +--- + +You can create and manage system accounts if you have the Root Administrator or Account Administrator role in Palette +VerteX. These accounts are used to access the system console and perform various operations based on the assigned role + +![A view of the admin user dashboard](/vertex_account-management_manage-system-accounts_user-dashboard.webp) + +Check out the following sections to learn more about the supported system administrator management workflows. + +## Create System Accounts + +Use the following steps to create a new system account. + +### Prerequisites + +- Access to the Palette VerteX system console. + +- The role of Root Administrator or Account Administrator. + +### Create a System Account + +1. Log in to the Palette VerteX system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide for guidance on how to access + the system console. + +2. From the left **Main Menu** select **Account Management**. + +3. Click **Create Admin**. + +4. Fill in the following fields. Refer to the table below for more information about each field. + + | Field | Description | + | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | First Name | The first name of the user. | + | Last Name | The last name of the user. | + | Email | The email address of the user. | + | Account Type | The type of account to create. Choose from **Operations Administrator**, or **Account Administrator**. Refer to the [System Administrators](./account-management.md#system-administrators) section to learn more about each role. | + +5. Click **Create** to save the new system account. + +6. A message appears confirming the new system account has been created. The message contains an activation URL you can + share with the new user to activate their account. The new user will be prompted to set a password upon activation. + + :::warning + + The activation URL is valid for 24 hours. If the user does not activate their account within 24 hours, you will need + to create a new account for the user. + + ::: + +7. Click on **Copy link & close** to copy the activation URL to your clipboard and close the message. + +### Validate + +Use the following steps to validate the new system account. + +1. Share the activation URL with the new user and ask them to activate their account. + +2. Log in to the Palette VerteX system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide for guidance on how to access + the system console. + +3. From the left **Main Menu** select **Account Management**. + +4. Verify the new system administrator account is listed in the table. Once the new user has activated their account, + the **Status** column will display **Active**. + +## Remove System Accounts + +Use the following steps to remove a system account. + +### Prerequisites + +- Access to the Palette VerteX system console. + +- The role of Root Administrator or Account Administrator. + +- You cannot remove the account you are currently logged in with. Use another system account to remove the account you + want to remove. + +### Remove a System Account + +1. Log in to the Palette VerteX system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide for guidance on how to access + the system console. + +2. From the left **Main Menu** select **Account Management**. + +3. Locate the system account you want to remove in the table and click on the **three-dot Menu** icon at the end of the + row. + +4. Click **Delete**. + +5. A confirmation dialog appears. Check the box to confirm you want to delete the system account and click **Delete**. + +6. A message appears confirming the system account has been deleted. + +### Validate + +Use the following steps to validate the system account has been removed. + +1. Log in to the Palette VerteX system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide for guidance on how to access + the system console. + +2. From the left **Main Menu** select **Account Management**. + +3. Verify the system account has been removed from the table. + +## Reset System Administrator Password + +Use the following steps to reset the password of a system administrator. + +### Limitations + +- You cannot use this feature to reset the password of the account you are currently logged in with. Use the normal + [password change workflow](./credentials.md#change-password) to reset the password of the account you are currently + logged in with. + +- You cannot reset the password of the Root Administrator account using this feature. Log in as the Root Administrator + to reset the password by following the [password change workflow](./credentials.md#change-password). + +### Prerequisites + +- Access to the Palette VerteX system console. + +- The role of Root Administrator or Account Administrator. + +### Reset Password + +1. Log in to the Palette VerteX system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide for guidance on how to access + the system console. + +2. From the left **Main Menu** select **Account Management**. + +3. Locate the system account you want to reset the password for in the table and click on the **three-dot Menu** icon at + the end of the row. + +4. Click **Password Reset Link**. + +5. A message containing the password reset link appears. The message includes a password reset URL that you can share + with the user to reset their password. Upon visiting the URL, the user will be prompted to set a new password. + + :::warning + + The password reset URL is valid for 24 hours. If the user does not reset their password within 24 hours, you must + generate a new password reset link. The current password will remain unchanged until the user sets a new password + + ::: + +6. Click on **Copy link & close** to copy the password reset URL to your clipboard and close the message. + +### Validate + +Ask the user to visit the password reset URL and set a new password. Ask the user to log in to the system console using +the new credentials to ensure the password has been reset successfully. diff --git a/docs/docs-content/vertex/system-management/account-management/password-blocklist.md b/docs/docs-content/vertex/system-management/account-management/password-blocklist.md new file mode 100644 index 0000000000..e4d5d105c1 --- /dev/null +++ b/docs/docs-content/vertex/system-management/account-management/password-blocklist.md @@ -0,0 +1,259 @@ +--- +sidebar_label: "Manage Password Blocklist" +title: "Manage Password Blocklist" +description: "Learn how to manage the password blocklist in Palette VerteX." +icon: "" +hide_table_of_contents: false +sidebar_position: 50 +tags: ["vertex", "management", "account", "credentials"] +keywords: ["self-hosted", "vertex"] +--- + +You can manage a password blocklist to prevent users from using common or weak passwords. The password blocklist is a +list of passwords that users cannot use when setting or updating their passwords. The password blocklist is enforced +when users set or update their passwords. + +:::info + +Refer to [Password Requirements and Security](credentials.md#password-requirements-and-security) to learn more about the +password requirements and security in Palette VerteX. + +::: + +The internal System API is used to manage the password blocklist. Review the following sections to learn how to maintain +the password blocklist. + +## View Passwords in the Blocklist + +The actual password values in the blocklist are not stored in the database. Due to this reason, there is no way to +retrieve the plain text list of passwords in the blocklist. There is no GET endpoint to retrieve the list of passwords +in the blocklist. All passwords are hashed and salted, and the cryptographic key of the password is stored in the +internal system database. + +:::tip + +Store the list of passwords in the blocklist in a secure location that enforces access control so you can refer to it +when needed. + +::: + +## Insert Passwords into the Blocklist + +Use the following steps to insert new passwords into the password blocklist. + +### Prerequisites + +- Access to the Palette VerteX system console. + +- The role of root administrator or operations administrator. + +- curl or any other tool to make HTTP requests. + +- Access to a shell terminal. + +:::warning + +If you enabled passkeys for your system administrator account, the System API login endpoint will be disabled. Refer to +the [Passkeys and API Access](./credentials.md#passkeys-and-api-access) page for guidance on how to use passkeys to +access the System API. + +::: + +### Insert Passwords + +1. Open a terminal session and log in to the Palette VerteX System API by using the `/v1/auth/syslogin` endpoint. Use + the `curl` command below and replace the URL with the custom domain URL you assigned to Palette VerteX or use the IP + address. Ensure you replace the credentials below with your system console credentials. + + ```bash + curl --location 'https://vertex.example.com/v1/auth/syslogin' \ + --header 'Content-Type: application/json' \ + --data '{ + "password": "**********", + "username": "**********" + }' + ``` + + :::tip + + If you are using the default self-signed certificate, you can use the `--insecure` flag to bypass the certificate + check. + + ::: + + Output + + ```json hideClipboard + { + "Authorization": "**********.", + "IsPasswordReset": true + } + ``` + +2. Using the output you received, copy the authorization value to your clipboard and assign it to a shell variable. + Replace the authorization value below with the value from the output. + + ```shell hideClipboard + TOKEN=********** + ``` + +3. Use the `curl` command below to insert new passwords into the password blocklist. Replace the URL with the custom + domain URL you assigned to Palette VerteX or use the IP address. Ensure you replace the `TOKEN` value with the value + you assigned to the shell variable. + + ```bash + curl --location 'https://vertex.example.com/v1/sys/passwords' \ + --header "Authorization: $TOKEN" \ + --header 'Content-Type: application/json' \ + --data '{ + "spec": { + "passwords": [ + "Password", + "password", + "123456", + "qwerty", + ] + } + }' + ``` + + :::info + + The payload expects the `spec.passwords` field to be an array of strings. You can add as many passwords as you want + as long as they are separated by a comma. + + ::: + +4. The endpoint returns a `204` status code if the operation is successful. No output is returned. If the operation + fails, the endpoint returns an error message. In case of an error, verify the authorization token is valid and the + password blocklist is in the expected format. + +### Validate + +To validate the password blocklist, use the following steps. + +1. Log in to the Palette VerteX system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide. + +2. From the **left Main Menu** select **My Account**. + +3. In the field **Current Password** type the current password of your admin user. + +4. In the field **New Password** type one of the passwords you added to the password blocklist. + +5. Type the new password again in the field **Re-Enter New Password**. + +6. Click **Change Password** to save the changes. + +7. An error message is displayed and the password is not updated. The error message indicates the password is in the + blocklist. + +## Remove Passwords from the Blocklist + +Use the following steps to remove passwords from the password blocklist. + +### Prerequisites + +- Access to the Palette VerteX system console. + +- The role of root administrator or operations administrator. + +- curl or any other tool to make HTTP requests. + +- Access to a shell terminal. + +:::warning + +If you enabled passkeys for your system administrator account, the System API login endpoint will be disabled. Refer to +the [Passkeys and API Access](./credentials.md#passkeys-and-api-access) page for guidance on how to use passkeys to +access the System API. + +::: + +### Remove Passwords + +1. Open a terminal session and log in to the Palette VerteX System API by using the `/v1/auth/syslogin` endpoint. Use + the `curl` command below and replace the URL with the custom domain URL you assigned to Palette VerteX or use the IP + address. Ensure you replace the credentials below with your system console credentials. + + ```bash + curl --location 'https://vertex.example.com/v1/auth/syslogin' \ + --header 'Content-Type: application/json' \ + --data '{ + "password": "**********", + "username": "**********" + }' + ``` + + :::tip + + If you are using the default self-signed certificate, you can use the `--insecure` flag to bypass the certificate + check. + + ::: + + Output + + ```json hideClipboard + { + "Authorization": "**********.", + "IsPasswordReset": true + } + ``` + +2. Using the output you received, copy the authorization value to your clipboard and assign it to a shell variable. + Replace the authorization value below with the value from the output. + + ```shell hideClipboard + TOKEN=********** + ``` + +3. Use the `curl` command below to remove passwords from the password blocklist. Replace the URL with the custom domain + URL you assigned to Palette VerteX or use the IP address. Ensure you replace the `TOKEN` value with the value you + assigned to the shell variable. + + ```bash + curl --location --request DELETE 'https://vertex.example.com/v1/sys/passwords' \ + --header "Authorization: $TOKEN" \ + --header 'Content-Type: application/json' \ + --data '{ + "spec": { + "passwords": [ + "Password", + "password", + "123456", + "qwerty", + ] + } + }' + ``` + + :::info + + The payload expects the `spec.passwords`field to be an array of strings. You can remove as many passwords as you + want as long as they are separated by a comma. + + ::: + +4. The endpoint returns a `204` status code if the operation is successful. No output is returned. If the operation + fails, the endpoint returns an error message. In case of an error, verify the authorization token is valid and the + password blocklist is in the expected format. + +### Validate + +To validate the password blocklist, use the following steps. + +1. Log in to the Palette VerteX system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide. + +2. From the **left Main Menu** select **My Account**. + +3. In the field **Current Password** type the current password of your admin user. + +4. In the field **New Password** type one of the passwords you removed from the password blocklist. + +5. Type the new password again in the field **Re-Enter New Password**. + +6. Click **Change Password** to save the changes. + +7. The password is updated successfully. diff --git a/docs/docs-content/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md b/docs/docs-content/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md index 0b5202fbea..a994af01a7 100644 --- a/docs/docs-content/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md +++ b/docs/docs-content/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md @@ -23,10 +23,10 @@ registries. To utilize the entire suite of packs we recommend adding both regist [Add a Registry](../add-registry.md) for guidance. Our support team will provide the required credentials to access the registries. -| **Registry** | **Type** | **Endpoint URL** | **FIPS** | **Base Path** | -| ------------------------------------ | -------- | ---------------------------------------------------- | -------- | ------------- | -| **OCI Pack Registry** | AWS ECR | https://415789037893.dkr.ecr.us-east-1.amazonaws.com | No | production | -| **Spectro Cloud Community Registry** | AWS ECR | https://415789037893.dkr.ecr.us-east-1.amazonaws.com | No | community | +| **Registry** | **Type** | **Endpoint URL** | **FIPS** | **Base Path** | +| ------------------------------------ | -------- | ------------------------------------------------------ | -------- | ------------- | +| **OCI Pack Registry** | AWS ECR | `https://415789037893.dkr.ecr.us-east-1.amazonaws.com` | No | production | +| **Spectro Cloud Community Registry** | AWS ECR | `https://415789037893.dkr.ecr.us-east-1.amazonaws.com` | No | community | :::info diff --git a/docs/docs-content/vertex/system-management/system-management.md b/docs/docs-content/vertex/system-management/system-management.md index a03447bd0b..3e22180715 100644 --- a/docs/docs-content/vertex/system-management/system-management.md +++ b/docs/docs-content/vertex/system-management/system-management.md @@ -26,7 +26,9 @@ cluster and appending the `/system` path to the URL. For example, if your Palett ## Administration and Management -Platform administrators can use the system console to perform the following operations: +System administrators can use the system console to perform the following operations: + +- [Create and Manage System Accounts](./account-management/account-management.md) - Manage FIPS enforcement behaviors and settings. @@ -42,7 +44,7 @@ Platform administrators can use the system console to perform the following oper - Enable metrics collection. -- Manage VerteX platform upgrades. +- [Manage VerteX platform upgrades](../upgrade/upgrade.md). - Configuere login banner. diff --git a/docs/docs-content/vertex/upgrade/_category_.json b/docs/docs-content/vertex/upgrade/_category_.json new file mode 100644 index 0000000000..e1d4231c70 --- /dev/null +++ b/docs/docs-content/vertex/upgrade/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 100 +} diff --git a/docs/docs-content/vertex/upgrade/upgrade-k8s/_category_.json b/docs/docs-content/vertex/upgrade/upgrade-k8s/_category_.json new file mode 100644 index 0000000000..d6d6332053 --- /dev/null +++ b/docs/docs-content/vertex/upgrade/upgrade-k8s/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Kubernetes", + "position": 30 +} diff --git a/docs/docs-content/vertex/upgrade/upgrade-k8s/airgap.md b/docs/docs-content/vertex/upgrade/upgrade-k8s/airgap.md new file mode 100644 index 0000000000..c569c63973 --- /dev/null +++ b/docs/docs-content/vertex/upgrade/upgrade-k8s/airgap.md @@ -0,0 +1,477 @@ +--- +sidebar_label: "Airgap" +title: "Upgrade Airgap Palette VerteX Installed with Kubernetes" +description: "Learn how to upgrade self-hosted airgap Palette VerteX." +icon: "" +sidebar_position: 10 +tags: ["vertex", "self-hosted", "airgap", "kubernetes", "upgrade"] +keywords: ["self-hosted", "vertex", "airgap", "kubernetes"] +--- + +This guide takes you through the process of upgrading a self-hosted airgap Palette VerteX instance installed on +Kubernetes. + +:::warning + +Before upgrading Palette VerteX to a new major version, you must first update it to the latest minor version available. +Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for details. + +::: + +If your setup includes a PCG, you must also +[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette VerteX upgrade. + +## Prerequisites + +- Access to the x86 Linux jumpbox or bastion host with connectivity to the target platform where you have installed + Palette VerteX. + +- An OCI registry such as [Harbor](https://goharbor.io/) or [AWS ECR](https://aws.amazon.com/ecr/) configured and + available to store the new Palette VerteX images and packs. + +- Access to the latest Palette VerteX airgap setup binary. Refer to + [Access Palette VerteX](../../vertex.md#access-palette-vertex) for more details. + +- [`kubectl`](https://kubernetes.io/docs/tasks/tools/#kubectl) and [`helm`](https://helm.sh/docs/intro/install/) + available in your system. + +- Access to the kubeconfig file of the target Kubernetes cluster. You must be able to interact with the cluster through + `kubectl` and have sufficient permissions to upgrade Palette VerteX. We recommend using a role with the cluster-admin + permissions. + +- `unzip` or a similar tool available in your system. + +- Access to the latest Palette VerteX Helm Chart. Refer to + [Access Palette VerteX](../../vertex.md#access-palette-vertex) for more details. + +## Upgrade + +1. Log in to the Linux environment from which you can access your self-hosted airgap Palette VerteX instance. +2. Authenticate with your OCI registry and get credentials to your `spectro-packs` and `spectro-images` repositories. + + :::info + + Be mindful of the auth token timeout. Uploading Palette VerteX images and packages to the OCI registry can take + about an hour. If your auth token expires before everything is uploaded, you will need to re-authenticate and start + the upload again. + + ::: + + Select one of the following tabs for instructions on how to authenticate with Harbor and AWS ECR. + + + + + + Use the following command template to authenticate with your Harbor OCI registry through `oras`. Refer to the + [oras login](https://oras.land/docs/commands/oras_login/) docs for more details about the available CLI flags and + examples. + + ```shell + oras login X.X.X.X --user 'yourUserNameHere' --password 'yourPasswordHere' + ``` + + :::tip + + If your Harbor registry has a self-signed certificate, use the `--insecure` flag. + + ```shell + oras login X.X.X.X --insecure --user 'yourUserNameHere' --password 'yourPasswordHere' + ``` + + ::: + + + + + + To get the authentication commands for your specific registries, navigate to the AWS ECR console and click **View + push commands**. Refer to the + [AWS ECR Authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) + docs for more details. + + Alternatively, you can use the following command templates: + + - Authenticate with your private `spectro-packs` registry: + + - ``: Replace with the region where your ECR repository is hosted. + - ``: Replace with your AWS account ID. + + ```shell + aws ecr get-login-password --region | oras login --username AWS --password-stdin .dkr.ecr..amazonaws.com + ``` + + Consider the following example for reference. + + ```shell + aws ecr get-login-password --region us-east-1 | oras login --username AWS --password-stdin 123456789.dkr.ecr.us-east-1.amazonaws.com + ``` + + - Authenticate with your public `spectro-images` registry: + + - ``: Replace with the region where your ECR repository is hosted. + - ``: Replace with the URL to your public ECR registry. + + ```shell + aws ecr-public get-login-password --region | docker login --username AWS --password-stdin + ``` + + Consider the following example for reference. + + ```shell + aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/dfa987f + ``` + + + + + +3. Prepare and export the environment variables required by the Palette VerteX airgap binary. Select one of the + following tabs for instructions on how to prepare these variables for Harbor and AWS ECR. + + + + + + - `OCI_IMAGE_REGISTRY`: The IP address or domain name of the `spectro-images` registry. + - `OCI_IMAGE_BASE`: The namespace or repository that hosts the images. + - `OCI_PACK_REGISTRY`: The IP address or domain name of the `spectro-packs` registry. + - `OCI_PACK_BASE`: The namespace or repository that hosts the packages. + + ```shell + export OCI_IMAGE_REGISTRY= + export OCI_IMAGE_BASE=spectro-images + export OCI_PACK_REGISTRY= + export OCI_PACK_BASE=spectro-packs + ``` + + Consider the following example for reference. + + ```shell + export OCI_IMAGE_REGISTRY=example.internal.com + export OCI_IMAGE_BASE=spectro-images + export OCI_PACK_REGISTRY=10.10.100.48 + export OCI_PACK_BASE=spectro-packs + ``` + + + + + + - `ECR_IMAGE_REGISTRY`: The IP address or domain name of the public `spectro-images` registry. + - `ECR_IMAGE_BASE`: The namespace or repository that hosts the images. + - `ECR_IMAGE_REGISTRY_REGION`: The AWS region where the ECR registry is located. + - `ECR_PACK_REGISTRY`: The IP address or domain name of the public `spectro-packs` registry. + - `ECR_PACK_BASE`: The namespace or repository that hosts the packages. + - `ECR_PACK_REGISTRY_REGION`: The AWS region where the ECR registry is located. + + ```shell + export ECR_IMAGE_REGISTRY= + export ECR_IMAGE_BASE=spectro-images + export ECR_IMAGE_REGISTRY_REGION= + export ECR_PACK_REGISTRY= + export ECR_PACK_BASE=spectro-packs + export ECR_PACK_REGISTRY_REGION= + ``` + + Consider the following example for reference. + + ```shell + export ECR_IMAGE_REGISTRY=public.ecr.aws/1234567890 + export ECR_IMAGE_BASE=spectro-images + export ECR_IMAGE_REGISTRY_REGION=us-east-1 + export ECR_PACK_REGISTRY=123456789.dkr.ecr.us-east-1.amazonaws.com + export ECR_PACK_BASE=spectro-packs + export ECR_PACK_REGISTRY_REGION=us-east-1 + ``` + + + + + +4. Download the airgap setup binary using the credentials our support team provided along with the binary version. Use + the following command template to set up a `VERSION` variable you'll use in the following steps. + + ```shell + export VERSION= + ``` + + Consider the following example for reference. + + ```shell + export VERSION=4.2.7 + ``` + +5. Use the following command template to download the new Palette VerteX airgap installation bin. Enter the username, + password, and the Palette VerteX airgap installation URL you received from our support team. In the output file + name, replace `` with the Palette VerteX version you're downloading. + + ```shell + curl --user : --output airgap-.bin + ``` + + Consider the following command example for reference. + + ```shell + curl --user : --output airgap-4.2.7.bin https://software.spectrocloud.com/airgap-v4.2.7.bin + ``` + +6. Use the following command template to execute the new Palette VerteX airgap installation bin. + + ```shell + chmod +x airgap-v$VERSION.bin && ./airgap-v$VERSION.bin + ``` + + After the binary execution is done, you should receive the following success message (the example is shortened for + brevity). As a result of starting the binary, you should have a `spectro-manifests` archive in your temporary + directory. + + ```shell + Verifying archive integrity... 100% MD5 checksums are OK. All good. + Uncompressing Airgap Setup - Version 4.0.17 100% + Setting up Packs + - Pushing Pack cni-calico:3.25.1 + ... + Setting up Images + - Pushing image docker.io/kindest/kindnetd:v20230227-15197099 + - Pushing image gcr.io/cloud-provider-vsphere/cpi/release/manager:v1.22.8 + ... + // highlight-start + Preparing Manifests Archive + Manifests are available in /tmp/spectro-manifests-1696971110.zip. Extract the archive to a file server to serve as a Spectro Cloud Repository + // highlight-end + Setup Completed + ``` + +7. Move the `spectro-manifests` archive to a directory that your file server can access and use the following command + template to unzip it. + + ```shell + unzip spectro-manifests-.zip -d /target/folder + ``` + +8. Refer to the [Additional Packs](../../install-palette-vertex/airgap/supplemental-packs.md) page and update the + packages you are currently using. You must update each package separately. + + :::info + + Depending on your underlying infrastructure provider and Kubernetes distribution, you may need to modify the + following Palette VerteX upgrade steps to match your environment. + + ::: + +9. Navigate to the directory with the Palette VerteX installation zip file. Unzip the file to a **palette-install** + directory. + + ```shell + unzip release-*.zip -d palette-install + ``` + +10. Navigate to the release directory inside **palette-install**. + + ```shell + cd palette-install/charts/release-* + ``` + +11. In a code editor of your choice, open the **extras/cert-manager/values.yaml** file and replace the + `controllerImage`, `webhookImage`, and `amceResolverImage` image URLs with your OCI image registry URLs. + + ```yaml + image: + cainjectorImage: "gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-cainjector:spectro-v1.11.0-20230427" + // highlight-start + controllerImage: "/spectro-images-public/release-fips/jetstack/cert-manager-controller:spectro-v1.11.0-20230427" + webhookImage: "/spectro-images-public/release-fips/jetstack/cert-manager-webhook:spectro-v1.11.0-20230808" + amceResolverImage: "/spectro-images-public/release-fips/jetstack/cert-manager-acmesolver:spectro-v1.11.0-20230427" + // highlight-end + + featureGates: "AdditionalCertificateOutputFormats=true" + ``` + + Consider the following example for reference. + + ```yaml + image: + cainjectorImage: "gcr.io/spectro-images-public/release-fips/jetstack/cert-manager-cainjector:spectro-v1.11.0-20230427" + // highlight-start + controllerImage: "harbor.docs.spectro.dev/spectro-images-public/release-fips/jetstack/cert-manager-controller:spectro-v1.11.0-20230427" + webhookImage: "harbor.docs.spectro.dev/spectro-images-public/release-fips/jetstack/cert-manager-webhook:spectro-v1.11.0-20230808" + amceResolverImage: "harbor.docs.spectro.dev/spectro-images-public/release-fips/jetstack/cert-manager-acmesolver:spectro-v1.11.0-20230427" + // highlight-end + + featureGates: "AdditionalCertificateOutputFormats=true" + ``` + +12. Update the cert-manager chart using the following command. + + ```shell + helm upgrade --values extras/cert-manager/values.yaml \ + cert-manager extras/cert-manager/cert-manager-*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "cert-manager" has been upgraded. Happy Helming! + NAME: cert-manager + LAST DEPLOYED: Thu Feb 22 19:42:33 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +13. Prepare the Palette VerteX configuration file `values.yaml`. If you saved `values.yaml` used during the Palette + VerteX installation, you can reuse it for the upgrade. Alternatively, follow the + [Kubernetes Installation Instructions](../../install-palette-vertex/install-on-kubernetes/install.md) to populate + your `values.yaml`. + + :::warning + + Ensure that the `values.yaml` file is ready before proceeding. Specifically, make sure that the `ociPackEcrRegistry` + and `ociImageRegistry` configurations include the parameters necessary to interact with your `spectro-images` and + `spectro-packs` repositories. + + ::: + +14. Upgrade the image-swap chart with the following command. Point to the `palette/values.yaml` file from step twelve. + + ```shell + helm upgrade --values palette/values.yaml \ + image-swap extras/image-swap/image-swap-*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "image-swap" has been upgraded. Happy Helming! + NAME: image-swap + LAST DEPLOYED: Thu Feb 22 19:44:13 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +15. Upgrade the reach-system chart with the following command. Point to the `palette/values.yaml` file from step twelve. + + ```shell + helm upgrade --values palette/values.yaml \ + reach-system extras/reach-system/reach-system-\*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "reach-system" has been upgraded. Happy Helming! + NAME: reach-system + LAST DEPLOYED: Thu Feb 22 19:47:10 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +16. Upgrade Palette VerteX with the following command. + + ```shell + helm upgrade --values palette/values.yaml \ + hubble palette/spectro-mgmt-plane-\*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "hubble" has been upgraded. Happy Helming! + NAME: hubble + LAST DEPLOYED: Thu Feb 22 20:05:24 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +17. Use the following command to track the upgrade process. + + ```shell + kubectl get pods --all-namespaces --watch + ``` + + :::tip + + For a more user-friendly experience, consider using [K9s](https://k9scli.io/) or a similar tool to track the + upgrade. + + ::: + + The upgrade usually takes up to five minutes. Palette VerteX is upgraded when the deployments in the namespaces + `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system` , and `ui-system` are in the **Ready** status. + +## Validate + +1. In your terminal, issue the following command. + + ```shell + helm ls + ``` + + You should receive an output with the version and other details of the currently deployed apps. Check the + `App Version` column of `cert-manager`, `image-swap`, `reach-system`, and `hubble` to verify that they have the + expected versions. + + ```shell + NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION + cert-manager default 2 2024-02-22 19:42:33.776829 +0100 CET deployed cert-manager-1.11.0 1.11.0 + image-swap default 2 2024-02-22 19:44:13.209592 +0100 CET deployed image-swap-v1.5.2-spectro-4.1.1 1.5.2 + reach-system default 2 2024-02-22 19:47:10.558061 +0100 CET deployed reach-system-4.2.0 4.2.0 + hubble default 2 2024-02-22 19:47:24.085305 +0100 CET deployed spectro-mgmt-plane-4.2.7 4.2.7 + ``` + +2. Issue the following command to verify that the Palette VerteX clusters work as expected. + + ```shell + kubectl get pods --all-namespaces --output custom-columns="NAMESPACE:metadata.namespace,NAME:metadata.name,STATUS:status.phase" \ + | grep -E '^(cp-system|hubble-system|ingress-nginx|jet-system|ui-system)\s' + ``` + + The command should return a list of deployments in the `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system`, + and `ui-system` namespaces. All deployments should have the status `Running`. + + ```shell + cp-system spectro-cp-ui-689984f88d-54wsw Running + hubble-system auth-85b748cbf4-6drkn Running + hubble-system auth-85b748cbf4-dwhw2 Running + hubble-system cloud-fb74b8558-lqjq5 Running + hubble-system cloud-fb74b8558-zkfp5 Running + hubble-system configserver-685fcc5b6d-t8f8h Running + hubble-system event-68568f54c7-jzx5t Running + hubble-system event-68568f54c7-w9rnh Running + hubble-system foreq-6b689f54fb-vxjts Running + hubble-system hashboard-897bc9884-pxpvn Running + hubble-system hashboard-897bc9884-rmn69 Running + hubble-system hutil-6d7c478c96-td8q4 Running + hubble-system hutil-6d7c478c96-zjhk4 Running + hubble-system mgmt-85dbf6bf9c-jbggc Running + hubble-system mongo-0 Running + hubble-system mongo-1 Running + hubble-system mongo-2 Running + hubble-system msgbroker-6c9b9fbf8b-mcsn5 Running + hubble-system oci-proxy-7789cf9bd8-qcjkl Running + hubble-system packsync-28205220-bmzcg Succeeded + hubble-system spectrocluster-6c57f5775d-dcm2q Running + hubble-system spectrocluster-6c57f5775d-gmdt2 Running + hubble-system spectrocluster-6c57f5775d-sxks5 Running + hubble-system system-686d77b947-8949z Running + hubble-system system-686d77b947-cgzx6 Running + hubble-system timeseries-7865bc9c56-5q87l Running + hubble-system timeseries-7865bc9c56-scncb Running + hubble-system timeseries-7865bc9c56-sxmgb Running + hubble-system user-5c9f6c6f4b-9dgqz Running + hubble-system user-5c9f6c6f4b-hxkj6 Running + ingress-nginx ingress-nginx-controller-2txsv Running + ingress-nginx ingress-nginx-controller-55pk2 Running + ingress-nginx ingress-nginx-controller-gmps9 Running + jet-system jet-6599b9856d-t9mr4 Running + ui-system spectro-ui-76ffdf67fb-rkgx8 Running + ``` diff --git a/docs/docs-content/vertex/upgrade/upgrade-k8s/non-airgap.md b/docs/docs-content/vertex/upgrade/upgrade-k8s/non-airgap.md new file mode 100644 index 0000000000..6232e46a8b --- /dev/null +++ b/docs/docs-content/vertex/upgrade/upgrade-k8s/non-airgap.md @@ -0,0 +1,232 @@ +--- +sidebar_label: "Non-airgap" +title: "Upgrade Palette VerteX Installed with Kubernetes" +description: "Learn how to upgrade self-hosted non-airgap Palette VerteX with Helm and Kubernetes." +icon: "" +sidebar_position: 0 +tags: ["vertex", "self-hosted", "non-airgap", "kubernetes", "management", "upgrades"] +keywords: ["self-hosted", "vertex"] +--- + +This guide takes you through the process of upgrading a self-hosted Palette VerteX instance installed with Helm on +Kubernetes. + +:::warning + +Before upgrading Palette VerteX to a new major version, you must first update it to the latest minor version available. +Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for details. + +::: + +If your setup includes a PCG, you must also +[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette VerteX upgrade. + +## Prerequisites + +- [`kubectl`](https://kubernetes.io/docs/tasks/tools/#kubectl) and [`helm`](https://helm.sh/docs/intro/install/) + available in your system. + +- Access to the kubeconfig file of the target Kubernetes cluster. You must be able to interact with the cluster through + `kubectl` and have sufficient permissions to upgrade Palette VerteX. We recommend using a role with the cluster-admin + permissions. + +- `unzip` or a similar tool available in your system. + +- Access to the latest Palette VerteX Helm Chart. Refer to + [Access Palette VerteX](../../vertex.md#access-palette-vertex) for more details. + +## Upgrade + +:::info + +Depending on your underlying infrastructure provider and Kubernetes distribution, you may need to modify these steps to +match your environment. + +::: + +1. Open a terminal session and navigate to the directory with the Palette VerteX installation zip file. Unzip the file + to a **palette-install** directory. + + ```shell + unzip release-*.zip -d palette-install + ``` + +2. Navigate to the release directory inside **palette-install**. + + ```shell + cd palette-install/charts/release-* + ``` + +3. Update the cert-manager chart using the following command. + + ```shell + helm upgrade --values extras/cert-manager/values.yaml \ + cert-manager extras/cert-manager/cert-manager-*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "cert-manager" has been upgraded. Happy Helming! + NAME: cert-manager + LAST DEPLOYED: Thu Feb 22 19:42:33 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +4. Prepare the Palette VerteX configuration file `values.yaml`. If you saved `values.yaml` used during the Palette + VerteX installation, you can reuse it for the upgrade. Alternatively, follow the + [Kubernetes Installation Instructions](../../install-palette-vertex/install-on-kubernetes/install.md) to populate + your `values.yaml`. + + :::warning + + Ensure that the `values.yaml` file is ready before proceeding. If you're using a self-hosted OCI registry, make sure + that the `ociImageRegistry.mirrorRegistries` parameter in your `values.yaml` includes the necessary mirror links. + + ::: + +5. If you are using a self-hosted OCI registry, upgrade the image-swap chart with the following command. Point to the + `palette/values.yaml` file from step four. + + ```shell + helm upgrade --values palette/values.yaml \ + image-swap extras/image-swap/image-swap-*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "image-swap" has been upgraded. Happy Helming! + NAME: image-swap + LAST DEPLOYED: Thu Feb 22 19:44:13 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +6. If you are upgrading a Palette VerteX instance in an environment that requires network proxy configuration, upgrade + the reach-system chart with the following command. Point to the `palette/values.yaml` file from step four. + + ```shell + helm upgrade --values palette/values.yaml \ + reach-system extras/reach-system/reach-system-\*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "reach-system" has been upgraded. Happy Helming! + NAME: reach-system + LAST DEPLOYED: Thu Feb 22 19:47:10 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +7. Upgrade Palette VerteX with the following command. + + ```shell + helm upgrade --values palette/values.yaml \ + hubble palette/spectro-mgmt-plane-\*.tgz --install + ``` + + You should receive an output similar to the following. + + ```shell + Release "hubble" has been upgraded. Happy Helming! + NAME: hubble + LAST DEPLOYED: Thu Feb 22 20:05:24 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 2 + TEST SUITE: None + ``` + +8. Use the following command to track the upgrade process. + + ```shell + kubectl get pods --all-namespaces --watch + ``` + + :::tip + + For a more user-friendly experience, consider using [K9s](https://k9scli.io/) or a similar tool to track the upgrade. + + ::: + + The upgrade usually takes up to five minutes. Palette VerteX is upgraded when the deployments in the namespaces + `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system` , and `ui-system` are in the **Ready** status. + +## Validate + +1. In your terminal, issue the following command. + + ```shell + helm ls + ``` + + You should receive an output with the version and other details of the currently deployed apps. Check the + `App Version` column of `cert-manager`, `image-swap`, `reach-system`, and `hubble` to verify that they have the + expected versions. + + ```shell + NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION + cert-manager default 2 2024-02-22 19:42:33.776829 +0100 CET deployed cert-manager-1.11.0 1.11.0 + image-swap default 2 2024-02-22 19:44:13.209592 +0100 CET deployed image-swap-v1.5.2-spectro-4.1.1 1.5.2 + reach-system default 2 2024-02-22 19:47:10.558061 +0100 CET deployed reach-system-4.2.0 4.2.0 + hubble default 2 2024-02-22 19:47:24.085305 +0100 CET deployed spectro-mgmt-plane-4.2.7 4.2.7 + ``` + +2. Issue the following command to verify that the Palette VerteX clusters work as expected. + + ```shell + kubectl get pods --all-namespaces --output custom-columns="NAMESPACE:metadata.namespace,NAME:metadata.name,STATUS:status.phase" \ + | grep -E '^(cp-system|hubble-system|ingress-nginx|jet-system|ui-system)\s' + ``` + + The command should return a list of deployments in the `cp-system`, `hubble-system`, `ingress-nginx`, `jet-system`, + and `ui-system` namespaces. All deployments should have the status `Running`. + + ```shell + cp-system spectro-cp-ui-689984f88d-54wsw Running + hubble-system auth-85b748cbf4-6drkn Running + hubble-system auth-85b748cbf4-dwhw2 Running + hubble-system cloud-fb74b8558-lqjq5 Running + hubble-system cloud-fb74b8558-zkfp5 Running + hubble-system configserver-685fcc5b6d-t8f8h Running + hubble-system event-68568f54c7-jzx5t Running + hubble-system event-68568f54c7-w9rnh Running + hubble-system foreq-6b689f54fb-vxjts Running + hubble-system hashboard-897bc9884-pxpvn Running + hubble-system hashboard-897bc9884-rmn69 Running + hubble-system hutil-6d7c478c96-td8q4 Running + hubble-system hutil-6d7c478c96-zjhk4 Running + hubble-system mgmt-85dbf6bf9c-jbggc Running + hubble-system mongo-0 Running + hubble-system mongo-1 Running + hubble-system mongo-2 Running + hubble-system msgbroker-6c9b9fbf8b-mcsn5 Running + hubble-system oci-proxy-7789cf9bd8-qcjkl Running + hubble-system packsync-28205220-bmzcg Succeeded + hubble-system spectrocluster-6c57f5775d-dcm2q Running + hubble-system spectrocluster-6c57f5775d-gmdt2 Running + hubble-system spectrocluster-6c57f5775d-sxks5 Running + hubble-system system-686d77b947-8949z Running + hubble-system system-686d77b947-cgzx6 Running + hubble-system timeseries-7865bc9c56-5q87l Running + hubble-system timeseries-7865bc9c56-scncb Running + hubble-system timeseries-7865bc9c56-sxmgb Running + hubble-system user-5c9f6c6f4b-9dgqz Running + hubble-system user-5c9f6c6f4b-hxkj6 Running + ingress-nginx ingress-nginx-controller-2txsv Running + ingress-nginx ingress-nginx-controller-55pk2 Running + ingress-nginx ingress-nginx-controller-gmps9 Running + jet-system jet-6599b9856d-t9mr4 Running + ui-system spectro-ui-76ffdf67fb-rkgx8 Running + ``` diff --git a/docs/docs-content/vertex/upgrade/upgrade-vmware/_category_.json b/docs/docs-content/vertex/upgrade/upgrade-vmware/_category_.json new file mode 100644 index 0000000000..11b11b09b2 --- /dev/null +++ b/docs/docs-content/vertex/upgrade/upgrade-vmware/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "VMware", + "position": 0 +} diff --git a/docs/docs-content/vertex/upgrade/upgrade-vmware/airgap.md b/docs/docs-content/vertex/upgrade/upgrade-vmware/airgap.md new file mode 100644 index 0000000000..c168a5def2 --- /dev/null +++ b/docs/docs-content/vertex/upgrade/upgrade-vmware/airgap.md @@ -0,0 +1,164 @@ +--- +sidebar_label: "Airgap" +title: "Upgrade Airgap Palette VerteX Installed on VMware vSphere" +description: "Learn how to upgrade self-hosted airgap Palette VerteX in VMware." +icon: "" +sidebar_position: 10 +tags: ["vertex", "self-hosted", "vmware", "airgap", "upgrade"] +keywords: ["self-hosted", "vertex"] +--- + +This guide takes you through the process of upgrading a self-hosted airgap Palette VerteX instance installed on VMware +vSphere. + +:::warning + +Before upgrading Palette VerteX to a new major version, you must first update it to the latest minor version available. +Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for details. + +::: + +If your setup includes a PCG, you must also +[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette VerteX upgrade. + +## Prerequisites + +- Access to the Palette VerteX system console. + +- Access to the Palette VerteX airgap support Virtual Machine (VM) that you used for the initial Palette VerteX + installation. + +- Refer to [Access Palette VerteX](../../vertex.md#access-palette-vertex) to download the new airgap Palette VerteX + installation bin. + +- A diff or text comparison tool of your choice. + +## Upgrade + +1. Use the following command template to SSH into the Palette VerteX airgap support VM. Enter the path to your private + SSH key, your username, and the IP or domain of the airgap support VM. The default username is `ubuntu`. + + ```shell + ssh -identity_file ubuntu@ + ``` + + Consider the following command example for reference. + + ```shell + ssh -identity_file /docs/ssh-private-key.pem ubuntu@palette.example.com + ``` + +2. Use the following command to switch to the `root` user account, which you need to proceed with the upgrade. + + ```shell + sudo --login + ``` + +3. Use the following command template to download the new Palette VerteX airgap installation bin. Enter the username, + password, and the Palette VerteX airgap installation URL you received from our support team. In the output file + name, replace `` with the Palette VerteX version you are downloading. + + ```shell + curl --user : --output airgap-.bin + ``` + + Consider the following command example for reference. + + ```shell + curl --user : --output airgap-4.2.12.bin https://software.spectrocloud.com/airgap-v4.2.12.bin + ``` + +4. Refer to the [Additional Packs](../../install-palette-vertex/airgap/supplemental-packs.md) page and update the + packages you are currently using. You must update each package separately. + +5. Use the following command template to execute the new Palette VerteX airgap installation bin. + + ```shell + chmod +x airgap-.bin && ./airgap-.bin + ``` + + Consider the following example for reference. + + ```shell + chmod +x airgap-v4.2.13.bin && ./airgap-v4.2.13.bin + ``` + +6. After the Palette VerteX airgap binary is verified and uncompressed, it uploads the updates to your existing Palette + VerteX instance. This step takes some time to complete. + + ```shell + Verifying archive integrity... 100% MD5 checksums are OK. All good. + Uncompressing Airgap Setup - Version 4.2.13 100% + Setting up CLI + Setting up Manifests + Setting up Packs + ... + + //highlight-next-line + Setup Completed + ``` + + Once the airgap binary is executed, you will receive a **Setup Completed** success message. + +7. Log in to the Palette VerteX system console. + +8. From the left **Main Menu**, select **Enterprise Cluster** and then select the **Profile** tab. + +9. Copy the configurations for your CSI, CNI, and Kubernetes layers to an external location for backup. + + :::tip + + If your Enterprise Cluster profile has configuration changes or additions, make sure to back up all the customized + values to preserve them after the upgrade. + + ::: + + ![Self-hosted Palette VerteX system console with the highlighted Enterprise Cluster profile configuration values.](/enterprise-version_upgrade-upgrade_vmware_non-airgap_copy_configurations.webp) + +10. From the left **Main Menu**, select **Administration** > **Pack Registries**. Then, next to your **spectro-packs** + registry, select the **three-dot Menu** > **Sync**. + + Palette VerteX initiates a registry sync, which can take up to 30 minutes to complete. + +11. From the left **Main Menu**, select **Update Management**. Once the registry sync is done, Palette VerteX will + prompt you to update to the new version. Click **Update**. + + ![Self-hosted Palette VerteX system console with Update Management open and the Update button highlighted.](/enterprise-version_upgrade-upgrade_vmware_non-airgap_update.webp) + +12. In the **Palette version update** preview modal, from the left menu, select the **Kubernetes** layer. The **Incoming + changes** pane displays the changes that the upgrade introduces. The **Current configuration** pane displays your + current layer configuration. + + :::info + + To complete the Palette VerteX upgrade, we recommend using an external diff or text comparison tool. Proceed with + the following steps once you have the comparison tool available next to the Palette VerteX system console. + + ::: + +13. Copy the configurations from both **Incoming changes** and **Current configuration** panes to your comparison tool. + +14. From your current configuration, transfer only those differences that are custom to your self-hosted Palette VerteX + instance (for example, the `podCIDR` and `serviceClusterIpRange` values). Do not override any other changes or + upgrades. + + ![Self-hosted Palette VerteX system console with the upgrade preview pane.](/enterprise-version_upgrade-upgrade_vmware_diff-checker.webp) + +15. After you finish merging the configurations, copy the resulting configuration, and then paste it to the **Current + configuration** pane in the Palette VerteX system console. + + ![Self-hosted Palette VerteX system console with the upgrade preview pane.](/enterprise-version_upgrade-upgrade_vmware_palette-upgrade-preview.webp) + +16. Repeat steps six through eight for each Enterprise Cluster profile layer. + +17. In the bottom-right corner of the **Palette version update** preview modal, select **Confirm**. + + The system console locks for a couple of minutes while the upgrade is applied. + +## Validate + +1. Log in to the Palette VerteX system console. + +2. On the **Summary** page, Palette VerteX should display messages that state **You are using the latest version of + Palette VerteX** and **On-prem system console is healthy**. diff --git a/docs/docs-content/vertex/upgrade/upgrade-vmware/non-airgap.md b/docs/docs-content/vertex/upgrade/upgrade-vmware/non-airgap.md new file mode 100644 index 0000000000..0f508eb6b6 --- /dev/null +++ b/docs/docs-content/vertex/upgrade/upgrade-vmware/non-airgap.md @@ -0,0 +1,85 @@ +--- +sidebar_label: "Non-airgap" +title: "Upgrade Palette VerteX Installed on VMware vSphere" +description: "Learn how to upgrade self-hosted Palette VerteX in VMware vSphere." +icon: "" +sidebar_position: 0 +tags: ["vertex", "self-hosted", "vmware", "non-airgap", "upgrade"] +keywords: ["self-hosted", "vertex"] +--- + +This guide takes you through the process of upgrading a self-hosted Palette VerteX instance installed on VMware vSphere. + +:::warning + +Before upgrading Palette VerteX to a new major version, you must first update it to the latest minor version available. +Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for details. + +::: + +If your setup includes a PCG, you must also +[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette VerteX upgrade. + +## Prerequisites + +- Access to the Palette VerteX system console. +- A diff or text comparison tool of your choice. + +## Upgrade + +1. Log in to the Palette VerteX system console. + +2. From the left **Main Menu**, select **Enterprise Cluster** and then select the **Profile** tab. + +3. Copy the configurations for your CSI, CNI, and Kubernetes layers to an external location for backup. + + :::tip + + If your Enterprise Cluster profile has configuration changes or additions, make sure to back up all the customized + values to preserve them after the upgrade. + + ::: + + ![Self-hosted Palette VerteX system console with the highlighted Enterprise Cluster profile configuration values.](/enterprise-version_upgrade-upgrade_vmware_non-airgap_copy_configurations.webp) + +4. From the left **Main Menu**, select **Update Management** and click **Update**. + + ![Self-hosted Palette VerteX system console with Update Management open and the Update button highlighted.](/enterprise-version_upgrade-upgrade_vmware_non-airgap_update.webp) + +5. In the **Palette version update** preview modal, from the left menu, select the **Kubernetes** layer. The **Incoming + changes** pane displays the changes that the upgrade introduces. The **Current configuration** pane displays your + current layer configuration. + + :::info + + To complete the Palette VerteX upgrade, we recommend using an external diff or text comparison tool. Proceed with the + following steps once you have the comparison tool available next to the Palette VerteX system console. + + ::: + +6. Copy the configurations from both **Incoming changes** and **Current configuration** panes to your comparison tool. + +7. From your current configuration, transfer only those differences that are custom to your self-hosted Palette VerteX + instance (for example, the `podCIDR` and `serviceClusterIpRange` values). Do not override any other changes or + upgrades. + + ![Self-hosted Palette VerteX system console with the upgrade preview pane.](/enterprise-version_upgrade-upgrade_vmware_diff-checker.webp) + +8. After you finish merging the configurations, copy the resulting configuration, and then paste it to the **Current + configuration** pane in the Palette VerteX system console. + + ![Self-hosted Palette VerteX system console with the upgrade preview pane.](/enterprise-version_upgrade-upgrade_vmware_palette-upgrade-preview.webp) + +9. Repeat steps six through eight for each Enterprise Cluster profile layer. + +10. In the bottom-right corner of the **Palette version update** preview modal, select **Confirm**. + + The system console locks for a couple of minutes while the upgrade is applied. + +## Validate + +1. Log in to the Palette VerteX system console. + +2. On the **Summary** page, Palette VerteX should display messages that state **You are using the latest version of + Palette VerteX** and **On-prem system console is healthy**. diff --git a/docs/docs-content/vertex/upgrade/upgrade.md b/docs/docs-content/vertex/upgrade/upgrade.md new file mode 100644 index 0000000000..782553aa32 --- /dev/null +++ b/docs/docs-content/vertex/upgrade/upgrade.md @@ -0,0 +1,48 @@ +--- +sidebar_label: "Upgrade" +title: "Upgrade" +description: "Spectro Cloud upgrade notes for specific Palette VerteX versions." +icon: "" +hide_table_of_contents: false +sidebar_position: 100 +tags: ["vertex", "self-hosted", "upgrade"] +keywords: ["self-hosted", "vertex"] +--- + +This page offers links and reference information for upgrading self-hosted Palette VerteX instances. If you have +questions or concerns, [reach out to our support team](http://support.spectrocloud.io/). + +:::info + +If your setup includes a PCG, make sure to +[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette VerteX upgrade. + +::: + +## Supported Upgrade Paths + +Refer to the following table for the self-hosted Palette VerteX upgrade paths that we currently support. + +:::warning + +Before upgrading Palette VerteX to a new major version, you must first update it to the latest minor version available. + +::: + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.2.13 | 4.3.6 | :white_check_mark: | +| 4.2.7 | 4.2.13 | :white_check_mark: | +| 4.1.x | 4.3.6 | :x: | +| 4.1.12 | 4.2.7 | :white_check_mark: | +| 4.1.7 | 4.2.7 | :white_check_mark: | + +## Upgrade Guides + +Refer to the respective guide for guidance on upgrading your self-hosted Palette VerteX instance. + +- [Non-Airgap VMware](upgrade-vmware/non-airgap.md) +- [Airgap VMware](upgrade-vmware/airgap.md) +- [Non-Airgap Kubernetes](upgrade-k8s/non-airgap.md) +- [Airgap Kubernetes](upgrade-k8s/airgap.md) diff --git a/docs/docs-content/vertex/vertex.md b/docs/docs-content/vertex/vertex.md index 60a6dff5e8..1f9b1d360e 100644 --- a/docs/docs-content/vertex/vertex.md +++ b/docs/docs-content/vertex/vertex.md @@ -55,4 +55,6 @@ installer image, credentials, and an endpoint URL to access the FIPS registry. - [System Management](system-management/system-management.md) +- [Upgrade Notes](upgrade/upgrade.md) + - [Enterprise Install Troubleshooting](../troubleshooting/enterprise-install.md) diff --git a/docsearch.config.json b/docsearch.config.json index bf928db07a..7d62f011c6 100644 --- a/docsearch.config.json +++ b/docsearch.config.json @@ -3,10 +3,9 @@ "start_urls": ["https://docs.spectrocloud.com/"], "sitemap_urls": ["https://docs.spectrocloud.com/sitemap.xml"], "sitemap_alternate_links": true, - "stop_urls": ["/api"], "selectors": { "lvl0": { - "selector": "(//ul[contains(@class,'menu__list')]//a[contains(@class, 'menu__link menu__link--sublist menu__link--active')]/text() | //nav[contains(@class, 'navbar')]//a[contains(@class, 'navbar__link--active')]/text())[last()]", + "selector": "(//ul[contains(@class,\"menu__list\")]//a[contains(@class, \"menu__link menu__link--sublist menu__link--active\")]/text() | //nav[contains(@class, \"navbar\")]//a[contains(@class, \"navbar__link--active\")]/text())[last()]", "type": "xpath", "global": true, "default_value": "Documentation" @@ -17,7 +16,7 @@ "lvl4": "article h4", "lvl5": "article h5", "lvl6": "article h6", - "text": "article p, article li" + "text": "article p, article li, article td, article tr" }, "strip_chars": " .,;:#", "custom_settings": { diff --git a/docsearch.dev.config.json b/docsearch.dev.config.json new file mode 100644 index 0000000000..bc259e741f --- /dev/null +++ b/docsearch.dev.config.json @@ -0,0 +1,28 @@ +{ + "index_name": "dev-docusaurus-librarium", + "start_urls": ["https://docs.spectrocloud.com/"], + "sitemap_urls": ["https://docs.spectrocloud.com/sitemap.xml"], + "sitemap_alternate_links": true, + "stop_urls": ["/api/"], + "selectors": { + "lvl0": { + "selector": "(//ul[contains(@class,\"menu__list\")]//a[contains(@class, \"menu__link menu__link--sublist menu__link--active\")]/text() | //nav[contains(@class, \"navbar\")]//a[contains(@class, \"navbar__link--active\")]/text())[last()]", + "type": "xpath", + "global": true, + "default_value": "Documentation" + }, + "lvl1": "article h1", + "lvl2": "article h2", + "lvl3": "article h3", + "lvl4": "article h4", + "lvl5": "article h5", + "lvl6": "article h6", + "text": "article p, article li, article td, article tr" + }, + "strip_chars": " .,;:#", + "custom_settings": { + "separatorsToIndex": "_", + "attributesForFaceting": ["language", "version", "type", "docusaurus_tag"], + "attributesToRetrieve": ["hierarchy", "content", "anchor", "url", "url_without_anchor", "type"] + } +} diff --git a/docusaurus.config.js b/docusaurus.config.js index 120c8d746d..99402a88e4 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -24,6 +24,7 @@ const config = { onBrokenLinks: "throw", onBrokenAnchors: "throw", onBrokenMarkdownLinks: "throw", + trailingSlash: true, // Even if you don't use internalization, you can use this field to set useful // metadata like html lang. For example, if your site is Chinese, you may want // to replace "en" with "zh-Hans". @@ -31,7 +32,7 @@ const config = { defaultLocale: "en", locales: ["en"], }, - staticDirectories: ["static", "static/assets/docs/images", "static/assets"], + staticDirectories: ["static", "static/assets/docs/images", "static/assets", "static/img/"], headTags: [ { tagName: "script", @@ -127,7 +128,7 @@ const config = { editUrl: "https://github.com/spectrocloud/librarium/blob/master", }, sitemap: { - changefreq: "weekly", + changefreq: "daily", priority: 0.5, ignorePatterns: ["/tags/**"], filename: "sitemap.xml", @@ -149,6 +150,10 @@ const config = { docItemComponent: "@theme/ApiItem", lastVersion: "current", includeCurrentVersion: true, + admonitions: { + keywords: ["preview"], + extendDefaults: true, + }, versions: { current: { label: "latest", @@ -177,6 +182,19 @@ const config = { // Customize API MDX with mustache template hideSendButton: true, }, + emc: { + specPath: "docs/api-content/api-docs/edge-v1/emc-api.json", + outputDir: "docs/api-content/api-docs/edge-v1", + downloadUrl: + "https://github.com/spectrocloud/librarium/blob/master/docs/api-content/api-docs/palette-apis.json", + sidebarOptions: { + groupPathsBy: "tag", + categoryLinkSource: "tag", + }, + template: "api.mustache", + // Customize API MDX with mustache template + hideSendButton: true, + }, }, }, ], @@ -358,6 +376,7 @@ const config = { searchParameters: {}, // Optional: path for search page that enabled by default (`false` to disable it) searchPagePath: "search", + maxResultsPerGroup: 7, }, sidebar: { hideable: true, diff --git a/jest.config.js b/jest.config.js index e3887ac417..b32519fcf4 100644 --- a/jest.config.js +++ b/jest.config.js @@ -6,7 +6,7 @@ module.exports = { moduleNameMapper: { ".+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$": `identity-obj-proxy`, }, - testPathIgnorePatterns: [`node_modules`, `\\.cache`, `.*/build`], + testPathIgnorePatterns: [`node_modules`, `\\.cache`, `.*/build`, `visuals`], testEnvironment: `jsdom`, setupFilesAfterEnv: ["/jest.setup.ts"], }; diff --git a/package-lock.json b/package-lock.json index cee193db4a..21b667ebcb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "spectro-cloud-docs", - "version": "4.2.0", + "version": "4.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "spectro-cloud-docs", - "version": "4.2.0", + "version": "4.3.0", "dependencies": { "@commitlint/cli": "^17.6.7", "@commitlint/config-conventional": "^17.6.7", @@ -26,7 +26,7 @@ "docusaurus-plugin-openapi-docs": "^3.0.0-beta.10", "docusaurus-plugin-sass": "^0.2.5", "docusaurus-theme-openapi-docs": "^3.0.0-beta.10", - "fuse.js": "^7.0.0", + "fuse.js": "^6.6.2", "prism-react-renderer": "^2.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -18227,9 +18227,9 @@ } }, "node_modules/fuse.js": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.0.0.tgz", - "integrity": "sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", + "integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==", "engines": { "node": ">=10" } diff --git a/package.json b/package.json index 724d1a5967..8dcb0828e1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "spectro-cloud-docs", - "version": "4.2.0", + "version": "4.3.0", "private": true, "scripts": { "docusaurus": "docusaurus", @@ -15,8 +15,8 @@ "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", "typecheck": "tsc", - "generate-api-docs": "npm run run-api-parser && docusaurus gen-api-docs palette", - "clean-api-docs": "docusaurus clean-api-docs palette", + "generate-api-docs": "npm run run-api-parser && docusaurus gen-api-docs palette && docusaurus gen-api-docs emc", + "clean-api-docs": "docusaurus clean-api-docs palette && docusaurus clean-api-docs emc", "run-api-parser": "node utils/api-parser/index.js", "lint": "eslint . --ext .js,.ts,.jsx,.tsx", "lint:fix": "npm run lint -- --fix", @@ -52,7 +52,7 @@ "docusaurus-plugin-openapi-docs": "^3.0.0-beta.10", "docusaurus-plugin-sass": "^0.2.5", "docusaurus-theme-openapi-docs": "^3.0.0-beta.10", - "fuse.js": "^7.0.0", + "fuse.js": "^6.6.2", "prism-react-renderer": "^2.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/redirects.js b/redirects.js index b64b187f29..0d775c5c87 100644 --- a/redirects.js +++ b/redirects.js @@ -1,405 +1,437 @@ const redirects = [ { from: `/api/`, - to: `/api/introduction`, + to: `/api/introduction/`, }, { - from: `/clusters/nested-clusters`, - to: `/clusters/palette-virtual-clusters`, + from: `/clusters/nested-clusters/`, + to: `/clusters/palette-virtual-clusters/`, }, { - from: `/clusters/sandbox-clusters`, - to: `/clusters/palette-virtual-clusters`, + from: `/clusters/sandbox-clusters/`, + to: `/clusters/palette-virtual-clusters/`, }, { - from: `/clusters/sandbox-clusters/cluster-quickstart`, - to: `/clusters/palette-virtual-clusters`, + from: `/clusters/sandbox-clusters/cluster-quickstart/`, + to: `/clusters/palette-virtual-clusters/`, }, { - from: `/devx/sandbox-clusters`, - to: `/devx/palette-virtual-clusters`, + from: `/devx/sandbox-clusters/`, + to: `/devx/palette-virtual-clusters/`, }, { - from: `/clusters/edge/virtualized`, - to: `/clusters/edge`, + from: `/clusters/edge/virtualized/`, + to: `/clusters/edge/`, }, { - from: `/troubleshooting/palette-namespaces-podes`, - to: `/architecture/palette-namespaces-podes`, + from: `/troubleshooting/palette-namespaces-podes/`, + to: `/architecture/palette-namespaces-podes/`, }, { - from: `/troubleshooting/Network-Communications-and-Ports`, - to: `/architecture/networking-ports`, + from: `/troubleshooting/Network-Communications-and-Ports/`, + to: `/architecture/networking-ports/`, }, { - from: `/troubleshooting/SAAS-Network-Communications-and-Ports`, - to: `/architecture/networking-ports`, + from: `/troubleshooting/SAAS-Network-Communications-and-Ports/`, + to: `/architecture/networking-ports/`, }, { - from: `/troubleshooting/orchestration-spectrocloud`, - to: `/architecture/orchestration-spectrocloud`, + from: `/troubleshooting/orchestration-spectrocloud/`, + to: `/architecture/orchestration-spectrocloud/`, }, { - from: `/devx/registries/helm-registry`, - to: `/registries-and-packs/registries/helm-charts`, + from: `/devx/registries/helm-registry/`, + to: `/registries-and-packs/registries/helm-charts/`, }, { - from: `/devx/registries/oci-registry`, - to: `/registries-and-packs/registries/oci-registry`, + from: `/devx/registries/oci-registry/`, + to: `/registries-and-packs/registries/oci-registry/`, }, { - from: `/clusters/palette-virtual-clusters/virtual-cluster-quickstart`, - to: `/clusters/palette-virtual-clusters`, + from: `/clusters/palette-virtual-clusters/virtual-cluster-quickstart/`, + to: `/clusters/palette-virtual-clusters/`, }, { - from: `/introduction/architecture-overview`, - to: `/architecture/architecture-overview`, + from: `/introduction/architecture-overview/`, + to: `/architecture/architecture-overview/`, }, { - from: `/introduction`, + from: `/introduction/`, to: `/`, }, { - from: `/introduction/what-is`, + from: `/introduction/what-is/`, to: `/`, }, { - from: `/getting-started/free-cloud-credit`, - to: `/getting-started`, + from: `/getting-started/free-cloud-credit/`, + to: `/getting-started/`, }, { - from: `/getting-started/palette-freemium`, - to: `/getting-started`, + from: `/getting-started/palette-freemium/`, + to: `/getting-started/`, }, { - from: `/getting-started/onboarding-workflow`, - to: `/getting-started`, + from: `/getting-started/onboarding-workflow/`, + to: `/getting-started/`, }, { - from: `/clusters/public-cloud/eks`, - to: `/clusters/public-cloud/aws/eks`, + from: `/clusters/public-cloud/eks/`, + to: `/clusters/public-cloud/aws/eks/`, }, { - from: `/clusters/public-cloud/aks`, - to: `/clusters/public-cloud/azure/aks`, + from: `/clusters/public-cloud/aks/`, + to: `/clusters/public-cloud/azure/aks/`, }, { - from: `/integrations/minio-operator`, - to: `/integrations`, + from: `/integrations/minio-operator/`, + to: `/integrations/`, }, { - from: `/knowledgebase/how-to/reverse-proxy-dashboard`, - to: `/clusters/cluster-management/kubernetes-dashboard`, + from: `/knowledgebase/how-to/reverse-proxy-dashboard/`, + to: `/clusters/cluster-management/kubernetes-dashboard/`, }, { - from: `/devx/cluster-groups`, - to: `/clusters/cluster-groups`, + from: `/devx/cluster-groups/`, + to: `/clusters/cluster-groups/`, }, { - from: `/devx/cluster-groups/ingress-cluster-group`, - to: `/clusters/cluster-groups/ingress-cluster-group`, + from: `/devx/cluster-groups/ingress-cluster-group/`, + to: `/clusters/cluster-groups/ingress-cluster-group/`, }, { - from: `/devx/dev-land-explore`, - to: `/devx`, + from: `/devx/dev-land-explore/`, + to: `/devx/`, }, { - from: `/clusters/cluster-management/.ssh`, - to: `/clusters/cluster-management/ssh-keys`, + from: `/clusters/cluster-management/.ssh/`, + to: `/clusters/cluster-management/ssh-keys/`, }, { - from: `/clusters/edge/install/installer-image`, - to: `/clusters/edge/site-deployment/site-installation`, + from: `/clusters/edge/install/installer-image/`, + to: `/clusters/edge/site-deployment/site-installation/`, }, { - from: `/clusters/edge/native`, - to: `/clusters/edge/site-deployment`, + from: `/clusters/edge/native/`, + to: `/clusters/edge/site-deployment/`, }, { - from: `/clusters/edge/installer-image`, - to: `/clusters/edge/site-deployment/site-installation`, + from: `/clusters/edge/installer-image/`, + to: `/clusters/edge/site-deployment/site-installation/`, }, { - from: `/clusters/edge/site-deployment/installer`, - to: `/clusters/edge/site-deployment/site-installation`, + from: `/clusters/edge/site-deployment/installer/`, + to: `/clusters/edge/site-deployment/site-installation/`, }, { - from: `/knowledgebase/tutorials/terraform-tutorial`, - to: `/tags/tutorial`, + from: `/knowledgebase/tutorials/terraform-tutorial/`, + to: `/tags/tutorial/`, }, { - from: `/knowledgebase/tutorials/cks-tutorial`, - to: `/tags/tutorial`, + from: `/knowledgebase/tutorials/cks-tutorial/`, + to: `/tags/tutorial/`, }, { - from: `/knowledgebase/tutorials/dev-engine`, - to: `/tags/tutorial`, + from: `/knowledgebase/tutorials/dev-engine/`, + to: `/tags/tutorial/`, }, { - from: `/knowledgebase/tutorials/dev-engine/deploy-app`, - to: `/tags/tutorial`, + from: `/knowledgebase/tutorials/dev-engine/deploy-app/`, + to: `/tags/tutorial/`, }, { - from: `/kubernetes-knowlege-hub/how-to/deploy-stateless-frontend-app`, - to: `/kubernetes-knowlege-hub/tutorials/deploy-stateless-frontend-app`, + from: `/kubernetes-knowlege-hub/how-to/deploy-stateless-frontend-app/`, + to: `/kubernetes-knowlege-hub/tutorials/deploy-stateless-frontend-app/`, }, { - from: `/devx/resource-quota`, - to: `/devx/manage-dev-engine/resource-quota`, + from: `/devx/resource-quota/`, + to: `/devx/manage-dev-engine/resource-quota/`, }, { - from: `/devx/registries`, - to: `/devx/manage-dev-engine/registries`, + from: `/devx/registries/`, + to: `/devx/manage-dev-engine/registries/`, }, { - from: `/devx/virtual-clusters`, - to: `/devx/palette-virtual-clusters`, + from: `/devx/virtual-clusters/`, + to: `/devx/palette-virtual-clusters/`, }, { - from: `/clusters/edge/edgeforge-workflow/build-kairos-os`, - to: `/clusters/edge/edgeforge-workflow/palette-canvos`, + from: `/clusters/edge/edgeforge-workflow/build-kairos-os/`, + to: `/clusters/edge/edgeforge-workflow/palette-canvos/`, }, { - from: `/clusters/edge/edgeforge-workflow/build-images`, - to: `/clusters/edge/edgeforge-workflow/palette-canvos`, + from: `/clusters/edge/edgeforge-workflow/build-images/`, + to: `/clusters/edge/edgeforge-workflow/palette-canvos/`, }, { - from: `/integrations/ubuntu-k3s`, - to: `/integrations/ubuntu`, + from: `/integrations/ubuntu-k3s/`, + to: `/integrations/ubuntu/`, }, { - from: `/clusters/brownfield-clusters`, - to: `/clusters/imported-clusters`, + from: `/clusters/brownfield-clusters/`, + to: `/clusters/imported-clusters/`, }, { - from: `/integrations/oidc-eks`, - to: `/integrations/kubernetes`, + from: `/integrations/oidc-eks/`, + to: `/integrations/kubernetes/`, }, { - from: `/clusters/palette-virtual-clusters/add-virtual-cluster-to-host-cluster`, - to: `/clusters/palette-virtual-clusters/deploy-virtual-cluster`, + from: `/clusters/palette-virtual-clusters/add-virtual-cluster-to-host-cluster/`, + to: `/clusters/palette-virtual-clusters/deploy-virtual-cluster/`, }, { - from: `/vm-management/vm-packs-profiles/enable-vm-dashboard`, - to: `/vm-management/vm-packs-profiles/add-roles-and-role-bindings`, + from: `/vm-management/vm-packs-profiles/enable-vm-dashboard/`, + to: `/vm-management/vm-packs-profiles/add-roles-and-role-bindings/`, }, { - from: `/vm-management/vm-packs-profiles/vm-dashboard`, - to: `/vm-management/create-manage-vm/standard-vm-operations`, + from: `/vm-management/vm-packs-profiles/vm-dashboard/`, + to: `/vm-management/create-manage-vm/standard-vm-operations/`, }, { - from: `/vm-management/vm-packs-profiles/create-vm-dashboard-profile`, - to: `/vm-management/vm-packs-profiles/create-vmo-profile`, + from: `/vm-management/vm-packs-profiles/create-vm-dashboard-profile/`, + to: `/vm-management/vm-packs-profiles/create-vmo-profile/`, }, { - from: `/knowledgebase`, - to: `/tags`, + from: `/knowledgebase/`, + to: `/tags/`, }, { - from: `/knowledgebase/tutorials`, - to: `/tags/tutorial`, + from: `/knowledgebase/tutorials/`, + to: `/tags/tutorial/`, }, { - from: `/knowledgebase/how-to`, - to: `/tags/how-to`, + from: `/knowledgebase/how-to/`, + to: `/tags/how-to/`, }, { - from: `/cluster-profiles`, - to: `/profiles/cluster-profiles`, + from: `/cluster-profiles/`, + to: `/profiles/cluster-profiles/`, }, { - from: `/cluster-profiles/task-define-profile`, - to: `/profiles/cluster-profiles/create-cluster-profiles`, + from: `/cluster-profiles/task-define-profile/`, + to: `/profiles/cluster-profiles/create-cluster-profiles/`, }, { - from: `/cluster-profiles/create-add-on-profile`, - to: `/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile`, + from: `/cluster-profiles/create-add-on-profile/`, + to: `/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/`, }, { - from: `/cluster-profiles/task-update-profile`, - to: `/profiles/cluster-profiles/modify-cluster-profiles/update-cluster-profile`, + from: `/cluster-profiles/task-update-profile/`, + to: `/profiles/cluster-profiles/modify-cluster-profiles/update-cluster-profile/`, }, { - from: `/cluster-profiles/cluster-profile-import-export`, - to: `/profiles/cluster-profiles/export-import-cluster-profile`, + from: `/cluster-profiles/cluster-profile-import-export/`, + to: `/profiles/cluster-profiles/export-import-cluster-profile/`, }, { - from: `/cluster-profiles/examples`, - to: `/profiles/cluster-profiles`, + from: `/cluster-profiles/examples/`, + to: `/profiles/cluster-profiles/`, }, { - from: `/cluster-profiles/byoos`, - to: `/byoos`, + from: `/cluster-profiles/byoos/`, + to: `/byoos/`, }, { - from: `/cluster-profiles/byoos/image-builder`, - to: `/byoos/image-builder`, + from: `/cluster-profiles/byoos/image-builder/`, + to: `/byoos/image-builder/`, }, { - from: `/system-profile`, + from: `/system-profile/`, to: `/profiles/`, }, { - from: `/devx/app-profile/create-app-profile`, - to: `/profiles/app-profiles/create-app-profiles`, + from: `/devx/app-profile/create-app-profile/`, + to: `/profiles/app-profiles/create-app-profiles/`, }, { - from: `/devx/app-profile/container-deployment`, - to: `/profiles/app-profiles/create-app-profiles/container-deployment`, + from: `/devx/app-profile/container-deployment/`, + to: `/profiles/app-profiles/create-app-profiles/container-deployment/`, }, { - from: `/devx/app-profile/app-profile-macros`, - to: `/profiles/app-profiles/app-profile-output-vars`, + from: `/devx/app-profile/app-profile-macros/`, + to: `/profiles/app-profiles/app-profile-output-vars/`, }, { - from: `/devx/app-profile/app-profile-cloning`, - to: `/profiles/app-profiles/clone-app-profile`, + from: `/devx/app-profile/app-profile-cloning/`, + to: `/profiles/app-profiles/clone-app-profile/`, }, { - from: `/devx/app-profile/app-profile-versioning`, - to: `/profiles/app-profiles/modify-app-profiles/version-app-profile`, + from: `/devx/app-profile/app-profile-versioning/`, + to: `/profiles/app-profiles/modify-app-profiles/version-app-profile/`, }, { - from: `/devx/app-profile/services`, - to: `/devx/services`, + from: `/devx/app-profile/services/`, + to: `/devx/services/`, }, { - from: `/devx/app-profile/services/connectivity`, - to: `/devx/services/connectivity`, + from: `/devx/app-profile/services/connectivity/`, + to: `/devx/services/connectivity/`, }, { - from: `/devx/app-profile/services/db-services`, - to: `/devx/services/db-services`, + from: `/devx/app-profile/services/db-services/`, + to: `/devx/services/db-services/`, }, { - from: `/devx/app-profile/services/service-listings`, - to: `/devx/services/service-listings`, + from: `/devx/app-profile/services/service-listings/`, + to: `/devx/services/service-listings/`, }, { - from: `/devx/app-profile/services/service-listings/mongo-db`, - to: `/devx/services/service-listings/mongo-db`, + from: `/devx/app-profile/services/service-listings/mongo-db/`, + to: `/devx/services/service-listings/mongo-db/`, }, { - from: `/devx/app-profile/services/service-listings/mysql`, - to: `/devx/services/service-listings/mysql`, + from: `/devx/app-profile/services/service-listings/mysql/`, + to: `/devx/services/service-listings/mysql/`, }, { - from: `/devx/app-profile/services/service-listings/postgresql-db`, - to: `/devx/services/service-listings/postgresql-db`, + from: `/devx/app-profile/services/service-listings/postgresql-db/`, + to: `/devx/services/service-listings/postgresql-db/`, }, { - from: `/devx/app-profile/services/service-listings/redis-db`, - to: `/devx/services/service-listings/redis-db`, + from: `/devx/app-profile/services/service-listings/redis-db/`, + to: `/devx/services/service-listings/redis-db/`, }, { - from: `/devx/app-profile/services/service-listings/vault`, - to: `/devx/services/service-listings/vault`, + from: `/devx/app-profile/services/service-listings/vault/`, + to: `/devx/services/service-listings/vault/`, }, { - from: `/devx/app-profile/services/service-listings/cockroach-db`, - to: `/devx/services/service-listings/cockroach-db`, + from: `/devx/app-profile/services/service-listings/cockroach-db/`, + to: `/devx/services/service-listings/cockroach-db/`, }, { - from: `/integrations/EKS-D`, - to: `/integrations`, + from: `/integrations/EKS-D/`, + to: `/integrations/`, }, { - from: `/enterprise-version/on-prem-system-requirements`, - to: `/enterprise-version/install-palette`, + from: `/enterprise-version/on-prem-system-requirements/`, + to: `/enterprise-version/install-palette/`, }, { - from: `/enterprise-version/deploying-the-platform-installer`, - to: `/enterprise-version/install-palette`, + from: `/enterprise-version/deploying-the-platform-installer/`, + to: `/enterprise-version/install-palette/`, }, { - from: `/enterprise-version/deploying-an-enterprise-cluster`, - to: `/enterprise-version/install-palette`, + from: `/enterprise-version/deploying-an-enterprise-cluster/`, + to: `/enterprise-version/install-palette/`, }, { - from: `/enterprise-version/deploying-palette-with-helm`, - to: `/enterprise-version/install-palette/install-on-kubernetes/install`, + from: `/enterprise-version/deploying-palette-with-helm/`, + to: `/enterprise-version/install-palette/install-on-kubernetes/install/`, }, { - from: `/enterprise-version/helm-chart-install-reference`, - to: `/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref`, + from: `/enterprise-version/helm-chart-install-reference/`, + to: `/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref/`, }, { - from: `/enterprise-version/system-console-dashboard`, - to: `/enterprise-version/system-management`, + from: `/enterprise-version/system-console-dashboard/`, + to: `/enterprise-version/system-management/`, }, { - from: `/enterprise-version/enterprise-cluster-management`, - to: `/enterprise-version/system-management`, + from: `/enterprise-version/enterprise-cluster-management/`, + to: `/enterprise-version/system-management/`, }, { - from: `/enterprise-version/monitoring`, - to: `/enterprise-version/system-management`, + from: `/enterprise-version/monitoring/`, + to: `/enterprise-version/system-management/`, }, { - from: `/enterprise-version/air-gap-repo`, - to: `/enterprise-version/install-palette`, + from: `/enterprise-version/air-gap-repo/`, + to: `/enterprise-version/install-palette/`, }, { - from: `/enterprise-version/reverse-proxy`, - to: `/enterprise-version/system-management/reverse-proxy`, + from: `/enterprise-version/reverse-proxy/`, + to: `/enterprise-version/system-management/reverse-proxy/`, }, { - from: `/enterprise-version/ssl-certificate-management`, - to: `/enterprise-version/system-management/ssl-certificate-management`, + from: `/enterprise-version/ssl-certificate-management/`, + to: `/enterprise-version/system-management/ssl-certificate-management/`, }, { - from: `/clusters/cluster-management/palette-lock-cluster`, - to: `/clusters/cluster-management/platform-settings`, + from: `/clusters/cluster-management/palette-lock-cluster/`, + to: `/clusters/cluster-management/platform-settings/`, }, { - from: `/registries-and-packs/helm-charts`, - to: `/registries-and-packs/registries/helm-charts`, + from: `/registries-and-packs/helm-charts/`, + to: `/registries-and-packs/registries/helm-charts/`, }, { - from: `/registries-and-packs/oci-registry`, - to: `/registries-and-packs/registries/oci-registry`, + from: `/registries-and-packs/oci-registry/`, + to: `/registries-and-packs/registries/oci-registry/`, }, { - from: `/compliance`, - to: `/legal-licenses/compliance`, + from: `/compliance/`, + to: `/legal-licenses/compliance/`, }, { from: [ `/clusters/public-cloud/cox-edge/`, - `/clusters/public-cloud/cox-edge/add-cox-edge-accounts`, - `/clusters/public-cloud/cox-edge/create-cox-cluster`, - `/clusters/public-cloud/cox-edge/network-rules`, + `/clusters/public-cloud/cox-edge/add-cox-edge-accounts/`, + `/clusters/public-cloud/cox-edge/create-cox-cluster/`, + `/clusters/public-cloud/cox-edge/network-rules/`, ], - to: `/unlisted/cox-edge-eol`, + to: `/unlisted/cox-edge-eol/`, }, { - from: "/user-management/saml-sso/palette-sso-azure-ad", - to: "/user-management/saml-sso/palette-sso-with-entra-id", + from: "/user-management/saml-sso/palette-sso-azure-ad/", + to: "/user-management/saml-sso/palette-sso-with-entra-id/", }, { - from: "/user-management/saml-sso/enable-saml", + from: "/user-management/saml-sso/enable-saml/", to: "/user-management/saml-sso/", }, { - from: "/clusters/data-center/maas/install-manage-maas-pcg", - to: "/clusters/pcg/deploy-pcg/maas", + from: "/clusters/data-center/maas/install-manage-maas-pcg/", + to: "/clusters/pcg/deploy-pcg/maas/", + }, + { + from: "/clusters/edge/networking/local-registry/", + to: "/clusters/edge/site-deployment/deploy-custom-registries/local-registry/", + }, + { + from: "/clusters/edge/site-deployment/deploy-private-registry/", + to: "/clusters/edge/site-deployment/deploy-custom-registries/deploy-private-registry/", }, { from: [ "/security/security-bulletins/", - "/security/security-bulletins/cve-reports", - "/security/security-bulletins/index", + "/security/security-bulletins/cve-reports/", + "/security/security-bulletins/index/", ], to: "/security-bulletins/", }, { - from: "/clusters/public-cloud/azure/gateways", + from: "/clusters/public-cloud/azure/gateways/", to: "/clusters/pcg/", }, { - from: "/projects", + from: "/projects/", to: "/tenant-settings/projects/", }, + { + from: "/enterprise-version/install-palette/airgap/checklist/", + to: "/enterprise-version/install-palette/airgap/", + }, + { + from: "/enterprise-version/install-palette/airgap/kubernetes-airgap-instructions/", + to: "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", + }, + { + from: "/enterprise-version/install-palette/airgap/vmware-vsphere-airgap-instructions/", + to: "/enterprise-version/install-palette/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions/", + }, + { + from: "/vertex/install-palette-vertex/airgap/kubernetes-airgap-instructions/", + to: "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", + }, + { + from: "/vertex/install-palette-vertex/airgap/vmware-vsphere-airgap-instructions/", + to: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions/", + }, + { + from: "/vertex/install-palette-vertex/airgap/checklist/", + to: "/vertex/install-palette-vertex/airgap/", + }, ]; module.exports = redirects; diff --git a/scripts/url-checker.sh b/scripts/url-checker.sh index 6e45301193..d09e2270e4 100755 --- a/scripts/url-checker.sh +++ b/scripts/url-checker.sh @@ -29,6 +29,7 @@ echo "Pull request number: $PR_NUMBER" # Read JSON file contents into a variable JSON_CONTENT=$(cat link_report.json) + # Check if JSON file is empty if [[ -z "$JSON_CONTENT" ]]; then echo "No broken links found" @@ -39,13 +40,14 @@ fi BROKEN_LINK_COUNT=0 # Format comment with JSON content -COMMENT=":loudspeaker: Broken Docs Links in Production Report :spectro: \n\n This is the weekly report of broken links in production. Please review the report and make the required changes. \n\n *Note*: Some links may be false positives due to redirects behavior.\n\n" +COMMENT=":loudspeaker: Broken External Docs Links in Production Report :spectro: \n\n This is the weekly report of broken links in production. Please review the report and make the required changes. \n\n *Note*: Some links may be false positives due to redirects behavior.\n\n" -# Loop through the "links" array and concatenate each item into the COMMENT variable -for link in $(echo "${JSON_CONTENT}" | jq -r '.links[] | @base64'); do - url=$(echo "${link}" | base64 --decode | jq -r '.url') - state=$(echo "${link}" | base64 --decode | jq -r '.state') - parent=$(echo "${link}" | base64 --decode | jq -r '.parent') +# Loop through each item in the JSON array directly +for link in $(echo "${JSON_CONTENT}" | jq -c '.[]'); do + url=$(echo "${link}" | jq -r '.url') + status=$(echo "${link}" | jq -r '.status') + state=$(echo "${link}" | jq -r '.state') + parent=$(echo "${link}" | jq -r '.parent') # Increment counter for broken links if status is not "200" if [[ "$status" != "200" ]]; then @@ -57,7 +59,7 @@ done # Check if no broken links are found if [[ "$BROKEN_LINK_COUNT" -eq 0 ]]; then - COMMENT=":tada: No broken links found in the production report :tada:\n\nGreat job team! Keep up the good work!\n\nSource: :github: - librarium" + COMMENT=":tada: No broken external links found in the production report :tada:\n\nGreat job team! Keep up the good work!\n\nSource: :github: - librarium" else # Add broken link count to the comment COMMENT="${COMMENT}\n\n Total count of broken URLs: ${BROKEN_LINK_COUNT}\n\n Source: :github: - librarium" diff --git a/scripts/versions.sh b/scripts/versions.sh index 275d8e3fcc..b03dae2712 100755 --- a/scripts/versions.sh +++ b/scripts/versions.sh @@ -25,7 +25,7 @@ fi echo "Temp directory: $tempdir" echo "Base directory: $baseDir" # List of version branches to exclude -exclude_branches=(version-3-4 version-4-0) # DO NOT ADD A COMMA BETWEEN THE BRANCHES. ADD A SPACE INSTEAD AND THE NEW VERSION STRING. +exclude_branches=(version-3-4 version-4-0 version-4-1) # DO NOT ADD A COMMA BETWEEN THE BRANCHES. ADD A SPACE INSTEAD AND THE NEW VERSION STRING. # exclude_branches=("version-3-4") # Save the current branch name diff --git a/src/components/Badges/TechnicalPreviewReleaseNote/TechnicalPreviewReleaseNote.module.scss b/src/components/Badges/TechnicalPreviewReleaseNote/TechnicalPreviewReleaseNote.module.scss new file mode 100644 index 0000000000..633b7836ef --- /dev/null +++ b/src/components/Badges/TechnicalPreviewReleaseNote/TechnicalPreviewReleaseNote.module.scss @@ -0,0 +1,6 @@ +.customTpReleaseNoteBadge { + display: initial; + height: auto; + max-width: 100%; + margin-bottom: -5px; +} diff --git a/src/components/Badges/TechnicalPreviewReleaseNote/TechnicalPreviewReleaseNote.test b/src/components/Badges/TechnicalPreviewReleaseNote/TechnicalPreviewReleaseNote.test new file mode 100644 index 0000000000..1bc155455d --- /dev/null +++ b/src/components/Badges/TechnicalPreviewReleaseNote/TechnicalPreviewReleaseNote.test @@ -0,0 +1,13 @@ +// THIS TEST IS BREAKING DUE TO JEST NOT FINDING THE @theme/ThemedImage + +// import React from "react"; +// import { render } from "@testing-library/react"; +// import TechnicalPreviewReleaseNoteBadge from "./TechnicalPreviewReleaseNote"; + +// describe("TechnicalPreviewReleaseNoteBadge", () => { +// test("renders correctly", () => { +// const { container } = render(); +// const badge = container.querySelector("img"); +// expect(badge).toBeInTheDocument(); +// }); +// }); diff --git a/src/components/Badges/TechnicalPreviewReleaseNote/TechnicalPreviewReleaseNote.tsx b/src/components/Badges/TechnicalPreviewReleaseNote/TechnicalPreviewReleaseNote.tsx new file mode 100644 index 0000000000..fef70ce6a1 --- /dev/null +++ b/src/components/Badges/TechnicalPreviewReleaseNote/TechnicalPreviewReleaseNote.tsx @@ -0,0 +1,18 @@ +import React from "react"; +import ThemedImage from "@theme/ThemedImage"; +import styles from "./TechnicalPreviewReleaseNote.module.scss"; + +// define type for TechnicalPreviewReleaseNote + +export default function TechnicalPreviewReleaseNote() { + return ( + + ); +} diff --git a/src/components/Badges/TechnicalPreviewReleaseNote/index.tsx b/src/components/Badges/TechnicalPreviewReleaseNote/index.tsx new file mode 100644 index 0000000000..5c8ad3385b --- /dev/null +++ b/src/components/Badges/TechnicalPreviewReleaseNote/index.tsx @@ -0,0 +1,3 @@ +import TechnicalPreviewReleaseNote from "./TechnicalPreviewReleaseNote"; + +export default TechnicalPreviewReleaseNote; diff --git a/src/components/Badges/index.ts b/src/components/Badges/index.ts new file mode 100644 index 0000000000..b9ee7ff9aa --- /dev/null +++ b/src/components/Badges/index.ts @@ -0,0 +1,3 @@ +import TechnicalPreviewReleaseNote from "./TechnicalPreviewReleaseNote"; + +export { TechnicalPreviewReleaseNote }; diff --git a/src/theme/MDXComponents/MDXComponents.ts b/src/theme/MDXComponents/MDXComponents.ts index a8fef8a3af..a0b9996943 100644 --- a/src/theme/MDXComponents/MDXComponents.ts +++ b/src/theme/MDXComponents/MDXComponents.ts @@ -9,6 +9,7 @@ import Packs from "@site/src/components/Integrations/Packs/Packs"; import AppTiers from "@site/src/components/Integrations/AppTiers/AppTiers"; import PacksTable from "@site/src/components/PacksTable/PacksTable"; import TOCInline from "@theme/TOCInline"; +import { TechnicalPreviewReleaseNote as TpBadge } from "@site/src/components/Badges"; import SimpleCardGrid from "@site/src/components/SimpleCardGrid/index"; import ReleaseNotesVersions from "@site/src/components/ReleaseNotesVersions/index"; @@ -24,6 +25,7 @@ export default { AppTiers, PacksTable, TOCInline, + TpBadge, SimpleCardGrid, ReleaseNotesVersions, }; diff --git a/docs/api-content/api-docs/URL-as-a-link.webp b/static/assets/docs/images/URL-as-a-link.webp similarity index 100% rename from docs/api-content/api-docs/URL-as-a-link.webp rename to static/assets/docs/images/URL-as-a-link.webp diff --git a/static/assets/docs/images/byoos_vmware_konvoy_cluster-profile-view.webp b/static/assets/docs/images/byoos_vmware_konvoy_cluster-profile-view.webp new file mode 100644 index 0000000000..fb39626d9f Binary files /dev/null and b/static/assets/docs/images/byoos_vmware_konvoy_cluster-profile-view.webp differ diff --git a/static/assets/docs/images/byoos_vmware_konvoy_iso-selection.webp b/static/assets/docs/images/byoos_vmware_konvoy_iso-selection.webp new file mode 100644 index 0000000000..c079667aab Binary files /dev/null and b/static/assets/docs/images/byoos_vmware_konvoy_iso-selection.webp differ diff --git a/static/assets/docs/images/cluster_edge_emc_theming.webp b/static/assets/docs/images/cluster_edge_emc_theming.webp new file mode 100644 index 0000000000..98c5a7dd48 Binary files /dev/null and b/static/assets/docs/images/cluster_edge_emc_theming.webp differ diff --git a/static/assets/docs/images/cluster_edge_site-deployment_installation_initial-setup_tui.webp b/static/assets/docs/images/cluster_edge_site-deployment_installation_initial-setup_tui.webp new file mode 100644 index 0000000000..fd67ff3f7a Binary files /dev/null and b/static/assets/docs/images/cluster_edge_site-deployment_installation_initial-setup_tui.webp differ diff --git a/static/assets/docs/images/clusters_edge_emc_workflow.webp b/static/assets/docs/images/clusters_edge_emc_workflow.webp new file mode 100644 index 0000000000..3a20a25562 Binary files /dev/null and b/static/assets/docs/images/clusters_edge_emc_workflow.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-delete.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-delete.webp new file mode 100644 index 0000000000..371866fb42 Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-delete.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-health.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-health.webp new file mode 100644 index 0000000000..2e38538050 Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-health.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-profile.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-profile.webp new file mode 100644 index 0000000000..c348089048 Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-profile.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-provisioning.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-provisioning.webp new file mode 100644 index 0000000000..eb55e2677c Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-provisioning.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-review.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-review.webp new file mode 100644 index 0000000000..eb6060cee6 Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_cluster-review.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_deploy-profile.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_deploy-profile.webp new file mode 100644 index 0000000000..5d1bcd6b63 Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_deploy-profile.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_hello-universe.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_hello-universe.webp new file mode 100644 index 0000000000..7fc90ed1c1 Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_hello-universe.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_metallb-pack.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_metallb-pack.webp new file mode 100644 index 0000000000..710c83697e Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_metallb-pack.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-cli.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-cli.webp new file mode 100644 index 0000000000..6274ea14b8 Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-cli.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-delete.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-delete.webp new file mode 100644 index 0000000000..24bdb9a490 Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-delete.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-diagram.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-diagram.webp new file mode 100644 index 0000000000..087c7a9403 Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-diagram.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-events.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-events.webp new file mode 100644 index 0000000000..951d47f93f Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-events.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-health.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-health.webp new file mode 100644 index 0000000000..ec896f8d68 Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_pcg-health.webp differ diff --git a/static/assets/docs/images/clusters_pcg_deploy-app-pcg_vmware-delete.webp b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_vmware-delete.webp new file mode 100644 index 0000000000..be50164749 Binary files /dev/null and b/static/assets/docs/images/clusters_pcg_deploy-app-pcg_vmware-delete.webp differ diff --git a/static/assets/docs/images/clusters_vmware_architecture_arch-overview.webp b/static/assets/docs/images/clusters_vmware_architecture_arch-overview.webp new file mode 100644 index 0000000000..555e5b603d Binary files /dev/null and b/static/assets/docs/images/clusters_vmware_architecture_arch-overview.webp differ diff --git a/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_diff-checker.webp b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_diff-checker.webp new file mode 100644 index 0000000000..30ee32f7b0 Binary files /dev/null and b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_diff-checker.webp differ diff --git a/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_copy_configurations.webp b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_copy_configurations.webp new file mode 100644 index 0000000000..23768c1975 Binary files /dev/null and b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_copy_configurations.webp differ diff --git a/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_update.webp b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_update.webp new file mode 100644 index 0000000000..01f48a67eb Binary files /dev/null and b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_update.webp differ diff --git a/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_upgrade-preview.webp b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_upgrade-preview.webp new file mode 100644 index 0000000000..dfd824e996 Binary files /dev/null and b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_upgrade-preview.webp differ diff --git a/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_upgraded.webp b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_upgraded.webp new file mode 100644 index 0000000000..726abadb1c Binary files /dev/null and b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_non-airgap_upgraded.webp differ diff --git a/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_palette-upgrade-preview.webp b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_palette-upgrade-preview.webp new file mode 100644 index 0000000000..21b0e6337b Binary files /dev/null and b/static/assets/docs/images/enterprise-version_upgrade-upgrade_vmware_palette-upgrade-preview.webp differ diff --git a/static/assets/docs/images/profiles_create-cluster-profiles_define-profile-variables_add-vars-to-yaml.webp b/static/assets/docs/images/profiles_create-cluster-profiles_define-profile-variables_add-vars-to-yaml.webp new file mode 100644 index 0000000000..46c2c91abc Binary files /dev/null and b/static/assets/docs/images/profiles_create-cluster-profiles_define-profile-variables_add-vars-to-yaml.webp differ diff --git a/static/assets/docs/images/profiles_create-cluster-profiles_define-profile-variables_open-profile-variables.webp b/static/assets/docs/images/profiles_create-cluster-profiles_define-profile-variables_open-profile-variables.webp new file mode 100644 index 0000000000..5bf9403da2 Binary files /dev/null and b/static/assets/docs/images/profiles_create-cluster-profiles_define-profile-variables_open-profile-variables.webp differ diff --git a/static/assets/docs/images/troubleshootig_palette-upgrade_nodes-healthy.webp b/static/assets/docs/images/troubleshootig_palette-upgrade_nodes-healthy.webp new file mode 100644 index 0000000000..26c60c144b Binary files /dev/null and b/static/assets/docs/images/troubleshootig_palette-upgrade_nodes-healthy.webp differ diff --git a/static/assets/docs/images/vertex_account-management_manage-system-accounts_user-dashboard.webp b/static/assets/docs/images/vertex_account-management_manage-system-accounts_user-dashboard.webp new file mode 100644 index 0000000000..ad5cffede3 Binary files /dev/null and b/static/assets/docs/images/vertex_account-management_manage-system-accounts_user-dashboard.webp differ diff --git a/static/assets/docs/images/vmware_arch_oct_2020.webp b/static/assets/docs/images/vmware_arch_oct_2020.webp deleted file mode 100644 index 63ff037595..0000000000 Binary files a/static/assets/docs/images/vmware_arch_oct_2020.webp and /dev/null differ diff --git a/static/assets/videos/palette-login.mp4 b/static/assets/videos/palette-login.mp4 new file mode 100644 index 0000000000..c956ed1d28 Binary files /dev/null and b/static/assets/videos/palette-login.mp4 differ diff --git a/static/assets/videos/palette-pcg.mp4 b/static/assets/videos/palette-pcg.mp4 new file mode 100644 index 0000000000..8e9507ed09 Binary files /dev/null and b/static/assets/videos/palette-pcg.mp4 differ diff --git a/static/img/tech-preview-dark.svg b/static/img/tech-preview-dark.svg new file mode 100644 index 0000000000..3e3f8aed67 --- /dev/null +++ b/static/img/tech-preview-dark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/img/tech-preview-light.svg b/static/img/tech-preview-light.svg new file mode 100644 index 0000000000..d789f60b03 --- /dev/null +++ b/static/img/tech-preview-light.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/packs-data/packs_report.json b/static/packs-data/packs_report.json index 2b51b56828..fd8affa074 100644 --- a/static/packs-data/packs_report.json +++ b/static/packs-data/packs_report.json @@ -1,5 +1,5 @@ { - "dateCreated": "2023-11-01T20:52:42.261612334Z", + "dateCreated": "2024-03-01T12:41:54.508822479Z", "Packs": [ { "name": "alpine", @@ -31,7 +31,7 @@ "status": "active", "packCreateDate": "2023-08-04", "packLastModifiedDate": "2023-08-04", - "timeLastUpdated": "2 months", + "timeLastUpdated": "7 months", "releaseType": "VerteX", "contributor": "", "docsURL": "", @@ -40,7 +40,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax-fips", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "amazon-linux-eks", @@ -61,7 +61,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "ambassador", @@ -73,7 +73,7 @@ "status": "active", "packCreateDate": "2023-02-03", "packLastModifiedDate": "2023-02-03", - "timeLastUpdated": "9 months", + "timeLastUpdated": "1 years", "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "", @@ -82,14 +82,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pack-central", - "registry": "Public Repo" + "registry": "Palette Community Registry - OCI" }, { "name": "ambassador", "displayName": "", "layer": "addon", "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", "version": "6.6.0", "status": "unknown", "packCreateDate": "", @@ -103,7 +103,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" }, { "name": "antrea", @@ -115,7 +115,7 @@ "status": "active", "packCreateDate": "2023-02-03", "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", + "timeLastUpdated": "1 years", "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "", @@ -124,7 +124,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" }, { "name": "antrea", @@ -145,14 +145,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Community Registry - OCI" }, { "name": "appd", "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", "version": "4.5.15", "status": "unknown", "packCreateDate": "", @@ -168,54 +168,12 @@ "gitRepo": "", "registry": "Public Repo" }, - { - "name": "appdynamics-collector", - "displayName": "Appdynamics Collector", - "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "1.13.684", - "status": "active", - "packCreateDate": "2023-09-12", - "packLastModifiedDate": "2023-09-12", - "timeLastUpdated": "1 months", - "releaseType": "Community", - "contributor": "appdynamics", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Spectro Addon Repo" - }, - { - "name": "appdynamics-collector", - "displayName": "Appdynamics Collector", - "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "1.14.714", - "status": "active", - "packCreateDate": "2023-09-12", - "packLastModifiedDate": "2023-09-27", - "timeLastUpdated": "1 months", - "releaseType": "Community", - "contributor": "appdynamics", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" - }, { "name": "appdynamics-collector", "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", "version": "1.12.622", "status": "unknown", "packCreateDate": "", @@ -233,73 +191,51 @@ }, { "name": "appdynamics-collector", - "displayName": "", + "displayName": "Appdynamics Collector", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all", "version": "1.13.684", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", + "status": "deleted", + "packCreateDate": "2023-09-12", + "packLastModifiedDate": "2023-12-21", + "timeLastUpdated": "2 months", + "releaseType": "Community", "contributor": "appdynamics", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "gitRepo": "pack-central", + "registry": "Spectro Addon Repo" }, { "name": "appdynamics-collector", - "displayName": "", - "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.684", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "appdynamics", - "docsURL": "", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "appdynamics-operator", - "displayName": "Appdynamics Operator", + "displayName": "Appdynamics Collector", "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "1.15.174", - "status": "active", + "version": "1.14.714", + "status": "deleted", "packCreateDate": "2023-09-12", - "packLastModifiedDate": "2023-09-27", - "timeLastUpdated": "1 months", + "packLastModifiedDate": "2023-12-21", + "timeLastUpdated": "2 months", "releaseType": "Community", "contributor": "appdynamics", "docsURL": "", "fips": "false", "verified": false, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "registry": "" }, { "name": "appdynamics-operator", "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", "version": "1.13.146", "status": "unknown", "packCreateDate": "", @@ -321,62 +257,61 @@ "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "1.14.168", - "status": "active", + "version": "1.15.174", + "status": "deleted", "packCreateDate": "2023-09-12", - "packLastModifiedDate": "2023-09-12", - "timeLastUpdated": "1 months", + "packLastModifiedDate": "2023-12-21", + "timeLastUpdated": "2 months", "releaseType": "Community", "contributor": "appdynamics", "docsURL": "", "fips": "false", "verified": false, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pack-central", - "registry": "Spectro Addon Repo" + "registry": "" }, { "name": "appdynamics-operator", - "displayName": "", + "displayName": "Appdynamics Operator", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all", "version": "1.14.168", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", + "status": "deleted", + "packCreateDate": "2023-09-12", + "packLastModifiedDate": "2023-12-21", + "timeLastUpdated": "2 months", + "releaseType": "Community", "contributor": "appdynamics", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pack-central", + "registry": "Spectro Addon Repo" }, { - "name": "appdynamics-operator", + "name": "argo-cd", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.168", + "addonType": "system app", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "5.46.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "appdynamics", + "releaseType": "spectrocloud", + "contributor": "spectrocloud", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" }, { "name": "argo-cd", @@ -384,11 +319,11 @@ "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "all", - "version": "3.26.7", - "status": "active", + "version": "3.3.5", + "status": "deprecated", "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", + "packLastModifiedDate": "2023-12-06", + "timeLastUpdated": "2 months", "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "", @@ -397,48 +332,48 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" }, { "name": "argo-cd", - "displayName": "", + "displayName": "Argo CD", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all", "version": "3.26.7", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", + "status": "deprecated", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-12-06", + "timeLastUpdated": "2 months", + "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pack-central", "registry": "Public Repo" }, { "name": "argo-cd", - "displayName": "Argo CD", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", "version": "3.3.5", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", "contributor": "spectrocloud", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", + "prodStatus": "deprecated", + "gitRepo": "", "registry": "Palette Community Registry - OCI" }, { @@ -446,9 +381,9 @@ "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.5", - "status": "unknown", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "3.26.7", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -458,37 +393,37 @@ "fips": "", "verified": false, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Community Registry - OCI" }, { - "name": "argo-rollouts", - "displayName": "Argo-Rollouts", + "name": "argo-cd", + "displayName": "Argo CD", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.2.1", + "version": "5.46.8", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", + "packCreateDate": "2023-12-07", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Stable", "contributor": "spectrocloud", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { "name": "argo-rollouts", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", "version": "1.2.1", "status": "unknown", "packCreateDate": "", @@ -502,49 +437,49 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" }, { - "name": "avi", - "displayName": "Avi Kubernetes Operator", + "name": "argo-rollouts", + "displayName": "Argo-Rollouts", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere", - "version": "1.5.2", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "1.2.1", "status": "active", - "packCreateDate": "2023-04-17", - "packLastModifiedDate": "2023-05-11", - "timeLastUpdated": "5 months", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", "releaseType": "Community", - "contributor": "", + "contributor": "spectrocloud", "docsURL": "", "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pack-central", - "registry": "Public Repo" + "registry": "Palette Community Registry - OCI" }, { "name": "avi", - "displayName": "Avi Kubernetes Operator", + "displayName": "", "layer": "addon", "addonType": "load balancer", "cloudTypesFormatted": "vsphere", "version": "1.9.2", - "status": "active", - "packCreateDate": "2023-04-17", - "packLastModifiedDate": "2023-05-11", - "timeLastUpdated": "5 months", - "releaseType": "Community", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Community Registry - OCI" }, { "name": "avi", @@ -565,14 +500,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" }, { "name": "avi", "displayName": "", "layer": "addon", "addonType": "load balancer", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", "version": "0.26.1", "status": "unknown", "packCreateDate": "", @@ -590,31 +525,52 @@ }, { "name": "avi", - "displayName": "", + "displayName": "Avi Kubernetes Operator", "layer": "addon", "addonType": "load balancer", "cloudTypesFormatted": "vsphere", - "version": "1.9.2", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "version": "1.5.2", + "status": "active", + "packCreateDate": "2023-04-17", + "packLastModifiedDate": "2023-05-11", + "timeLastUpdated": "9 months", + "releaseType": "Community", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pack-central", "registry": "Palette Community Registry - OCI" }, + { + "name": "avi", + "displayName": "Avi Kubernetes Operator", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere", + "version": "1.9.2", + "status": "active", + "packCreateDate": "2023-04-17", + "packLastModifiedDate": "2023-05-11", + "timeLastUpdated": "9 months", + "releaseType": "Community", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Public Repo" + }, { "name": "avi-ako", "displayName": "", "layer": "addon", "addonType": "load balancer", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", "version": "1.3.4", "status": "unknown", "packCreateDate": "", @@ -630,27 +586,6 @@ "gitRepo": "", "registry": "Spectro Addon Repo" }, - { - "name": "aws-alb", - "displayName": "AWS Application Loadbalancer", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "eks", - "version": "2.4.3", - "status": "active", - "packCreateDate": "2022-10-15", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/helm/aws-load-balancer-controller", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, { "name": "aws-alb", "displayName": "AWS Application Loadbalancer", @@ -661,7 +596,7 @@ "status": "active", "packCreateDate": "2022-04-30", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/registries-and-packs/helm-charts/", @@ -670,19 +605,19 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "aws-alb", "displayName": "AWS Application Loadbalancer", "layer": "addon", "addonType": "load balancer", - "cloudTypesFormatted": "aws,eks", - "version": "2.6.0", + "cloudTypesFormatted": "eks", + "version": "2.4.3", "status": "active", "packCreateDate": "2022-10-15", - "packLastModifiedDate": "2023-09-20", - "timeLastUpdated": "1 months", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/helm/aws-load-balancer-controller", @@ -691,7 +626,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "aws-alb", @@ -699,14 +634,14 @@ "layer": "addon", "addonType": "load balancer", "cloudTypesFormatted": "aws,eks", - "version": "2.4.1", + "version": "2.6.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/registries-and-packs/helm-charts/", + "docsURL": "https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/helm/aws-load-balancer-controller", "fips": "", "verified": true, "inProduction": true, @@ -714,27 +649,6 @@ "gitRepo": "", "registry": "Palette Registry - OCI" }, - { - "name": "aws-alb", - "displayName": "AWS Application Loadbalancer", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "aws,eks", - "version": "2.4.6", - "status": "active", - "packCreateDate": "2022-10-15", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/helm/aws-load-balancer-controller", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, { "name": "aws-alb", "displayName": "AWS Application Loadbalancer", @@ -745,7 +659,7 @@ "status": "active", "packCreateDate": "2022-10-15", "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/helm/aws-load-balancer-controller", @@ -754,7 +668,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "aws-alb", @@ -762,7 +676,7 @@ "layer": "addon", "addonType": "load balancer", "cloudTypesFormatted": "aws,eks", - "version": "2.6.0", + "version": "2.5.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -782,8 +696,8 @@ "displayName": "", "layer": "addon", "addonType": "load balancer", - "cloudTypesFormatted": "aws,eks", - "version": "2.5.1", + "cloudTypesFormatted": "eks", + "version": "2.4.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -803,15 +717,15 @@ "displayName": "", "layer": "addon", "addonType": "load balancer", - "cloudTypesFormatted": "eks", - "version": "2.4.3", + "cloudTypesFormatted": "aws,eks", + "version": "2.4.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/helm/aws-load-balancer-controller", + "docsURL": "https://docs.spectrocloud.com/registries-and-packs/helm-charts/", "fips": "", "verified": true, "inProduction": true, @@ -819,6 +733,26 @@ "gitRepo": "", "registry": "Public Repo" }, + { + "name": "aws-alb", + "displayName": "AWS Application Loadbalancer", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "aws,eks", + "version": "2.6.2", + "status": "active", + "packCreateDate": "2022-10-15", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/helm/aws-load-balancer-controller", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, { "name": "aws-alb", "displayName": "", @@ -838,43 +772,43 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "aws-cluster-autoscaler", - "displayName": "AWS Cluster Autoscaler", + "name": "aws-alb", + "displayName": "AWS Application Loadbalancer", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "eks", - "version": "1.0.0", - "status": "deprecated", - "packCreateDate": "2020-11-07", + "addonType": "load balancer", + "cloudTypesFormatted": "aws,eks", + "version": "2.4.6", + "status": "active", + "packCreateDate": "2022-10-15", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/helm/aws-load-balancer-controller", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "aws-cluster-autoscaler", - "displayName": "AWS Cluster Autoscaler", + "name": "aws-alb", + "displayName": "AWS Application Loadbalancer", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "eks", - "version": "1.22.2", + "addonType": "load balancer", + "cloudTypesFormatted": "aws,eks", + "version": "2.6.0", "status": "active", - "packCreateDate": "2020-11-07", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packCreateDate": "2022-10-15", + "packLastModifiedDate": "2023-09-20", + "timeLastUpdated": "5 months", "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/helm/aws-load-balancer-controller", "fips": "false", "verified": true, "inProduction": true, @@ -884,23 +818,23 @@ }, { "name": "aws-cluster-autoscaler", - "displayName": "AWS Cluster Autoscaler", + "displayName": "", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "eks", "version": "1.26.3", - "status": "active", - "packCreateDate": "2020-11-07", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { @@ -909,8 +843,8 @@ "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "eks", - "version": "1.0.0", - "status": "deprecated", + "version": "1.22.2", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -920,29 +854,29 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { "name": "aws-cluster-autoscaler", - "displayName": "", + "displayName": "AWS Cluster Autoscaler", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "eks", "version": "1.26.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "status": "active", + "packCreateDate": "2020-11-07", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { @@ -951,8 +885,8 @@ "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "eks", - "version": "1.22.2", - "status": "unknown", + "version": "1.0.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -962,134 +896,153 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "aws-efs", - "displayName": "Amazon EFS", + "name": "aws-cluster-autoscaler", + "displayName": "AWS Cluster Autoscaler", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,eks", - "version": "1.3.6", - "status": "deprecated", - "packCreateDate": "2022-03-18", + "cloudTypesFormatted": "eks", + "version": "1.22.2", + "status": "active", + "packCreateDate": "2020-11-07", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "aws-efs", - "displayName": "", + "name": "aws-cluster-autoscaler", + "displayName": "AWS Cluster Autoscaler", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,eks", - "version": "1.3.6", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Spectro Addon Repo" + "cloudTypesFormatted": "eks", + "version": "1.27.5", + "status": "active", + "packCreateDate": "2020-11-07", + "packLastModifiedDate": "2024-02-14", + "timeLastUpdated": "2 weeks", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { - "name": "aws-efs", - "displayName": "Amazon EFS", + "name": "aws-cluster-autoscaler", + "displayName": "AWS Cluster Autoscaler", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,eks", - "version": "1.4.0", - "status": "active", - "packCreateDate": "2022-08-04", + "cloudTypesFormatted": "eks", + "version": "1.0.0", + "status": "deprecated", + "packCreateDate": "2020-11-07", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, + { + "name": "aws-cluster-autoscaler", + "displayName": "AWS Cluster Autoscaler", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "eks", + "version": "1.28.2", + "status": "active", + "packCreateDate": "2020-11-07", + "packLastModifiedDate": "2024-02-14", + "timeLastUpdated": "2 weeks", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, { "name": "aws-efs", "displayName": "", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "aws,eks", - "version": "1.3.6", + "version": "1.4.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "aws-efs", - "displayName": "Amazon EFS", + "displayName": "", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "aws,eks", - "version": "1.4.9", - "status": "active", - "packCreateDate": "2022-08-04", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "version": "1.3.6", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", - "fips": "false", + "docsURL": "", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", + "prodStatus": "deprecated", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { "name": "aws-efs", - "displayName": "Amazon EFS", + "displayName": "", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "aws,eks", - "version": "1.5.6", - "status": "active", - "packCreateDate": "2022-08-04", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "version": "1.4.9", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { @@ -1098,20 +1051,20 @@ "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "aws,eks", - "version": "1.4.0", + "version": "1.3.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Spectro Addon Repo" }, { "name": "aws-efs", @@ -1136,23 +1089,86 @@ }, { "name": "aws-efs", - "displayName": "", + "displayName": "Amazon EFS", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "aws,eks", "version": "1.4.9", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "status": "active", + "packCreateDate": "2022-08-04", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "aws-efs", + "displayName": "Amazon EFS", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aws,eks", + "version": "1.3.6", + "status": "deprecated", + "packCreateDate": "2022-03-18", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "aws-efs", + "displayName": "Amazon EFS", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aws,eks", + "version": "1.5.6", + "status": "active", + "packCreateDate": "2022-08-04", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "aws-efs", + "displayName": "Amazon EFS", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aws,eks", + "version": "1.4.0", + "status": "active", + "packCreateDate": "2022-08-04", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Public Repo" }, { @@ -1165,7 +1181,7 @@ "status": "active", "packCreateDate": "2021-08-27", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "spectrocloud", "docsURL": "", @@ -1174,7 +1190,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "aws-eks-calico", @@ -1195,28 +1211,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "aws-eks-oidc", - "displayName": "AWS EKS OIDC", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "eks", - "version": "1.0.0", - "status": "active", - "packCreateDate": "2021-05-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "aws-eks-oidc", @@ -1240,16 +1235,16 @@ "registry": "Public Repo" }, { - "name": "aws-ssm-agent", - "displayName": "AWS SSM Agent", + "name": "aws-eks-oidc", + "displayName": "AWS EKS OIDC", "layer": "addon", - "addonType": "system app", + "addonType": "authentication", "cloudTypesFormatted": "eks", "version": "1.0.0", "status": "active", - "packCreateDate": "2020-11-07", + "packCreateDate": "2021-05-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -1279,40 +1274,40 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "calico-network-policy", - "displayName": "Calico Network Policy", + "name": "aws-ssm-agent", + "displayName": "AWS SSM Agent", "layer": "addon", - "addonType": "security", + "addonType": "system app", "cloudTypesFormatted": "eks", - "version": "3.24", + "version": "1.0.0", "status": "active", - "packCreateDate": "2022-02-22", + "packCreateDate": "2020-11-07", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", - "contributor": "", + "contributor": "spectrocloud", "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "calico-network-policy", "displayName": "Calico Network Policy", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,eks", - "version": "3.22", + "cloudTypesFormatted": "all", + "version": "3.26", "status": "active", "packCreateDate": "2022-02-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2023-09-12", + "timeLastUpdated": "5 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -1321,7 +1316,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Spectro Addon Repo" + "registry": "Palette Registry - OCI" }, { "name": "calico-network-policy", @@ -1346,36 +1341,36 @@ }, { "name": "calico-network-policy", - "displayName": "", + "displayName": "Calico Network Policy", "layer": "addon", "addonType": "security", "cloudTypesFormatted": "aws,eks", "version": "3.22", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "status": "active", + "packCreateDate": "2022-02-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Spectro Addon Repo" }, { "name": "calico-network-policy", "displayName": "Calico Network Policy", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "all", - "version": "3.26", + "cloudTypesFormatted": "eks", + "version": "3.24", "status": "active", "packCreateDate": "2022-02-22", - "packLastModifiedDate": "2023-09-12", - "timeLastUpdated": "1 months", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -1384,7 +1379,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "calico-network-policy", @@ -1412,7 +1407,28 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "aws,eks", + "version": "3.22", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "calico-network-policy", + "displayName": "", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", "version": "3.26", "status": "unknown", "packCreateDate": "", @@ -1426,7 +1442,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "calico-networking", @@ -1434,7 +1450,7 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "aws,eks", - "version": "1.1.0", + "version": "1.2.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -1454,8 +1470,8 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "eks", - "version": "1.0.0", + "cloudTypesFormatted": "aws,eks", + "version": "1.1.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -1475,8 +1491,8 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,eks", - "version": "1.2.0", + "cloudTypesFormatted": "eks", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -1501,7 +1517,7 @@ "status": "active", "packCreateDate": "2021-12-01", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -1522,7 +1538,7 @@ "status": "active", "packCreateDate": "2021-12-01", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -1543,7 +1559,7 @@ "status": "active", "packCreateDate": "2021-12-01", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -1560,11 +1576,11 @@ "layer": "addon", "addonType": "app services", "cloudTypesFormatted": "all", - "version": "2.9.0", + "version": "2.9.37", "status": "active", "packCreateDate": "2021-11-28", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -1581,11 +1597,11 @@ "layer": "addon", "addonType": "app services", "cloudTypesFormatted": "all", - "version": "2.9.37", + "version": "2.9.0", "status": "active", "packCreateDate": "2021-11-28", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -1606,7 +1622,7 @@ "status": "active", "packCreateDate": "2021-11-28", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -1627,7 +1643,7 @@ "status": "active", "packCreateDate": "2021-11-28", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -1648,7 +1664,7 @@ "status": "active", "packCreateDate": "2021-12-01", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -1659,6 +1675,27 @@ "gitRepo": "pax", "registry": "Spectro Addon Repo" }, + { + "name": "centos-aws", + "displayName": "", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "aws", + "version": "7.7", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, { "name": "centos-aws", "displayName": "CentOS", @@ -1678,14 +1715,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "centos-aws", + "name": "centos-azure", "displayName": "", "layer": "os", "addonType": "", - "cloudTypesFormatted": "aws", + "cloudTypesFormatted": "azure", "version": "7.7", "status": "unknown", "packCreateDate": "", @@ -1723,11 +1760,11 @@ "registry": "Palette Registry - OCI" }, { - "name": "centos-azure", + "name": "centos-gcp", "displayName": "", "layer": "os", "addonType": "", - "cloudTypesFormatted": "azure", + "cloudTypesFormatted": "gcp", "version": "7.7", "status": "unknown", "packCreateDate": "", @@ -1749,7 +1786,7 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "gcp", - "version": "8.0.1905", + "version": "8.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -1762,7 +1799,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "centos-gcp", @@ -1770,7 +1807,7 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "gcp", - "version": "8.0", + "version": "7.7", "status": "active", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2020-09-09", @@ -1791,7 +1828,7 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "gcp", - "version": "7.7", + "version": "8.0", "status": "active", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2020-09-09", @@ -1804,27 +1841,6 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "centos-gcp", - "displayName": "", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "gcp", - "version": "8.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", "registry": "Public Repo" }, { @@ -1833,7 +1849,7 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "gcp", - "version": "7.7", + "version": "8.0.1905", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -1867,7 +1883,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "centos-libvirt", @@ -1888,7 +1904,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "centos-vsphere", @@ -1900,7 +1916,7 @@ "status": "active", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -1909,7 +1925,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "centos-vsphere", @@ -1930,7 +1946,28 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" + }, + { + "name": "certmanager", + "displayName": "", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "1.7.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/cert-manager", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { "name": "certmanager", @@ -1938,11 +1975,11 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "all", - "version": "1.9.1", + "version": "1.1.0", "status": "active", - "packCreateDate": "2022-03-02", + "packCreateDate": "2021-01-27", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "spectrocloud", "docsURL": "https://docs.spectrocloud.com/integrations/cert-manager", @@ -1951,7 +1988,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "certmanager", @@ -1959,11 +1996,11 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "all", - "version": "1.7.1", + "version": "1.9.1", "status": "active", "packCreateDate": "2022-03-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "spectrocloud", "docsURL": "https://docs.spectrocloud.com/integrations/cert-manager", @@ -1979,7 +2016,7 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", "version": "1.9.1", "status": "unknown", "packCreateDate": "", @@ -1993,7 +2030,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "certmanager", @@ -2001,11 +2038,11 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "all", - "version": "1.1.0", + "version": "1.7.1", "status": "active", - "packCreateDate": "2021-01-27", + "packCreateDate": "2022-03-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "spectrocloud", "docsURL": "https://docs.spectrocloud.com/integrations/cert-manager", @@ -2021,8 +2058,8 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.7.1", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "1.1.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -2038,25 +2075,88 @@ "registry": "Palette Registry - OCI" }, { - "name": "certmanager", - "displayName": "", + "name": "cisco-appdynamics-collectors", + "displayName": "Cisco AppDynamics Collectors", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.1.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/cert-manager", - "fips": "", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "1.18.983", + "status": "active", + "packCreateDate": "2023-09-12", + "packLastModifiedDate": "2024-02-02", + "timeLastUpdated": "4 weeks", + "releaseType": "Community", + "contributor": "appdynamics", + "docsURL": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "cisco-appdynamics-collectors", + "displayName": "Cisco AppDynamics Collectors", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "1.17.880", + "status": "active", + "packCreateDate": "2023-09-12", + "packLastModifiedDate": "2023-12-15", + "timeLastUpdated": "2 months", + "releaseType": "Community", + "contributor": "appdynamics", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "cisco-appdynamics-operators", + "displayName": "Cisco AppDynamics Operators", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "1.17.244", + "status": "active", + "packCreateDate": "2023-09-12", + "packLastModifiedDate": "2023-12-15", + "timeLastUpdated": "2 months", + "releaseType": "Community", + "contributor": "appdynamics", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "cisco-appdynamics-operators", + "displayName": "Cisco AppDynamics Operators", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "1.18.265", + "status": "active", + "packCreateDate": "2023-09-12", + "packLastModifiedDate": "2024-01-31", + "timeLastUpdated": "1 months", + "releaseType": "Community", + "contributor": "appdynamics", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" }, { "name": "cloudanix", @@ -2084,8 +2184,8 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws", - "version": "0.0.1", + "cloudTypesFormatted": "aws,azure,gcp", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -2098,15 +2198,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Spectro Addon Repo" + "registry": "Public Repo" }, { "name": "cloudanix", "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,azure,gcp", - "version": "1.0.0", + "cloudTypesFormatted": "aws", + "version": "0.0.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -2119,7 +2219,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Spectro Addon Repo" }, { "name": "cni-aws-vpc-eks", @@ -2131,7 +2231,7 @@ "status": "active", "packCreateDate": "2021-04-21", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -2190,16 +2290,16 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "eks", - "version": "1.13.0", + "version": "1.15.1", "status": "active", "packCreateDate": "2022-10-03", - "packLastModifiedDate": "2023-08-10", + "packLastModifiedDate": "2023-12-10", "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", @@ -2207,24 +2307,24 @@ }, { "name": "cni-aws-vpc-eks-helm", - "displayName": "AWS VPC CNI (Helm)", + "displayName": "", "layer": "cni", "addonType": "", "cloudTypesFormatted": "eks", "version": "1.1.17", - "status": "active", - "packCreateDate": "2022-10-03", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { "name": "cni-aws-vpc-eks-helm", @@ -2253,7 +2353,7 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "eks", - "version": "1.1.17", + "version": "1.15.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -2278,7 +2378,48 @@ "status": "active", "packCreateDate": "2022-10-03", "packLastModifiedDate": "2023-10-17", - "timeLastUpdated": "2 weeks", + "timeLastUpdated": "4 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "cni-aws-vpc-eks-helm", + "displayName": "AWS VPC CNI (Helm)", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "eks", + "version": "1.15.5", + "status": "active", + "packCreateDate": "2022-10-03", + "packLastModifiedDate": "2024-01-03", + "timeLastUpdated": "1 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "cni-aws-vpc-eks-helm", + "displayName": "AWS VPC CNI (Helm)", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "eks", + "version": "1.13.0", + "status": "active", + "packCreateDate": "2022-10-03", + "packLastModifiedDate": "2023-08-10", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -2289,6 +2430,27 @@ "gitRepo": "pax", "registry": "Public Repo" }, + { + "name": "cni-aws-vpc-eks-helm", + "displayName": "AWS VPC CNI (Helm)", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "eks", + "version": "1.1.17", + "status": "active", + "packCreateDate": "2022-10-03", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, { "name": "cni-aws-vpc-eks-helm-fips", "displayName": "AWS VPC CNI (Helm)", @@ -2299,7 +2461,7 @@ "status": "active", "packCreateDate": "2023-07-12", "packLastModifiedDate": "2023-08-16", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "VerteX", "contributor": "", "docsURL": "", @@ -2317,18 +2479,18 @@ "cloudTypesFormatted": "aks", "version": "1.4.0", "status": "active", - "packCreateDate": "2021-06-14", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "2024-02-07", + "packLastModifiedDate": "2024-02-20", + "timeLastUpdated": "1 weeks", + "releaseType": "VerteX", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "unknown", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" }, { "name": "cni-azure", @@ -2349,27 +2511,6 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "cni-calico", - "displayName": "Calico", - "layer": "cni", - "addonType": "", - "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", - "version": "3.25.0", - "status": "active", - "packCreateDate": "2022-03-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", "registry": "Public Repo" }, { @@ -2377,33 +2518,12 @@ "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt", - "version": "3.23.0", - "status": "active", - "packCreateDate": "2022-03-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "cni-calico", - "displayName": "Calico", - "layer": "cni", - "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp,maas,openstack", - "version": "3.16.0", + "cloudTypesFormatted": "aws,vsphere,gcp", + "version": "3.9.4", "status": "deprecated", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -2412,15 +2532,15 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "cni-calico", "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt", - "version": "3.23.0", + "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", + "version": "3.24.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -2441,32 +2561,11 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", - "version": "3.24.1", - "status": "active", - "packCreateDate": "2023-02-13", - "packLastModifiedDate": "2023-06-28", - "timeLastUpdated": "4 months", - "releaseType": "VerteX", - "contributor": "", - "docsURL": "", - "fips": "true", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Public Repo" - }, - { - "name": "cni-calico", - "displayName": "Calico", - "layer": "cni", - "addonType": "", - "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", - "version": "3.24.5", + "version": "3.25.0", "status": "active", "packCreateDate": "2022-03-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -2475,7 +2574,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "cni-calico", @@ -2487,7 +2586,7 @@ "status": "active", "packCreateDate": "2023-02-13", "packLastModifiedDate": "2023-06-28", - "timeLastUpdated": "4 months", + "timeLastUpdated": "8 months", "releaseType": "VerteX", "contributor": "", "docsURL": "", @@ -2496,40 +2595,40 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax-fips", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "cni-calico", - "displayName": "Calico", + "displayName": "", "layer": "cni", "addonType": "", "cloudTypesFormatted": "aws,vsphere,gcp,maas,openstack,edge-native,edge,libvirt", "version": "3.19.0", "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { "name": "cni-calico", "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", - "version": "3.26.0", + "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge,custom", + "version": "3.26.1", "status": "active", "packCreateDate": "2022-03-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -2538,49 +2637,49 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "cni-calico", "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", - "version": "3.26.1", + "cloudTypesFormatted": "aws,eks,vsphere,maas,edge-native,custom", + "version": "3.26.3", "status": "active", - "packCreateDate": "2022-03-02", - "packLastModifiedDate": "2023-10-16", - "timeLastUpdated": "2 weeks", - "releaseType": "Stable", + "packCreateDate": "2023-02-13", + "packLastModifiedDate": "2024-02-29", + "timeLastUpdated": "1 days", + "releaseType": "VerteX", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "true", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" }, { "name": "cni-calico", "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp", - "version": "3.10.2", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", + "version": "3.24.1", + "status": "active", + "packCreateDate": "2023-02-13", + "packLastModifiedDate": "2023-06-28", + "timeLastUpdated": "8 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "true", + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" }, { "name": "cni-calico", @@ -2588,11 +2687,11 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "aws,vsphere,gcp", - "version": "3.9.4", + "version": "3.10.2", "status": "deprecated", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -2605,24 +2704,24 @@ }, { "name": "cni-calico", - "displayName": "", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp", - "version": "3.10.2", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,openstack", + "version": "3.16.0", "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "cni-calico", @@ -2634,7 +2733,7 @@ "status": "deprecated", "packCreateDate": "2022-03-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -2643,15 +2742,15 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "cni-calico", "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp,maas,openstack", - "version": "3.16.0", + "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge-native,edge,libvirt", + "version": "3.22.0", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -2664,16 +2763,16 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-calico", "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp,maas,openstack,edge-native,edge,libvirt", - "version": "3.19.0", - "status": "deprecated", + "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt", + "version": "3.23.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -2683,29 +2782,29 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-calico", - "displayName": "", + "displayName": "Calico", "layer": "cni", "addonType": "", "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", - "version": "3.26.1", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "3.24.5", + "status": "active", + "packCreateDate": "2022-03-02", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { @@ -2713,9 +2812,9 @@ "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp", - "version": "3.9.4", - "status": "deprecated", + "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", + "version": "3.24.5", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -2725,9 +2824,9 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-calico", @@ -2735,7 +2834,7 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", - "version": "3.26.0", + "version": "3.25.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -2748,7 +2847,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-calico", @@ -2769,7 +2868,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-calico", @@ -2777,7 +2876,7 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", - "version": "3.25.0", + "version": "3.26.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -2790,15 +2889,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-calico", "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", - "version": "3.24.5", + "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge,custom", + "version": "3.26.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -2811,16 +2910,16 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-calico", "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", - "version": "3.24.1", - "status": "unknown", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,openstack", + "version": "3.16.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -2830,42 +2929,42 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Palette Registry - OCI" }, { "name": "cni-calico", - "displayName": "", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge-native,edge,libvirt", - "version": "3.22.0", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt", + "version": "3.23.0", + "status": "active", + "packCreateDate": "2022-03-02", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "cni-calico-azure", + "name": "cni-calico", "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "azure", - "version": "3.10.2", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,openstack,edge-native,edge,libvirt", + "version": "3.19.0", "status": "deprecated", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -2877,130 +2976,108 @@ "registry": "Public Repo" }, { - "name": "cni-calico-azure", - "displayName": "", - "layer": "cni", - "addonType": "", - "cloudTypesFormatted": "azure", - "version": "3.10.2", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "cni-calico-azure", + "name": "cni-calico", "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "azure", - "version": "3.16.0", - "status": "deprecated", - "packCreateDate": "2019-12-24", + "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge", + "version": "3.26.0", + "status": "active", + "packCreateDate": "2022-03-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "cni-calico-azure", - "displayName": "Calico", + "name": "cni-calico", + "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "azure", - "version": "3.19.0", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge,custom", + "version": "3.26.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "cni-calico-azure", - "displayName": "Calico", + "name": "cni-calico", + "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "azure", + "cloudTypesFormatted": "aws,vsphere,gcp", "version": "3.9.4", "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "cni-calico-azure", - "displayName": "Calico", + "name": "cni-calico", + "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "azure", - "version": "3.26.1", - "status": "active", - "packCreateDate": "2022-03-02", - "packLastModifiedDate": "2023-10-16", - "timeLastUpdated": "2 weeks", - "releaseType": "Stable", + "cloudTypesFormatted": "aws,vsphere,gcp", + "version": "3.10.2", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", + "prodStatus": "deprecated", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "cni-calico-azure", + "name": "cni-calico", "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "azure", - "version": "3.26.0", + "cloudTypesFormatted": "aws,eks,vsphere,gcp,maas,openstack,edge,edge-native,libvirt,coxedge,custom", + "version": "3.27.0", "status": "active", "packCreateDate": "2022-03-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-18", + "timeLastUpdated": "1 weeks", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "" }, { "name": "cni-calico-azure", @@ -3008,11 +3085,11 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.24.5", + "version": "3.25.0", "status": "active", - "packCreateDate": "2019-12-24", + "packCreateDate": "2022-03-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -3029,11 +3106,11 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.25.1", + "version": "3.26.0", "status": "active", "packCreateDate": "2022-03-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -3050,10 +3127,10 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.25.0", + "version": "3.26.3", "status": "active", "packCreateDate": "2022-03-02", - "packLastModifiedDate": "2023-07-21", + "packLastModifiedDate": "2023-11-09", "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", @@ -3071,39 +3148,18 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.22.0", + "version": "3.9.4", "status": "deprecated", - "packCreateDate": "2022-03-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "cni-calico-azure", - "displayName": "Calico", - "layer": "cni", - "addonType": "", - "cloudTypesFormatted": "azure", - "version": "3.24.1", - "status": "active", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, @@ -3113,18 +3169,18 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.23.0", - "status": "active", - "packCreateDate": "2019-12-24", + "version": "3.22.0", + "status": "deprecated", + "packCreateDate": "2022-03-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, @@ -3134,7 +3190,7 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.9.4", + "version": "3.16.0", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -3168,7 +3224,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-calico-azure", @@ -3176,7 +3232,7 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.16.0", + "version": "3.22.0", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -3189,7 +3245,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-calico-azure", @@ -3197,8 +3253,8 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.22.0", - "status": "deprecated", + "version": "3.23.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -3208,7 +3264,7 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, @@ -3218,7 +3274,7 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.23.0", + "version": "3.24.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -3260,7 +3316,7 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.24.1", + "version": "3.25.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -3281,7 +3337,7 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.25.0", + "version": "3.25.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -3323,7 +3379,7 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.25.1", + "version": "3.26.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -3344,7 +3400,7 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "azure", - "version": "3.26.1", + "version": "3.26.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -3360,115 +3416,116 @@ "registry": "Public Repo" }, { - "name": "cni-cilium", + "name": "cni-calico-azure", "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,gcp,maas", - "version": "1.6.0", - "status": "unknown", + "cloudTypesFormatted": "azure", + "version": "3.9.4", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "cni-cilium", - "displayName": "Cilium", + "name": "cni-calico-azure", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,gcp,maas", - "version": "1.6.0", + "cloudTypesFormatted": "azure", + "version": "3.23.0", "status": "active", - "packCreateDate": "2020-02-13", - "packLastModifiedDate": "2022-04-14", - "timeLastUpdated": "1 years", - "releaseType": "Experimental", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "cni-cilium-enterprise", - "displayName": "Cilium Enterprise", + "name": "cni-calico-azure", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "vsphere", - "version": "1.10.8", + "cloudTypesFormatted": "azure", + "version": "3.27.0", "status": "active", - "packCreateDate": "2022-04-08", - "packLastModifiedDate": "2022-04-08", - "timeLastUpdated": "1 years", - "releaseType": "Experimental", + "packCreateDate": "2022-03-02", + "packLastModifiedDate": "2024-02-18", + "timeLastUpdated": "1 weeks", + "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "prodStatus": "deleted", "gitRepo": "pax", "registry": "" }, { - "name": "cni-cilium-fips", - "displayName": "Cilium", + "name": "cni-calico-azure", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native", - "version": "1.13.4", + "cloudTypesFormatted": "azure", + "version": "3.24.5", "status": "active", - "packCreateDate": "2023-10-18", - "packLastModifiedDate": "2023-10-18", - "timeLastUpdated": "2 weeks", - "releaseType": "VerteX", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "true", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax-fips", - "registry": "" + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "cni-cilium-oss", - "displayName": "", + "name": "cni-calico-azure", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "vsphere,edge-native", - "version": "1.10.9", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "azure", + "version": "3.24.1", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "cni-cilium-oss", + "name": "cni-calico-azure", "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "vsphere,edge-native", - "version": "1.12.3", + "cloudTypesFormatted": "azure", + "version": "3.10.2", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -3481,82 +3538,82 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "cni-cilium-oss", - "displayName": "Cilium", + "name": "cni-calico-azure", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,edge-native,maas", - "version": "1.12.6", - "status": "active", - "packCreateDate": "2022-04-08", + "cloudTypesFormatted": "azure", + "version": "3.16.0", + "status": "deprecated", + "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "cni-cilium-oss", - "displayName": "Cilium", + "name": "cni-calico-azure", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "vsphere,edge-native", - "version": "1.10.9", - "status": "deprecated", - "packCreateDate": "2022-04-08", + "cloudTypesFormatted": "azure", + "version": "3.25.1", + "status": "active", + "packCreateDate": "2022-03-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "cni-cilium-oss", - "displayName": "Cilium", + "name": "cni-calico-azure", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native", - "version": "1.14.1", - "status": "active", - "packCreateDate": "2022-04-08", - "packLastModifiedDate": "2023-08-18", - "timeLastUpdated": "2 months", + "cloudTypesFormatted": "azure", + "version": "3.19.0", + "status": "deprecated", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "cni-cilium-oss", - "displayName": "Cilium", + "name": "cni-calico-azure", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "vsphere,edge-native", - "version": "1.12.3", + "cloudTypesFormatted": "azure", + "version": "3.10.2", "status": "deprecated", - "packCreateDate": "2022-04-08", + "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -3565,78 +3622,76 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "cni-cilium-oss", - "displayName": "", + "name": "cni-calico-azure", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,edge-native,maas", - "version": "1.12.6", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "azure", + "version": "3.26.1", + "status": "active", + "packCreateDate": "2022-03-02", + "packLastModifiedDate": "2023-10-16", + "timeLastUpdated": "4 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "cni-cilium-oss", - "displayName": "Cilium", + "name": "cni-calico-azure-fips", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native", - "version": "1.14.0", + "cloudTypesFormatted": "azure", + "version": "3.26.3", "status": "active", - "packCreateDate": "2022-04-08", - "packLastModifiedDate": "2023-08-10", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "packCreateDate": "2023-02-13", + "packLastModifiedDate": "2024-01-22", + "timeLastUpdated": "1 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "true", "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" }, { - "name": "cni-cilium-oss", - "displayName": "", + "name": "cni-calico-azure-fips", + "displayName": "Calico", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native", - "version": "1.14.1", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "azure", + "version": "3.25.1", + "status": "active", + "packCreateDate": "2023-02-13", + "packLastModifiedDate": "2023-12-06", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" }, { - "name": "cni-cilium-oss", + "name": "cni-cilium", "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native", - "version": "1.14.0", + "cloudTypesFormatted": "aws,gcp,maas", + "version": "1.6.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -3649,58 +3704,98 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "cni-cilium-oss", - "displayName": "", + "name": "cni-cilium", + "displayName": "Cilium", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native", - "version": "1.13.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "aws,gcp,maas", + "version": "1.6.0", + "status": "active", + "packCreateDate": "2020-02-13", + "packLastModifiedDate": "2022-04-14", + "timeLastUpdated": "1 years", + "releaseType": "Experimental", "contributor": "", "docsURL": "", - "fips": "", - "verified": true, + "fips": "false", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "cni-cilium-oss", - "displayName": "", + "name": "cni-cilium-enterprise", + "displayName": "Cilium Enterprise", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "vsphere,maas,openstack,edge-native", - "version": "1.13.2", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "vsphere", + "version": "1.10.8", + "status": "active", + "packCreateDate": "2022-04-08", + "packLastModifiedDate": "2022-04-08", + "timeLastUpdated": "1 years", + "releaseType": "Experimental", "contributor": "", "docsURL": "", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "fips": "false", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { - "name": "cni-cilium-oss", - "displayName": "", + "name": "cni-cilium-fips", + "displayName": "Cilium", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native", + "version": "1.13.4", + "status": "active", + "packCreateDate": "2023-10-18", + "packLastModifiedDate": "2023-10-18", + "timeLastUpdated": "4 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "", + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" + }, + { + "name": "cni-cilium-oss", + "displayName": "Cilium", "layer": "cni", "addonType": "", "cloudTypesFormatted": "aws,vsphere,edge-native,maas,aws", "version": "1.12.4", "status": "deprecated", + "packCreateDate": "2022-04-08", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "cni-cilium-oss", + "displayName": "", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "vsphere,edge-native", + "version": "1.10.9", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -3716,23 +3811,252 @@ }, { "name": "cni-cilium-oss", - "displayName": "Cilium", + "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,edge-native,maas,aws", + "cloudTypesFormatted": "vsphere,edge-native", + "version": "1.12.3", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "cni-cilium-oss", + "displayName": "", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,edge-native,maas", "version": "1.12.4", "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "cni-cilium-oss", + "displayName": "", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,edge-native,maas", + "version": "1.12.6", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "cni-cilium-oss", + "displayName": "", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "vsphere,maas,openstack,edge-native", + "version": "1.13.2", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "cni-cilium-oss", + "displayName": "", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native,custom", + "version": "1.14.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "cni-cilium-oss", + "displayName": "", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native,azure,custom", + "version": "1.14.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "cni-cilium-oss", + "displayName": "Cilium", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native,azure", + "version": "1.15.1", + "status": "active", "packCreateDate": "2022-04-08", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-03-01", + "timeLastUpdated": "12 hours", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "cni-cilium-oss", + "displayName": "", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native,azure", + "version": "1.14.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "cni-cilium-oss", + "displayName": "Cilium", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native,azure,custom", + "version": "1.14.1", + "status": "active", + "packCreateDate": "2022-04-08", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "cni-cilium-oss", + "displayName": "Cilium", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native,custom", + "version": "1.14.0", + "status": "active", + "packCreateDate": "2022-04-08", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "cni-cilium-oss", + "displayName": "Cilium", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native,azure", + "version": "1.14.7", + "status": "active", + "packCreateDate": "2022-04-08", + "packLastModifiedDate": "2024-03-01", + "timeLastUpdated": "12 hours", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "prodStatus": "deleted", "gitRepo": "pax", + "registry": "" + }, + { + "name": "cni-cilium-oss", + "displayName": "", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native", + "version": "1.13.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, { @@ -3745,7 +4069,7 @@ "status": "active", "packCreateDate": "2022-04-08", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -3754,19 +4078,19 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-cilium-oss", "displayName": "Cilium", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native", - "version": "1.13.3", + "cloudTypesFormatted": "aws,vsphere,edge-native,maas", + "version": "1.12.6", "status": "active", "packCreateDate": "2022-04-08", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -3778,16 +4102,99 @@ "registry": "Public Repo" }, { - "name": "cni-custom", - "displayName": "Custom CNI", + "name": "cni-cilium-oss", + "displayName": "Cilium", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp,maas,openstack,edge-native,edge,libvirt", - "version": "0.1.0", + "cloudTypesFormatted": "vsphere,edge-native", + "version": "1.12.3", + "status": "deprecated", + "packCreateDate": "2022-04-08", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "cni-cilium-oss", + "displayName": "Cilium", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "vsphere,edge-native", + "version": "1.10.9", + "status": "deprecated", + "packCreateDate": "2022-04-08", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "cni-cilium-oss", + "displayName": "Cilium", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native,azure", + "version": "1.13.12", "status": "active", - "packCreateDate": "2022-03-02", + "packCreateDate": "2022-04-08", + "packLastModifiedDate": "2024-03-01", + "timeLastUpdated": "12 hours", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "cni-cilium-oss", + "displayName": "Cilium", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native,azure", + "version": "1.14.3", + "status": "active", + "packCreateDate": "2022-04-08", + "packLastModifiedDate": "2023-12-09", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "cni-cilium-oss", + "displayName": "Cilium", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,openstack,edge-native", + "version": "1.13.3", + "status": "active", + "packCreateDate": "2022-04-08", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -3796,7 +4203,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "cni-custom", @@ -3819,17 +4226,38 @@ "gitRepo": "", "registry": "Palette Registry - OCI" }, + { + "name": "cni-custom", + "displayName": "Custom CNI", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,openstack,edge-native,edge,libvirt", + "version": "0.1.0", + "status": "active", + "packCreateDate": "2022-03-02", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, { "name": "cni-flannel", "displayName": "Flannel", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge-native", - "version": "0.20.2", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,custom,edge-native", + "version": "0.22.0", "status": "active", "packCreateDate": "2023-02-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2023-12-19", + "timeLastUpdated": "2 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -3838,18 +4266,18 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "cni-flannel", "displayName": "Flannel", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp,maas", - "version": "0.22.0", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge-native,custom", + "version": "0.21.4", "status": "active", "packCreateDate": "2023-02-02", - "packLastModifiedDate": "2023-08-12", + "packLastModifiedDate": "2023-12-12", "timeLastUpdated": "2 months", "releaseType": "Experimental", "contributor": "", @@ -3859,7 +4287,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "cni-flannel", @@ -3867,11 +4295,11 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge-native", - "version": "0.21.4", + "version": "0.20.2", "status": "active", "packCreateDate": "2023-02-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2023-12-12", + "timeLastUpdated": "2 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -3880,7 +4308,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "cni-flannel", @@ -3901,15 +4329,36 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" + }, + { + "name": "cni-flannel", + "displayName": "Flannel", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge-native", + "version": "0.10.0", + "status": "deprecated", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "cni-flannel", "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp,maas", - "version": "0.22.0", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,custom,edge-native", + "version": "0.23.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -3922,7 +4371,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-flannel", @@ -3930,8 +4379,8 @@ "layer": "cni", "addonType": "", "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge-native", - "version": "0.21.4", - "status": "unknown", + "version": "0.10.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -3941,7 +4390,7 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Palette Registry - OCI" }, @@ -3950,9 +4399,9 @@ "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge-native", - "version": "0.10.0", - "status": "deprecated", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,custom,edge-native", + "version": "0.22.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -3962,7 +4411,7 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, @@ -3971,34 +4420,33 @@ "displayName": "Flannel", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge-native", - "version": "0.10.0", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,custom,edge-native", + "version": "0.24.2", + "status": "active", + "packCreateDate": "2023-02-02", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Experimental", "contributor": "", "docsURL": "", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "" }, { - "name": "cni-kubenet", - "displayName": "Kubenet", + "name": "cni-flannel", + "displayName": "Flannel", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aks", - "version": "1.0.0", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,custom,edge-native", + "version": "0.23.0", "status": "active", - "packCreateDate": "2021-05-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "2023-02-02", + "packLastModifiedDate": "2023-12-19", + "timeLastUpdated": "2 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", "fips": "false", @@ -4006,15 +4454,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "cni-kubenet", + "name": "cni-flannel", "displayName": "", "layer": "cni", "addonType": "", - "cloudTypesFormatted": "aks", - "version": "1.0.0", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge-native,custom", + "version": "0.21.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -4027,48 +4475,68 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "cni-multus", - "displayName": "Multus", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge,libvirt", - "version": "3.4.0", + "name": "cni-flannel-fips", + "displayName": "Flannel", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge-native", + "version": "0.22.0", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-23", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", + "packCreateDate": "2023-08-10", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "VerteX", + "contributor": "", "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Public Repo" + "fips": "true", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" }, { - "name": "cni-multus", + "name": "cni-kubenet", "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge,libvirt", - "version": "3.9.0", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aks", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "spectrocloud", + "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "cni-kubenet", + "displayName": "Kubenet", + "layer": "cni", + "addonType": "", + "cloudTypesFormatted": "aks", + "version": "1.0.0", + "status": "active", + "packCreateDate": "2021-05-12", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Public Repo" }, { @@ -4098,7 +4566,7 @@ "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge,libvirt", - "version": "3.4.0", + "version": "3.9.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -4111,14 +4579,35 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Palette Registry - OCI" }, { "name": "cni-multus", - "displayName": "", + "displayName": "Multus", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge,libvirt", + "version": "3.4.0", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-23", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Public Repo" + }, + { + "name": "cni-multus", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge,libvirt,custom", "version": "3.8.0", "status": "unknown", "packCreateDate": "", @@ -4132,7 +4621,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "cni-multus", @@ -4144,7 +4633,7 @@ "status": "active", "packCreateDate": "2023-02-03", "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", + "timeLastUpdated": "1 years", "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "", @@ -4153,19 +4642,19 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pack-central", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cni-multus", "displayName": "Multus", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge,libvirt", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge,libvirt,custom", "version": "3.8.0", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -4174,7 +4663,28 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" + }, + { + "name": "cni-multus", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aws,vsphere,gcp,maas,edge,libvirt", + "version": "3.4.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Community Registry - OCI" }, { "name": "cni-romana", @@ -4199,44 +4709,44 @@ }, { "name": "cni-tke-global-router", - "displayName": "Global Router", + "displayName": "", "layer": "cni", "addonType": "", "cloudTypesFormatted": "tke", "version": "1.0", - "status": "active", - "packCreateDate": "2022-03-09", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { "name": "cni-tke-global-router", - "displayName": "", + "displayName": "Global Router", "layer": "cni", "addonType": "", "cloudTypesFormatted": "tke", "version": "1.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "status": "active", + "packCreateDate": "2022-03-09", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { @@ -4270,7 +4780,7 @@ "status": "active", "packCreateDate": "2023-04-05", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -4307,8 +4817,8 @@ "displayName": "", "layer": "addon", "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.9.0", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.11.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -4321,14 +4831,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "cockroachdb-operator", "displayName": "", "layer": "addon", "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", "version": "2.9.0", "status": "unknown", "packCreateDate": "", @@ -4354,23 +4864,24 @@ "status": "active", "packCreateDate": "2023-01-12", "packLastModifiedDate": "2023-11-01", - "timeLastUpdated": "20 hours", + "timeLastUpdated": "4 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": false, - "prodStatus": "deleted", + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "" + "registry": "Public Repo" }, { - "name": "consul", + "name": "cockroachdb-operator", "displayName": "", "layer": "addon", - "addonType": "servicemesh", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.16.2", + "addonType": "operator", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.9.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -4386,19 +4897,19 @@ "registry": "Public Repo" }, { - "name": "container", + "name": "consul", "displayName": "", "layer": "addon", - "addonType": "container", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.0", + "addonType": "servicemesh", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "0.16.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/containerservice", + "docsURL": "", "fips": "", "verified": false, "inProduction": true, @@ -4408,11 +4919,32 @@ }, { "name": "container", - "displayName": "", + "displayName": "Container", "layer": "addon", "addonType": "container", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all", "version": "1.0.2", + "status": "active", + "packCreateDate": "2022-11-09", + "packLastModifiedDate": "2023-01-19", + "timeLastUpdated": "1 years", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/containerservice", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "container", + "displayName": "", + "layer": "addon", + "addonType": "container", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -4425,14 +4957,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "container", "displayName": "", "layer": "addon", "addonType": "container", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", "version": "1.0.1", "status": "unknown", "packCreateDate": "", @@ -4450,23 +4982,23 @@ }, { "name": "container", - "displayName": "Container", + "displayName": "", "layer": "addon", "addonType": "container", - "cloudTypesFormatted": "all", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", "version": "1.0.2", - "status": "active", - "packCreateDate": "2022-11-09", - "packLastModifiedDate": "2023-01-19", - "timeLastUpdated": "9 months", - "releaseType": "Stable", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/containerservice", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { @@ -4488,7 +5020,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "cos-gke", @@ -4500,7 +5032,7 @@ "status": "active", "packCreateDate": "2023-04-14", "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -4509,6 +5041,27 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "cost-analyzer", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "1.103.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "kubecost", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, { @@ -4521,7 +5074,7 @@ "status": "active", "packCreateDate": "2023-05-16", "packLastModifiedDate": "2023-06-20", - "timeLastUpdated": "4 months", + "timeLastUpdated": "8 months", "releaseType": "Community", "contributor": "kubecost", "docsURL": "", @@ -4533,24 +5086,24 @@ "registry": "Palette Community Registry - OCI" }, { - "name": "cost-analyzer", - "displayName": "", + "name": "crossplane", + "displayName": "Crossplane", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.103.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "kubecost", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "1.7.0", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pack-central", "registry": "Public Repo" }, { @@ -4558,7 +5111,7 @@ "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", "version": "1.7.0", "status": "unknown", "packCreateDate": "", @@ -4574,27 +5127,6 @@ "gitRepo": "", "registry": "Palette Community Registry - OCI" }, - { - "name": "crossplane", - "displayName": "Crossplane", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.7.0", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Public Repo" - }, { "name": "csi-aws", "displayName": "", @@ -4626,7 +5158,7 @@ "status": "deprecated", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-08-03", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -4637,14 +5169,35 @@ "gitRepo": "pax", "registry": "Public Repo" }, + { + "name": "csi-aws-ebs", + "displayName": "Amazon EBS CSI", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "eks,aws", + "version": "1.20.0", + "status": "active", + "packCreateDate": "2022-04-30", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, { "name": "csi-aws-ebs", "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.8.0", - "status": "deprecated", + "version": "1.24.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -4654,93 +5207,114 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { "name": "csi-aws-ebs", - "displayName": "Amazon EBS CSI", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.22.0", - "status": "active", - "packCreateDate": "2022-04-30", - "packLastModifiedDate": "2023-09-15", - "timeLastUpdated": "1 months", - "releaseType": "Stable", + "version": "1.20.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { "name": "csi-aws-ebs", - "displayName": "Amazon EBS CSI", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", "version": "1.17.0", - "status": "active", - "packCreateDate": "2023-06-22", - "packLastModifiedDate": "2023-07-02", - "timeLastUpdated": "4 months", - "releaseType": "VerteX", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "true", - "verified": false, + "fips": "", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", + "gitRepo": "", "registry": "Public Repo" }, { "name": "csi-aws-ebs", - "displayName": "Amazon EBS CSI", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.10.0", + "version": "1.16.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "csi-aws-ebs", + "displayName": "", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "eks,aws", + "version": "1.12.0", "status": "deprecated", - "packCreateDate": "2022-04-30", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { "name": "csi-aws-ebs", - "displayName": "Amazon EBS CSI", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.5.1", + "version": "1.10.0", "status": "deprecated", - "packCreateDate": "2022-04-30", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { "name": "csi-aws-ebs", @@ -4748,19 +5322,19 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.20.0", + "version": "1.17.0", "status": "active", - "packCreateDate": "2022-04-30", - "packLastModifiedDate": "2023-08-08", + "packCreateDate": "2023-06-22", + "packLastModifiedDate": "2023-12-22", "timeLastUpdated": "2 months", - "releaseType": "Stable", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", - "verified": true, + "fips": "true", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "pax-fips", "registry": "Palette Registry - OCI" }, { @@ -4769,18 +5343,18 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.12.0", - "status": "deprecated", + "version": "1.22.0", + "status": "active", "packCreateDate": "2022-04-30", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2023-09-15", + "timeLastUpdated": "5 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, @@ -4790,7 +5364,7 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.17.0", + "version": "1.22.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -4803,7 +5377,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-aws-ebs", @@ -4811,7 +5385,7 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.12.0", + "version": "1.8.0", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -4824,7 +5398,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-aws-ebs", @@ -4832,7 +5406,7 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.10.0", + "version": "1.5.1", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -4845,27 +5419,48 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-aws-ebs", - "displayName": "", + "displayName": "Amazon EBS CSI", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "eks,aws", + "version": "1.24.0", + "status": "active", + "packCreateDate": "2022-04-30", + "packLastModifiedDate": "2023-11-20", + "timeLastUpdated": "3 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "csi-aws-ebs", + "displayName": "Amazon EBS CSI", "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", "version": "1.5.1", "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "packCreateDate": "2022-04-30", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { @@ -4874,104 +5469,145 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.16.0", + "version": "1.26.1", "status": "active", + "packCreateDate": "2023-06-22", + "packLastModifiedDate": "2024-01-12", + "timeLastUpdated": "1 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "true", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" + }, + { + "name": "csi-aws-ebs", + "displayName": "Amazon EBS CSI", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "eks,aws", + "version": "1.8.0", + "status": "deprecated", "packCreateDate": "2022-04-30", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Public Repo" }, { "name": "csi-aws-ebs", - "displayName": "", + "displayName": "Amazon EBS CSI", "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.16.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.10.0", + "status": "deprecated", + "packCreateDate": "2022-04-30", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", + "prodStatus": "deprecated", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { "name": "csi-aws-ebs", - "displayName": "", + "displayName": "Amazon EBS CSI", "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.22.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.12.0", + "status": "deprecated", + "packCreateDate": "2022-04-30", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", + "prodStatus": "deprecated", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { "name": "csi-aws-ebs", - "displayName": "", + "displayName": "Amazon EBS CSI", "layer": "csi", "addonType": "", "cloudTypesFormatted": "eks,aws", - "version": "1.20.0", + "version": "1.16.0", + "status": "active", + "packCreateDate": "2022-04-30", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "csi-aws-efs", + "displayName": "", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "aws,eks", + "version": "1.4.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "csi-aws-ebs", - "displayName": "Amazon EBS CSI", + "name": "csi-aws-efs", + "displayName": "Amazon EFS", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "eks,aws", - "version": "1.8.0", - "status": "deprecated", - "packCreateDate": "2022-04-30", - "packLastModifiedDate": "2023-07-21", + "cloudTypesFormatted": "aws,eks", + "version": "1.7.0", + "status": "active", + "packCreateDate": "2022-08-04", + "packLastModifiedDate": "2023-11-27", "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-aws-efs", @@ -4979,18 +5615,18 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "aws,eks", - "version": "1.3.6", - "status": "deprecated", - "packCreateDate": "2022-03-18", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "version": "1.5.6", + "status": "active", + "packCreateDate": "2022-08-04", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, @@ -5004,7 +5640,7 @@ "status": "active", "packCreateDate": "2022-08-04", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", @@ -5021,11 +5657,11 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "aws,eks", - "version": "1.5.6", + "version": "1.4.0", "status": "active", "packCreateDate": "2022-08-04", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", @@ -5034,7 +5670,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-aws-efs", @@ -5042,20 +5678,20 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "aws,eks", - "version": "1.4.0", - "status": "active", - "packCreateDate": "2022-08-04", + "version": "1.3.6", + "status": "deprecated", + "packCreateDate": "2022-03-18", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-aws-efs", @@ -5063,18 +5699,18 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "aws,eks", - "version": "1.3.6", - "status": "deprecated", + "version": "1.7.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, @@ -5084,7 +5720,7 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "aws,eks", - "version": "1.4.9", + "version": "1.5.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -5105,7 +5741,7 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "aws,eks", - "version": "1.5.6", + "version": "1.4.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -5118,7 +5754,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-aws-efs", @@ -5126,20 +5762,20 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "aws,eks", - "version": "1.4.0", - "status": "unknown", + "version": "1.3.6", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/aws-efs", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-aws-new", @@ -5147,7 +5783,7 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "aws,eks", - "version": "1.0.0", + "version": "1.1.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -5168,7 +5804,7 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "aws,eks", - "version": "1.1.0", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -5193,7 +5829,7 @@ "status": "deprecated", "packCreateDate": "2020-04-20", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -5206,23 +5842,23 @@ }, { "name": "csi-azure", - "displayName": "Azure Disk CSI Driver", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "azure,aks", - "version": "1.26.3", - "status": "active", - "packCreateDate": "2023-06-13", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "version": "1.29.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { @@ -5231,32 +5867,11 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "azure,aks", - "version": "1.25.0", - "status": "active", - "packCreateDate": "2022-06-28", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "csi-azure", - "displayName": "Azure Disk CSI Driver", - "layer": "csi", - "addonType": "", - "cloudTypesFormatted": "azure,aks", - "version": "1.28.3", + "version": "1.29.1", "status": "active", "packCreateDate": "2023-06-13", - "packLastModifiedDate": "2023-09-12", - "timeLastUpdated": "1 months", + "packLastModifiedDate": "2023-12-15", + "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -5265,37 +5880,16 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-azure", - "displayName": "Azure Disk CSI Driver", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "azure,aks", "version": "1.20.0", "status": "deprecated", - "packCreateDate": "2022-06-28", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "csi-azure", - "displayName": "", - "layer": "csi", - "addonType": "", - "cloudTypesFormatted": "azure,aks", - "version": "1.26.3", - "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -5305,9 +5899,9 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-azure", @@ -5315,8 +5909,8 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "azure,aks", - "version": "1.0.0", - "status": "deprecated", + "version": "1.25.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -5326,7 +5920,7 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, @@ -5336,8 +5930,8 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "azure,aks", - "version": "1.20.0", - "status": "deprecated", + "version": "1.26.3", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -5347,9 +5941,9 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-azure", @@ -5357,7 +5951,7 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "azure,aks", - "version": "1.25.0", + "version": "1.28.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -5378,8 +5972,8 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "azure,aks", - "version": "1.28.3", - "status": "unknown", + "version": "1.0.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -5389,84 +5983,125 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "csi-gcp", - "displayName": "GCE Persistent Disk", + "name": "csi-azure", + "displayName": "Azure Disk CSI Driver", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "gcp", - "version": "1.0", + "cloudTypesFormatted": "azure,aks", + "version": "1.20.0", "status": "deprecated", - "packCreateDate": "2019-12-24", + "packCreateDate": "2022-06-28", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "csi-gcp", - "displayName": "", + "name": "csi-azure", + "displayName": "Azure Disk CSI Driver", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "gcp", - "version": "1.0", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "azure,aks", + "version": "1.25.0", + "status": "active", + "packCreateDate": "2022-06-28", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "", + "docsURL": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "csi-gcp-driver", - "displayName": "GCE Persistent Disk CSI", + "name": "csi-azure", + "displayName": "Azure Disk CSI Driver", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "gcp", - "version": "1.8.2", + "cloudTypesFormatted": "azure,aks", + "version": "1.26.3", "status": "active", - "packCreateDate": "2022-07-14", + "packCreateDate": "2023-06-13", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "csi-gcp-driver", - "displayName": "GCE Persistent Disk CSI", + "name": "csi-azure", + "displayName": "Azure Disk CSI Driver", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "azure,aks", + "version": "1.28.3", + "status": "active", + "packCreateDate": "2023-06-13", + "packLastModifiedDate": "2023-09-12", + "timeLastUpdated": "5 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "csi-azure-fips", + "displayName": "Azure Disk CSI Driver", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "azure,aks", + "version": "1.28.3", + "status": "active", + "packCreateDate": "2023-11-08", + "packLastModifiedDate": "2023-12-20", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "", + "fips": "true", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" + }, + { + "name": "csi-gcp", + "displayName": "GCE Persistent Disk", "layer": "csi", "addonType": "", "cloudTypesFormatted": "gcp", - "version": "1.7.1", + "version": "1.0", "status": "deprecated", - "packCreateDate": "2022-07-14", + "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -5475,6 +6110,27 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "csi-gcp", + "displayName": "", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "gcp", + "version": "1.0", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { @@ -5487,7 +6143,7 @@ "status": "active", "packCreateDate": "2022-07-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -5498,14 +6154,55 @@ "gitRepo": "pax", "registry": "Public Repo" }, + { + "name": "csi-gcp-driver", + "displayName": "GCE Persistent Disk CSI", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "gcp", + "version": "1.12.4", + "status": "active", + "packCreateDate": "2022-07-14", + "packLastModifiedDate": "2024-01-24", + "timeLastUpdated": "1 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "csi-gcp-driver", + "displayName": "GCE Persistent Disk CSI", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "gcp", + "version": "1.8.2", + "status": "active", + "packCreateDate": "2022-07-14", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, { "name": "csi-gcp-driver", "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "gcp", - "version": "1.10.1", - "status": "unknown", + "version": "1.7.1", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -5515,9 +6212,9 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-gcp-driver", @@ -5546,8 +6243,8 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "gcp", - "version": "1.7.1", - "status": "deprecated", + "version": "1.10.1", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -5557,16 +6254,37 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" + }, + { + "name": "csi-gcp-driver", + "displayName": "GCE Persistent Disk CSI", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "gcp", + "version": "1.7.1", + "status": "deprecated", + "packCreateDate": "2022-07-14", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { "name": "csi-gluster", "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", "version": "1.2.0", "status": "unknown", "packCreateDate": "", @@ -5582,6 +6300,26 @@ "gitRepo": "", "registry": "Public Repo" }, + { + "name": "csi-local-path-provisioner", + "displayName": "Local Path Provisioner", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt", + "version": "0.0.25", + "status": "active", + "packCreateDate": "2024-02-04", + "packLastModifiedDate": "2024-02-04", + "timeLastUpdated": "3 weeks", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://github.com/rancher/local-path-provisioner", + "fips": "false", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, { "name": "csi-local-path-provisioner", "displayName": "", @@ -5629,11 +6367,11 @@ "displayName": "Longhorn", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", - "version": "1.5.1", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge,custom", + "version": "1.5.3", "status": "active", "packCreateDate": "2022-10-26", - "packLastModifiedDate": "2023-09-13", + "packLastModifiedDate": "2024-01-02", "timeLastUpdated": "1 months", "releaseType": "Stable", "contributor": "", @@ -5643,27 +6381,47 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-longhorn", "displayName": "Longhorn", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", - "version": "1.4.0", + "cloudTypesFormatted": "maas,edge,edge-native,custom", + "version": "1.6.0", "status": "active", "packCreateDate": "2022-10-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-03-01", + "timeLastUpdated": "12 hours", "releaseType": "Stable", "contributor": "", - "docsURL": "https://github.com/longhorn/longhorn", + "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", "fips": "false", "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "csi-longhorn", + "displayName": "", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", + "version": "1.3.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://github.com/longhorn/longhorn", + "fips": "", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { @@ -5671,7 +6429,7 @@ "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge,custom", "version": "1.5.1", "status": "unknown", "packCreateDate": "", @@ -5685,28 +6443,70 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "csi-longhorn", + "displayName": "", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", + "version": "1.4.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://github.com/longhorn/longhorn", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, { "name": "csi-longhorn", - "displayName": "Longhorn", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", "version": "1.4.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "csi-longhorn", + "displayName": "Longhorn", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", + "version": "1.4.0", "status": "active", "packCreateDate": "2022-10-26", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", + "docsURL": "https://github.com/longhorn/longhorn", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-longhorn", @@ -5718,7 +6518,7 @@ "status": "active", "packCreateDate": "2022-10-26", "packLastModifiedDate": "2023-09-21", - "timeLastUpdated": "1 months", + "timeLastUpdated": "5 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://github.com/longhorn/longhorn", @@ -5727,64 +6527,64 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-longhorn", - "displayName": "", + "displayName": "Longhorn", "layer": "csi", "addonType": "", "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", - "version": "1.4.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.4.1", + "status": "active", + "packCreateDate": "2022-10-26", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "https://github.com/longhorn/longhorn", - "fips": "", + "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "csi-longhorn", - "displayName": "", + "displayName": "Longhorn", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", - "version": "1.4.1", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge,custom", + "version": "1.5.1", + "status": "active", + "packCreateDate": "2022-10-26", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "csi-longhorn", "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", - "version": "1.3.1", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge,custom", + "version": "1.5.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://github.com/longhorn/longhorn", + "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", "fips": "", "verified": true, "inProduction": true, @@ -5797,21 +6597,20 @@ "displayName": "Longhorn", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", - "version": "1.4.1", + "cloudTypesFormatted": "maas,edge,edge-native,custom", + "version": "1.6.0", "status": "active", "packCreateDate": "2022-10-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-03-01", + "timeLastUpdated": "12 hours", "releaseType": "Stable", "contributor": "", - "docsURL": "https://github.com/longhorn/longhorn", + "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "" }, { "name": "csi-longhorn-addon", @@ -5819,11 +6618,11 @@ "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", - "version": "1.3.1", + "version": "1.4.1", "status": "active", "packCreateDate": "2022-10-26", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://github.com/longhorn/longhorn", @@ -5832,27 +6631,27 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-longhorn-addon", - "displayName": "Longhorn", + "displayName": "", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", "version": "1.4.0", - "status": "active", - "packCreateDate": "2022-10-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://github.com/longhorn/longhorn", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { @@ -5882,35 +6681,35 @@ "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", - "version": "1.5.1", + "version": "1.3.1", "status": "active", "packCreateDate": "2022-10-26", - "packLastModifiedDate": "2023-09-13", - "timeLastUpdated": "1 months", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", + "docsURL": "https://github.com/longhorn/longhorn", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-longhorn-addon", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", - "version": "1.4.0", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge,custom", + "version": "1.5.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://github.com/longhorn/longhorn", + "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", "fips": "", "verified": true, "inProduction": true, @@ -5918,13 +6717,34 @@ "gitRepo": "", "registry": "Public Repo" }, + { + "name": "csi-longhorn-addon", + "displayName": "Longhorn", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge,custom", + "version": "1.5.3", + "status": "active", + "packCreateDate": "2022-10-26", + "packLastModifiedDate": "2024-01-02", + "timeLastUpdated": "1 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, { "name": "csi-longhorn-addon", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", - "version": "1.5.1", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge,custom", + "version": "1.5.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -5960,6 +6780,48 @@ "gitRepo": "", "registry": "Public Repo" }, + { + "name": "csi-longhorn-addon", + "displayName": "Longhorn", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge,custom", + "version": "1.5.1", + "status": "active", + "packCreateDate": "2022-10-26", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "csi-longhorn-addon", + "displayName": "Longhorn", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,coxedge", + "version": "1.4.0", + "status": "active", + "packCreateDate": "2022-10-26", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://github.com/longhorn/longhorn", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, { "name": "csi-longhorn-fips", "displayName": "Longhorn", @@ -5970,7 +6832,7 @@ "status": "active", "packCreateDate": "2023-08-05", "packLastModifiedDate": "2023-08-05", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/longhorn", @@ -5988,17 +6850,17 @@ "cloudTypesFormatted": "maas", "version": "1.0.0", "status": "active", - "packCreateDate": "2020-02-20", - "packLastModifiedDate": "2023-07-21", + "packCreateDate": "2023-11-22", + "packLastModifiedDate": "2023-11-22", "timeLastUpdated": "3 months", - "releaseType": "Stable", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", - "verified": true, + "fips": "true", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "pax-fips", "registry": "Palette Registry - OCI" }, { @@ -6027,7 +6889,7 @@ "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", "version": "3.1.0", "status": "unknown", "packCreateDate": "", @@ -6045,45 +6907,45 @@ }, { "name": "csi-nfs-subdir-external", - "displayName": "NFS Subdir External", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "maas,edge,libvirt", "version": "4.0.13", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", "contributor": "spectrocloud", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { "name": "csi-nfs-subdir-external", - "displayName": "", + "displayName": "NFS Subdir External", "layer": "csi", "addonType": "", "cloudTypesFormatted": "maas,edge,libvirt", "version": "4.0.13", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" }, { "name": "csi-openebs", @@ -6095,7 +6957,7 @@ "status": "disabled", "packCreateDate": "2020-02-13", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -6111,11 +6973,11 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.18", + "version": "1.21", "status": "deprecated", "packCreateDate": "2021-06-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -6124,27 +6986,27 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-openstack-cinder", - "displayName": "Openstack Cinder CSI", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.22", - "status": "deprecated", - "packCreateDate": "2021-06-14", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "version": "1.25", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, { @@ -6170,24 +7032,24 @@ }, { "name": "csi-openstack-cinder", - "displayName": "Openstack Cinder CSI", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.23", + "version": "1.21", "status": "deprecated", - "packCreateDate": "2021-06-14", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { "name": "csi-openstack-cinder", @@ -6195,62 +7057,41 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.24", - "status": "active", + "version": "1.18", + "status": "deprecated", "packCreateDate": "2021-06-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-openstack-cinder", - "displayName": "Openstack Cinder CSI", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.25", - "status": "active", - "packCreateDate": "2021-06-14", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "csi-openstack-cinder", - "displayName": "Openstack Cinder CSI", - "layer": "csi", - "addonType": "", - "cloudTypesFormatted": "openstack", - "version": "1.26", - "status": "active", - "packCreateDate": "2021-06-14", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "version": "1.20", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { "name": "csi-openstack-cinder", @@ -6258,11 +7099,11 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.19", + "version": "1.23", "status": "deprecated", "packCreateDate": "2021-06-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -6279,20 +7120,20 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.20", - "status": "deprecated", + "version": "1.26", + "status": "active", "packCreateDate": "2021-06-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-openstack-cinder", @@ -6300,20 +7141,20 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.21", - "status": "deprecated", + "version": "1.24", + "status": "active", "packCreateDate": "2021-06-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-openstack-cinder", @@ -6334,69 +7175,69 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-openstack-cinder", - "displayName": "", + "displayName": "Openstack Cinder CSI", "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.24", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.22", + "status": "deprecated", + "packCreateDate": "2021-06-14", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "csi-openstack-cinder", - "displayName": "", + "displayName": "Openstack Cinder CSI", "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.19", + "version": "1.20", "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "packCreateDate": "2021-06-14", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { "name": "csi-openstack-cinder", - "displayName": "", + "displayName": "Openstack Cinder CSI", "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.20", + "version": "1.19", "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "packCreateDate": "2021-06-14", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { @@ -6405,7 +7246,7 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.21", + "version": "1.19", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -6418,7 +7259,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-openstack-cinder", @@ -6426,18 +7267,18 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.18", - "status": "deprecated", + "version": "1.0.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, @@ -6464,11 +7305,32 @@ }, { "name": "csi-openstack-cinder", - "displayName": "", + "displayName": "Openstack Cinder CSI", "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", "version": "1.25", + "status": "active", + "packCreateDate": "2021-06-14", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "csi-openstack-cinder", + "displayName": "", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "openstack", + "version": "1.24", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -6489,18 +7351,18 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "1.0.0", - "status": "unknown", + "version": "1.18", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, @@ -6514,7 +7376,7 @@ "status": "disabled", "packCreateDate": "2020-02-13", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -6524,13 +7386,34 @@ "gitRepo": "pax", "registry": "" }, + { + "name": "csi-portworx-aws", + "displayName": "", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "aws,eks", + "version": "2.9.0", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, { "name": "csi-portworx-aws", "displayName": "", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "aws,eks", - "version": "2.6.5", + "version": "2.9.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -6551,11 +7434,11 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "aws,eks", - "version": "2.10.0", + "version": "2.9.0", "status": "deprecated", "packCreateDate": "2020-09-11", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", @@ -6566,13 +7449,34 @@ "gitRepo": "pax", "registry": "Public Repo" }, + { + "name": "csi-portworx-aws", + "displayName": "Portworx", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "aws,eks", + "version": "2.10.0", + "status": "deprecated", + "packCreateDate": "2020-09-11", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, { "name": "csi-portworx-aws", "displayName": "", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "aws,eks", - "version": "2.9.1", + "version": "2.6.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -6587,27 +7491,6 @@ "gitRepo": "", "registry": "Spectro Addon Repo" }, - { - "name": "csi-portworx-aws", - "displayName": "Portworx", - "layer": "csi", - "addonType": "", - "cloudTypesFormatted": "aws,eks", - "version": "2.9.0", - "status": "deprecated", - "packCreateDate": "2020-09-11", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" - }, { "name": "csi-portworx-aws", "displayName": "", @@ -6627,15 +7510,15 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "csi-portworx-aws", + "name": "csi-portworx-gcp", "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,eks", - "version": "2.9.0", + "cloudTypesFormatted": "gcp", + "version": "2.6.1", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -6648,7 +7531,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-portworx-gcp", @@ -6660,7 +7543,7 @@ "status": "deprecated", "packCreateDate": "2020-09-11", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", @@ -6672,45 +7555,45 @@ "registry": "Palette Registry - OCI" }, { - "name": "csi-portworx-gcp", - "displayName": "", + "name": "csi-portworx-generic", + "displayName": "Portworx /w Operator", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "gcp", - "version": "2.6.1", + "cloudTypesFormatted": "aws,azure,edge,maas,openstack,eks,vsphere,tke", + "version": "2.11.4", "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "packCreateDate": "2020-09-11", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { "name": "csi-portworx-generic", - "displayName": "Portworx /w Operator", + "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,edge,maas,openstack,eks,tke", - "version": "2.11.2", + "cloudTypesFormatted": "aws,azure,edge,maas,openstack,eks,tke", + "version": "2.11.4", "status": "deprecated", - "packCreateDate": "2020-09-11", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { @@ -6718,12 +7601,12 @@ "displayName": "Portworx /w Operator", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,edge,edge-native,maas,openstack,eks,tke", - "version": "2.13.3", + "cloudTypesFormatted": "aws,azure,edge,edge-native,maas,openstack,eks,vsphere,tke", + "version": "2.13.6", "status": "active", "packCreateDate": "2020-09-11", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", @@ -6739,12 +7622,12 @@ "displayName": "Portworx /w Operator", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,edge,maas,openstack,eks,tke", - "version": "2.11.4", + "cloudTypesFormatted": "aws,azure,edge,maas,openstack,eks,vsphere,tke", + "version": "2.11.2", "status": "deprecated", "packCreateDate": "2020-09-11", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", @@ -6753,19 +7636,19 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-portworx-generic", "displayName": "Portworx /w Operator", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,edge,maas,openstack,eks,tke", + "cloudTypesFormatted": "aws,azure,edge,maas,openstack,eks,vsphere,tke", "version": "2.12.0", "status": "active", "packCreateDate": "2020-09-11", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", @@ -6781,9 +7664,9 @@ "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,edge,maas,openstack,eks,tke", - "version": "2.11.2", - "status": "deprecated", + "cloudTypesFormatted": "aws,azure,edge,maas,openstack,eks,tke", + "version": "2.12.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -6793,21 +7676,21 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-portworx-generic", "displayName": "Portworx /w Operator", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,edge,edge-native,maas,openstack,eks,tke", - "version": "2.13.6", + "cloudTypesFormatted": "aws,azure,edge,edge-native,maas,openstack,eks,vsphere,tke", + "version": "2.13.3", "status": "active", "packCreateDate": "2020-09-11", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", @@ -6823,8 +7706,8 @@ "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,edge,edge-native,maas,openstack,eks,tke", - "version": "2.13.6", + "cloudTypesFormatted": "aws,azure,edge,edge-native,maas,openstack,eks,tke", + "version": "2.13.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -6844,9 +7727,9 @@ "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,edge,maas,openstack,eks,tke", - "version": "2.11.4", - "status": "deprecated", + "cloudTypesFormatted": "aws,azure,gcp,edge,edge-native,maas,openstack,eks,tke,custom", + "version": "3.0.3", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -6856,7 +7739,7 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, @@ -6865,8 +7748,8 @@ "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,edge,edge-native,maas,openstack,eks,tke", - "version": "2.13.3", + "cloudTypesFormatted": "aws,azure,gcp,edge,edge-native,maas,openstack,eks,tke", + "version": "3.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -6886,8 +7769,8 @@ "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,edge,maas,openstack,eks,tke", - "version": "2.12.0", + "cloudTypesFormatted": "aws,azure,gcp,edge,edge-native,maas,openstack,eks,tke,custom", + "version": "3.0.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -6904,23 +7787,23 @@ }, { "name": "csi-portworx-generic", - "displayName": "Portworx /w Operator", + "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,gcp,vsphere,edge,edge-native,maas,openstack,eks,tke", - "version": "3.0.0", - "status": "active", - "packCreateDate": "2020-09-11", - "packLastModifiedDate": "2023-08-10", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "cloudTypesFormatted": "aws,azure,edge,edge-native,maas,openstack,eks,tke", + "version": "2.13.6", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { @@ -6928,9 +7811,9 @@ "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "aws,azure,gcp,vsphere,edge,edge-native,maas,openstack,eks,tke", - "version": "3.0.0", - "status": "unknown", + "cloudTypesFormatted": "aws,azure,edge,maas,openstack,eks,tke", + "version": "2.11.2", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -6940,49 +7823,70 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "csi-portworx-vsphere", - "displayName": "Portworx", + "name": "csi-portworx-generic", + "displayName": "Portworx /w Operator", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "vsphere", - "version": "2.8.0", - "status": "deprecated", + "cloudTypesFormatted": "aws,azure,gcp,edge,edge-native,maas,openstack,eks,tke,vsphere,custom", + "version": "3.0.4", + "status": "active", "packCreateDate": "2020-09-11", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "csi-portworx-vsphere", - "displayName": "Portworx", + "name": "csi-portworx-generic", + "displayName": "Portworx /w Operator", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "vsphere", - "version": "2.9.0", - "status": "deprecated", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "cloudTypesFormatted": "aws,azure,gcp,edge,edge-native,maas,openstack,eks,tke,vsphere,custom", + "version": "3.0.3", + "status": "active", + "packCreateDate": "2020-09-11", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "csi-portworx-generic", + "displayName": "Portworx /w Operator", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "aws,azure,gcp,edge,edge-native,maas,openstack,eks,vsphere,tke", + "version": "3.0.0", + "status": "active", + "packCreateDate": "2020-09-11", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, @@ -6996,7 +7900,7 @@ "status": "deprecated", "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/portworx", @@ -7005,7 +7909,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-portworx-vsphere", @@ -7026,7 +7930,28 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" + }, + { + "name": "csi-portworx-vsphere", + "displayName": "Portworx", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "vsphere", + "version": "2.9.0", + "status": "deprecated", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "csi-portworx-vsphere", @@ -7047,7 +7972,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-portworx-vsphere", @@ -7070,6 +7995,27 @@ "gitRepo": "", "registry": "Palette Registry - OCI" }, + { + "name": "csi-portworx-vsphere", + "displayName": "Portworx", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "vsphere", + "version": "2.8.0", + "status": "deprecated", + "packCreateDate": "2020-09-11", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, { "name": "csi-rook", "displayName": "Rook", @@ -7080,7 +8026,7 @@ "status": "disabled", "packCreateDate": "2020-02-13", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -7092,67 +8038,46 @@ }, { "name": "csi-rook-ceph", - "displayName": "Rook-Ceph", + "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas", - "version": "1.5.9", + "cloudTypesFormatted": "maas,edge,libvirt", + "version": "1.8.3", "status": "deprecated", - "packCreateDate": "2021-04-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { "name": "csi-rook-ceph", "displayName": "Rook-Ceph", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,libvirt", - "version": "1.8.0", - "status": "active", + "cloudTypesFormatted": "maas", + "version": "1.5.9", + "status": "deprecated", "packCreateDate": "2021-04-12", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, - { - "name": "csi-rook-ceph", - "displayName": "Rook-Ceph", - "layer": "csi", - "addonType": "", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt", - "version": "1.11.9", - "status": "active", - "packCreateDate": "2023-09-13", - "packLastModifiedDate": "2023-09-13", - "timeLastUpdated": "1 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" - }, { "name": "csi-rook-ceph", "displayName": "", @@ -7160,7 +8085,7 @@ "addonType": "", "cloudTypesFormatted": "maas,edge,libvirt", "version": "1.8.0", - "status": "unknown", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -7170,41 +8095,41 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { "name": "csi-rook-ceph", - "displayName": "Rook-Ceph", + "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,libvirt", - "version": "1.8.3", - "status": "active", - "packCreateDate": "2022-03-21", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt", + "version": "1.9.2", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { "name": "csi-rook-ceph", "displayName": "Rook-Ceph", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt", - "version": "1.9.2", - "status": "active", - "packCreateDate": "2022-03-21", - "packLastModifiedDate": "2023-07-21", + "cloudTypesFormatted": "maas,edge,libvirt", + "version": "1.8.0", + "status": "deprecated", + "packCreateDate": "2021-04-12", + "packLastModifiedDate": "2023-11-27", "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", @@ -7212,9 +8137,9 @@ "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-rook-ceph", @@ -7222,10 +8147,10 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "maas,edge,edge-native,libvirt", - "version": "1.10.10", - "status": "active", + "version": "1.9.2", + "status": "deprecated", "packCreateDate": "2022-03-21", - "packLastModifiedDate": "2023-07-21", + "packLastModifiedDate": "2023-11-27", "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", @@ -7233,7 +8158,7 @@ "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Public Repo" }, @@ -7242,9 +8167,9 @@ "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt", - "version": "1.10.10", - "status": "unknown", + "cloudTypesFormatted": "maas", + "version": "1.5.9", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -7254,26 +8179,26 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-rook-ceph", "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt", - "version": "1.9.2", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,custom", + "version": "1.11.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", @@ -7284,8 +8209,8 @@ "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,edge-native,libvirt", - "version": "1.11.9", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,custom", + "version": "1.12.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -7305,9 +8230,9 @@ "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas", - "version": "1.5.9", - "status": "deprecated", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt", + "version": "1.10.10", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -7317,42 +8242,83 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-rook-ceph", - "displayName": "", + "displayName": "Rook-Ceph", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,edge,libvirt", - "version": "1.8.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,custom", + "version": "1.13.1", + "status": "active", + "packCreateDate": "2023-09-13", + "packLastModifiedDate": "2024-02-27", + "timeLastUpdated": "3 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "", + "fips": "false", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "csi-rook-ceph", + "displayName": "Rook-Ceph", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,custom", + "version": "1.11.9", + "status": "active", + "packCreateDate": "2023-09-13", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "csi-rook-ceph", + "displayName": "Rook-Ceph", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt", + "version": "1.10.10", + "status": "active", + "packCreateDate": "2022-03-21", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "csi-rook-ceph-addon", + "name": "csi-rook-ceph", "displayName": "Rook-Ceph", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere,maas,edge,edge-native,libvirt", - "version": "1.11.9", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "maas,edge,edge-native,libvirt,custom", + "version": "1.12.7", "status": "active", "packCreateDate": "2023-09-13", - "packLastModifiedDate": "2023-09-13", - "timeLastUpdated": "1 months", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -7364,15 +8330,15 @@ "registry": "Public Repo" }, { - "name": "csi-rook-ceph-addon", + "name": "csi-rook-ceph", "displayName": "Rook-Ceph", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "maas,edge,edge-native,vsphere,libvirt", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "maas,edge,libvirt", "version": "1.8.3", - "status": "active", + "status": "deprecated", "packCreateDate": "2022-03-21", - "packLastModifiedDate": "2023-07-21", + "packLastModifiedDate": "2023-11-27", "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", @@ -7380,7 +8346,7 @@ "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Public Repo" }, @@ -7389,29 +8355,28 @@ "displayName": "Rook-Ceph", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "maas,edge,edge-native,vsphere,libvirt", - "version": "1.9.2", + "cloudTypesFormatted": "vsphere,maas,edge,edge-native,libvirt,custom", + "version": "1.13.1", "status": "active", - "packCreateDate": "2022-03-21", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packCreateDate": "2023-09-13", + "packLastModifiedDate": "2024-02-27", + "timeLastUpdated": "3 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "verified": false, + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "" }, { "name": "csi-rook-ceph-addon", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "vsphere,maas,edge,edge-native,libvirt", - "version": "1.11.9", + "cloudTypesFormatted": "vsphere,maas,edge,edge-native,libvirt,custom", + "version": "1.12.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -7433,7 +8398,7 @@ "addonType": "system app", "cloudTypesFormatted": "maas,edge,edge-native,vsphere,libvirt", "version": "1.8.3", - "status": "unknown", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -7443,30 +8408,51 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" + }, + { + "name": "csi-rook-ceph-addon", + "displayName": "Rook-Ceph", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "vsphere,maas,edge,edge-native,libvirt,custom", + "version": "1.12.7", + "status": "active", + "packCreateDate": "2023-09-13", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "csi-rook-ceph-addon", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "maas,edge,edge-native,vsphere,libvirt", - "version": "1.9.2", + "cloudTypesFormatted": "vsphere,maas,edge,edge-native,libvirt,custom", + "version": "1.11.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-rook-ceph-addon", @@ -7478,7 +8464,7 @@ "status": "active", "packCreateDate": "2022-03-21", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -7511,15 +8497,15 @@ "registry": "Public Repo" }, { - "name": "csi-rook-ceph-helm", - "displayName": "Rook-Ceph (Helm)", - "layer": "csi", - "addonType": "", - "cloudTypesFormatted": "maas,openstack", + "name": "csi-rook-ceph-addon", + "displayName": "Rook-Ceph", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "vsphere,maas,edge,edge-native,libvirt,custom", "version": "1.11.9", "status": "active", - "packCreateDate": "2023-08-10", - "packLastModifiedDate": "2023-08-22", + "packCreateDate": "2023-09-13", + "packLastModifiedDate": "2023-12-07", "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", @@ -7529,27 +8515,111 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "csi-rook-ceph-addon", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "maas,edge,edge-native,vsphere,libvirt", + "version": "1.9.2", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "csi-rook-ceph-addon", + "displayName": "Rook-Ceph", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "maas,edge,edge-native,vsphere,libvirt", + "version": "1.9.2", + "status": "deprecated", + "packCreateDate": "2022-03-21", + "packLastModifiedDate": "2023-11-27", + "timeLastUpdated": "3 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", "registry": "Public Repo" }, + { + "name": "csi-rook-ceph-addon", + "displayName": "Rook-Ceph", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "maas,edge,edge-native,vsphere,libvirt", + "version": "1.8.3", + "status": "deprecated", + "packCreateDate": "2022-03-21", + "packLastModifiedDate": "2023-11-27", + "timeLastUpdated": "3 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, { "name": "csi-rook-ceph-helm", "displayName": "", "layer": "csi", "addonType": "", - "cloudTypesFormatted": "maas,openstack", + "cloudTypesFormatted": "maas,openstack,custom", "version": "1.11.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "csi-rook-ceph-helm", + "displayName": "Rook-Ceph (Helm)", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "maas,openstack,custom", + "version": "1.11.9", + "status": "active", + "packCreateDate": "2023-08-10", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { @@ -7557,42 +8627,42 @@ "displayName": "Rook-Ceph (Helm)", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "edge-native,maas,vsphere,openstack", + "cloudTypesFormatted": "edge-native,maas,vsphere,openstack,custom", "version": "1.11.9", "status": "active", "packCreateDate": "2023-08-10", - "packLastModifiedDate": "2023-08-24", + "packLastModifiedDate": "2023-12-07", "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-rook-ceph-helm-addon", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "edge-native,maas,vsphere,openstack", + "cloudTypesFormatted": "edge-native,maas,vsphere,openstack,custom", "version": "1.11.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-tke", @@ -7604,7 +8674,7 @@ "status": "active", "packCreateDate": "2022-03-09", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -7646,7 +8716,7 @@ "status": "active", "packCreateDate": "2022-12-27", "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", + "timeLastUpdated": "4 months", "releaseType": "Stable", "contributor": "spectrocloud", "docsURL": "", @@ -7655,14 +8725,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-topolvm", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", "version": "11.1.1", "status": "unknown", "packCreateDate": "", @@ -7676,7 +8746,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-topolvm-addon", @@ -7688,7 +8758,7 @@ "status": "active", "packCreateDate": "2022-12-27", "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", + "timeLastUpdated": "4 months", "releaseType": "Stable", "contributor": "spectrocloud", "docsURL": "", @@ -7697,14 +8767,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-topolvm-addon", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", "version": "11.0.0", "status": "unknown", "packCreateDate": "", @@ -7718,19 +8788,19 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-trident", "displayName": "Trident", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "vsphere,maas,edge-native", "version": "23.01.0", "status": "active", "packCreateDate": "2023-06-28", - "packLastModifiedDate": "2023-09-12", - "timeLastUpdated": "1 months", + "packLastModifiedDate": "2023-11-03", + "timeLastUpdated": "3 months", "releaseType": "Community", "contributor": "", "docsURL": "https://github.com/NetApp/trident", @@ -7743,15 +8813,57 @@ }, { "name": "csi-trident", + "displayName": "", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "vsphere,maas,edge-native", + "version": "23.01.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "https://github.com/NetApp/trident", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "csi-trident", + "displayName": "Trident", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "vsphere,maas,edge-native", + "version": "23.07.1", + "status": "active", + "packCreateDate": "2023-06-28", + "packLastModifiedDate": "2023-11-03", + "timeLastUpdated": "3 months", + "releaseType": "Community", + "contributor": "", + "docsURL": "https://github.com/NetApp/trident", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "csi-trident-addon", "displayName": "Trident", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "vsphere,maas", + "cloudTypesFormatted": "vsphere,maas,edge-native", "version": "23.07.1", "status": "active", "packCreateDate": "2023-06-28", - "packLastModifiedDate": "2023-09-28", - "timeLastUpdated": "1 months", + "packLastModifiedDate": "2023-11-03", + "timeLastUpdated": "3 months", "releaseType": "Community", "contributor": "", "docsURL": "https://github.com/NetApp/trident", @@ -7763,24 +8875,24 @@ "registry": "Palette Community Registry - OCI" }, { - "name": "csi-trident", - "displayName": "", + "name": "csi-trident-addon", + "displayName": "Trident", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "vsphere,maas,edge-native", "version": "23.01.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "status": "active", + "packCreateDate": "2023-06-28", + "packLastModifiedDate": "2023-11-03", + "timeLastUpdated": "3 months", + "releaseType": "Community", "contributor": "", "docsURL": "https://github.com/NetApp/trident", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pack-central", "registry": "Palette Community Registry - OCI" }, { @@ -7810,19 +8922,19 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "1.0.0", - "status": "deprecated", - "packCreateDate": "2020-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "version": "3.0.0", + "status": "active", + "packCreateDate": "2023-02-13", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "false", - "verified": true, + "fips": "true", + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", + "prodStatus": "unknown", + "gitRepo": "pax-fips", "registry": "Public Repo" }, { @@ -7831,20 +8943,20 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "2.3.1", + "version": "2.7.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-vsphere-csi", @@ -7852,11 +8964,11 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "2.7.0", + "version": "2.6.0", "status": "active", "packCreateDate": "2021-12-06", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -7865,7 +8977,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-vsphere-csi", @@ -7873,20 +8985,20 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "3.0.0", + "version": "2.3.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Spectro Addon Repo" }, { "name": "csi-vsphere-csi", @@ -7894,8 +9006,8 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "2.6.0", - "status": "unknown", + "version": "2.5.2", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -7905,9 +9017,9 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-vsphere-csi", @@ -7915,8 +9027,8 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "2.5.2", - "status": "deprecated", + "version": "2.6.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -7926,30 +9038,50 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-vsphere-csi", - "displayName": "", + "displayName": "vSphere CSI", "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "2.7.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "3.1.0", + "status": "active", + "packCreateDate": "2021-12-06", + "packLastModifiedDate": "2024-01-04", + "timeLastUpdated": "1 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "csi-vsphere-csi", + "displayName": "vSphere CSI", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "vsphere", + "version": "2.5.2", + "status": "deprecated", + "packCreateDate": "2021-12-06", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "csi-vsphere-csi", @@ -7957,8 +9089,8 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "2.3.0", - "status": "deprecated", + "version": "3.0.2", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -7968,9 +9100,9 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-vsphere-csi", @@ -7982,7 +9114,7 @@ "status": "active", "packCreateDate": "2021-12-06", "packLastModifiedDate": "2023-08-27", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -7991,7 +9123,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-vsphere-csi", @@ -7999,11 +9131,11 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "2.3.0", - "status": "deprecated", + "version": "2.7.0", + "status": "active", "packCreateDate": "2021-12-06", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -8012,7 +9144,27 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Spectro Addon Repo" + "registry": "Public Repo" + }, + { + "name": "csi-vsphere-csi", + "displayName": "vSphere CSI", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "vsphere", + "version": "3.1.2", + "status": "active", + "packCreateDate": "2021-12-06", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { "name": "csi-vsphere-csi", @@ -8033,7 +9185,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "csi-vsphere-csi", @@ -8041,8 +9193,8 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "1.0.0", - "status": "deprecated", + "version": "3.0.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -8052,7 +9204,7 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, @@ -8062,8 +9214,8 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "3.0.2", - "status": "unknown", + "version": "1.0.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -8073,7 +9225,7 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Palette Registry - OCI" }, @@ -8083,20 +9235,20 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "2.6.0", - "status": "active", + "version": "2.3.0", + "status": "deprecated", "packCreateDate": "2021-12-06", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-vsphere-csi", @@ -8104,11 +9256,11 @@ "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "2.5.2", + "version": "1.0.0", "status": "deprecated", - "packCreateDate": "2021-12-06", + "packCreateDate": "2020-08-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -8121,24 +9273,24 @@ }, { "name": "csi-vsphere-csi", - "displayName": "vSphere CSI", + "displayName": "", "layer": "csi", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "3.0.0", - "status": "active", - "packCreateDate": "2023-02-13", - "packLastModifiedDate": "2023-07-27", - "timeLastUpdated": "3 months", - "releaseType": "VerteX", + "version": "2.3.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", - "fips": "true", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { "name": "csi-vsphere-volume", @@ -8159,7 +9311,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "csi-vsphere-volume", @@ -8171,7 +9323,7 @@ "status": "deprecated", "packCreateDate": "2020-08-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/csi", @@ -8180,14 +9332,56 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "custom_os", + "displayName": "", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "custom", + "version": "1.0.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, + { + "name": "custom_os", + "displayName": "Operating System for Custom Cloud", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "custom", + "version": "1.0.0", + "status": "active", + "packCreateDate": "2023-12-05", + "packLastModifiedDate": "2023-12-06", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, { "name": "datadog", "displayName": "", "layer": "addon", "addonType": "logging", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", "version": "7.0.0", "status": "unknown", "packCreateDate": "", @@ -8208,7 +9402,7 @@ "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", "version": "10.5.3", "status": "unknown", "packCreateDate": "", @@ -8234,7 +9428,7 @@ "status": "active", "packCreateDate": "2022-01-26", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/dex", @@ -8251,40 +9445,19 @@ "layer": "addon", "addonType": "authentication", "cloudTypesFormatted": "all", - "version": "2.25.0", - "status": "deprecated", - "packCreateDate": "2020-02-13", + "version": "2.30.0", + "status": "active", + "packCreateDate": "2022-01-26", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/dex", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "dex", - "displayName": "", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.28.0", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/dex", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", "registry": "Public Repo" }, { @@ -8293,27 +9466,27 @@ "layer": "addon", "addonType": "authentication", "cloudTypesFormatted": "all", - "version": "2.30.0", - "status": "active", - "packCreateDate": "2022-01-26", + "version": "2.28.0", + "status": "deprecated", + "packCreateDate": "2020-02-13", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/dex", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "dex", "displayName": "", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", "version": "2.35.1", "status": "unknown", "packCreateDate": "", @@ -8334,9 +9507,9 @@ "displayName": "", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.30.0", - "status": "unknown", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "2.21.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -8346,16 +9519,16 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "dex", "displayName": "", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", "version": "2.25.0", "status": "deprecated", "packCreateDate": "", @@ -8373,24 +9546,24 @@ }, { "name": "dex", - "displayName": "", + "displayName": "Dex", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.21.0", + "cloudTypesFormatted": "all", + "version": "2.25.0", "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "packCreateDate": "2020-02-13", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/dex", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { "name": "dex", @@ -8398,11 +9571,11 @@ "layer": "addon", "addonType": "authentication", "cloudTypesFormatted": "all", - "version": "2.28.0", + "version": "2.21.0", "status": "deprecated", "packCreateDate": "2020-02-13", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/dex", @@ -8411,70 +9584,91 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "dex", - "displayName": "Dex", + "displayName": "", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "all", - "version": "2.21.0", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.28.0", "status": "deprecated", - "packCreateDate": "2020-02-13", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/dex", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "dex", + "displayName": "", + "layer": "addon", + "addonType": "authentication", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "2.30.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/dex", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { "name": "edge-k3s", - "displayName": "Palette Optimized K3S", + "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.27.2", - "status": "active", - "packCreateDate": "2023-04-01", - "packLastModifiedDate": "2023-08-19", - "timeLastUpdated": "2 months", - "releaseType": "VerteX", + "version": "1.26.4", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "unknown", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { "name": "edge-k3s", - "displayName": "Palette Optimized K3S", + "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24.6", + "version": "1.22.15", "status": "deprecated", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-08-09", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { "name": "edge-k3s", @@ -8499,44 +9693,44 @@ }, { "name": "edge-k3s", - "displayName": "Palette Optimized K3S", + "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", "version": "1.27.5", - "status": "active", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-10-20", - "timeLastUpdated": "1 weeks", - "releaseType": "Stable", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { "name": "edge-k3s", - "displayName": "Palette Optimized K3S", + "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.26.4", - "status": "active", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "version": "1.27.7", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { @@ -8545,20 +9739,19 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.13", + "version": "1.29.0", "status": "active", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-10-20", + "packLastModifiedDate": "2024-02-18", "timeLastUpdated": "1 weeks", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "" }, { "name": "edge-k3s", @@ -8566,20 +9759,19 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.2", + "version": "1.28.4", "status": "active", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-01-24", + "timeLastUpdated": "1 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "" }, { "name": "edge-k3s", @@ -8587,11 +9779,11 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.23.10", - "status": "deprecated", + "version": "1.23.12", + "status": "disabled", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -8608,8 +9800,8 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.23.12", - "status": "deprecated", + "version": "1.26.10", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -8619,9 +9811,9 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "edge-k3s", @@ -8629,7 +9821,7 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.0", + "version": "1.25.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -8650,20 +9842,19 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24.4", - "status": "deprecated", + "version": "1.28.5", + "status": "active", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", + "packLastModifiedDate": "2024-02-18", + "timeLastUpdated": "1 weeks", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "" }, { "name": "edge-k3s", @@ -8671,11 +9862,11 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.22.13", - "status": "deprecated", + "version": "1.22.15", + "status": "disabled", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -8692,7 +9883,7 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.13", + "version": "1.25.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -8705,7 +9896,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "edge-k3s", @@ -8713,7 +9904,7 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.26.4", + "version": "1.25.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -8726,7 +9917,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "edge-k3s", @@ -8734,7 +9925,7 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.2", + "version": "1.25.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -8747,7 +9938,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "edge-k3s", @@ -8755,8 +9946,8 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.26.8", - "status": "unknown", + "version": "1.24.6", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -8766,30 +9957,9 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "edge-k3s", - "displayName": "Palette Optimized K3S", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "edge-native", - "version": "1.22.15", - "status": "deprecated", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { "name": "edge-k3s", @@ -8814,65 +9984,44 @@ }, { "name": "edge-k3s", - "displayName": "Palette Optimized K3S", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "edge-native", - "version": "1.25.0", - "status": "active", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "edge-k3s", - "displayName": "Palette Optimized K3S", + "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.26.8", - "status": "active", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-10-20", - "timeLastUpdated": "1 weeks", - "releaseType": "Stable", + "version": "1.23.12", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", + "prodStatus": "deprecated", + "gitRepo": "", "registry": "Public Repo" }, { "name": "edge-k3s", - "displayName": "Palette Optimized K3S", + "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.23.12", + "version": "1.23.10", "status": "deprecated", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { @@ -8881,8 +10030,8 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24.6", - "status": "deprecated", + "version": "1.26.8", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -8892,7 +10041,7 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, @@ -8902,7 +10051,7 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.27.5", + "version": "1.28.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -8915,7 +10064,27 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" + }, + { + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.26.12", + "status": "active", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-18", + "timeLastUpdated": "1 weeks", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { "name": "edge-k3s", @@ -8936,53 +10105,115 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "edge-k3s", - "displayName": "", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.23.10", + "version": "1.25.13", "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { "name": "edge-k3s", - "displayName": "", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.22.15", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.23.10", + "status": "disabled", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "edge-k8s", - "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.28.2", + "status": "active", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-11-30", + "timeLastUpdated": "3 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.27.7", + "status": "active", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-11-30", + "timeLastUpdated": "3 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.27.9", + "status": "active", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-18", + "timeLastUpdated": "1 weeks", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", @@ -8990,7 +10221,7 @@ "status": "active", "packCreateDate": "2022-08-24", "packLastModifiedDate": "2023-10-20", - "timeLastUpdated": "1 weeks", + "timeLastUpdated": "4 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -9002,37 +10233,37 @@ "registry": "Palette Registry - OCI" }, { - "name": "edge-k8s", - "displayName": "", + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.2", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.27.2", + "status": "active", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2023-08-19", + "timeLastUpdated": "6 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "unknown", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax-fips", "registry": "Palette Registry - OCI" }, { - "name": "edge-k8s", - "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.2", + "version": "1.26.8", "status": "active", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2023-10-20", + "timeLastUpdated": "4 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -9041,19 +10272,19 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "edge-k8s", - "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24.6", - "status": "deprecated", + "version": "1.22.13", + "status": "disabled", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-08-09", - "timeLastUpdated": "2 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -9065,150 +10296,151 @@ "registry": "Public Repo" }, { - "name": "edge-k8s", - "displayName": "", + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.23.12", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.26.4", + "status": "active", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "edge-k8s", - "displayName": "", + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.22.15", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.26.10", + "status": "active", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-11-30", + "timeLastUpdated": "3 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "edge-k8s", - "displayName": "", + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24.6", + "version": "1.25.2", "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "edge-k8s", - "displayName": "", + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.27.2", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.25.15", + "status": "deprecated", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "edge-k8s", - "displayName": "", + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.26.4", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.25.0", + "status": "deprecated", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "edge-k8s", - "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.26.4", - "status": "active", - "packCreateDate": "2023-04-01", - "packLastModifiedDate": "2023-08-25", - "timeLastUpdated": "2 months", - "releaseType": "VerteX", + "version": "1.24.6", + "status": "disabled", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, + "fips": "false", + "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Public Repo" + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "edge-k8s", - "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", + "name": "edge-k3s", + "displayName": "Palette Optimized K3S", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24.13", - "status": "active", - "packCreateDate": "2023-04-01", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "VerteX", + "version": "1.24.4", + "status": "disabled", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax-fips", - "registry": "" + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { "name": "edge-k8s", @@ -9216,18 +10448,18 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.23.12", + "version": "1.25.15", "status": "deprecated", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, @@ -9258,19 +10490,19 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.27.2", + "version": "1.27.7", "status": "active", - "packCreateDate": "2023-04-01", - "packLastModifiedDate": "2023-08-22", - "timeLastUpdated": "2 months", - "releaseType": "VerteX", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-11-30", + "timeLastUpdated": "3 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", + "gitRepo": "pax", "registry": "Public Repo" }, { @@ -9283,7 +10515,7 @@ "status": "active", "packCreateDate": "2023-04-01", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -9299,20 +10531,20 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.13", + "version": "1.27.2", "status": "active", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-10-20", - "timeLastUpdated": "1 weeks", - "releaseType": "Stable", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2023-08-22", + "timeLastUpdated": "6 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "true", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "pax-fips", + "registry": "Public Repo" }, { "name": "edge-k8s", @@ -9320,11 +10552,11 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.26.8", + "version": "1.26.10", "status": "active", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-10-20", - "timeLastUpdated": "1 weeks", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -9337,24 +10569,24 @@ }, { "name": "edge-k8s", - "displayName": "", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.13", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.25.2", + "status": "deprecated", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { "name": "edge-k8s", @@ -9362,53 +10594,53 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.22.15", + "version": "1.25.13", "status": "deprecated", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { "name": "edge-k8s", - "displayName": "", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.27.5", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.28.2", + "status": "active", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-11-30", + "timeLastUpdated": "3 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "edge-microk8s", - "displayName": "Microk8s", + "name": "edge-k8s", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24", - "status": "deprecated", + "version": "1.22.15", + "status": "disabled", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -9417,36 +10649,35 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "edge-microk8s", - "displayName": "Microk8s", + "name": "edge-k8s", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25", + "version": "1.27.9", "status": "active", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2024-01-25", + "timeLastUpdated": "1 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "true", "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" }, { - "name": "edge-microk8s", + "name": "edge-k8s", "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25", + "version": "1.26.10", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -9459,169 +10690,104 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "edge-microk8s", - "displayName": "", + "name": "edge-k8s", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.26.12", + "status": "active", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2024-02-21", + "timeLastUpdated": "1 weeks", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "edge-native-byoi", - "displayName": "", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "edge-native", - "version": "1.0.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" }, { - "name": "edge-native-byoi", - "displayName": "BYOS Edge OS", - "layer": "os", + "name": "edge-k8s", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", + "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.0.0", + "version": "1.24.13", "status": "active", - "packCreateDate": "2023-06-28", - "packLastModifiedDate": "2023-06-28", - "timeLastUpdated": "4 months", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "VerteX", "contributor": "", - "docsURL": "", - "fips": "unknown", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", "verified": false, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "registry": "" }, { - "name": "edge-native-opensuse", + "name": "edge-k8s", "displayName": "", - "layer": "os", + "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "15.4", + "version": "1.25.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "edge-native-opensuse", - "displayName": "openSUSE", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "edge-native", - "version": "15.4", - "status": "active", - "packCreateDate": "2022-09-16", - "packLastModifiedDate": "2023-05-18", - "timeLastUpdated": "5 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "edge-native-ubuntu", - "displayName": "Ubuntu", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "edge-native", - "version": "20.04", - "status": "active", - "packCreateDate": "2022-09-16", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "edge-native-ubuntu", + "name": "edge-k8s", "displayName": "", - "layer": "os", + "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "22.04", + "version": "1.25.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "edge-native-ubuntu", + "name": "edge-k8s", "displayName": "", - "layer": "os", + "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "20.04", + "version": "1.25.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": true, "inProduction": true, @@ -9630,96 +10796,33 @@ "registry": "Public Repo" }, { - "name": "edge-native-ubuntu", - "displayName": "Ubuntu", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "edge-native", - "version": "22.04", - "status": "active", - "packCreateDate": "2022-09-16", - "packLastModifiedDate": "2023-05-18", - "timeLastUpdated": "5 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "edge-os", + "name": "edge-k8s", "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "edge-os", - "displayName": "EdgeOS", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.0", - "status": "active", - "packCreateDate": "2022-05-23", - "packLastModifiedDate": "2022-07-07", - "timeLastUpdated": "1 years", - "releaseType": "Experimental", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.23.12", + "version": "1.24.6", "status": "deprecated", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "edge-rke2", + "name": "edge-k8s", "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.26.4", + "version": "1.27.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -9732,57 +10835,57 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", + "name": "edge-k8s", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.13", - "status": "active", + "version": "1.24.6", + "status": "disabled", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-10-20", - "timeLastUpdated": "1 weeks", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", + "name": "edge-k8s", + "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.27.5", - "status": "active", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-10-20", - "timeLastUpdated": "1 weeks", - "releaseType": "Stable", + "version": "1.26.4", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": false, + "fips": "", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "edge-rke2", + "name": "edge-k8s", "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.22.13", + "version": "1.23.12", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -9795,16 +10898,16 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "edge-rke2", + "name": "edge-k8s", "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24.4", - "status": "deprecated", + "version": "1.27.5", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -9814,55 +10917,34 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "edge-native", - "version": "1.27.2", - "status": "active", - "packCreateDate": "2023-04-01", - "packLastModifiedDate": "2023-08-19", - "timeLastUpdated": "2 months", - "releaseType": "VerteX", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, - "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", - "displayName": "", + "name": "edge-k8s", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.27.5", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "version": "1.23.12", + "status": "disabled", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": false, + "fips": "false", + "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", + "prodStatus": "deprecated", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", + "name": "edge-k8s", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", @@ -9870,7 +10952,7 @@ "status": "active", "packCreateDate": "2023-04-01", "packLastModifiedDate": "2023-08-25", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -9882,55 +10964,54 @@ "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", + "name": "edge-k8s", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.2", + "version": "1.26.8", "status": "active", - "packCreateDate": "2023-04-01", - "packLastModifiedDate": "2023-07-12", - "timeLastUpdated": "3 months", - "releaseType": "VerteX", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", + "name": "edge-k8s", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.26.8", + "version": "1.29.0", "status": "active", "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-10-20", + "packLastModifiedDate": "2024-02-18", "timeLastUpdated": "1 weeks", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "" }, { - "name": "edge-rke2", + "name": "edge-k8s", "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.23.12", - "status": "deprecated", + "version": "1.27.2", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -9940,39 +11021,39 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", - "displayName": "", + "name": "edge-k8s", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.27.2", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "version": "1.27.5", + "status": "active", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-10-20", + "timeLastUpdated": "4 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": false, + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "edge-rke2", + "name": "edge-k8s", "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.22.15", - "status": "deprecated", + "version": "1.28.2", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -9982,39 +11063,38 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", + "name": "edge-k8s", + "displayName": "Palette eXtended Kubernetes Edge (PXK-E)", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24.6", + "version": "1.28.5", "status": "active", "packCreateDate": "2023-04-01", - "packLastModifiedDate": "2023-07-12", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-01-25", + "timeLastUpdated": "1 months", "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "true", - "verified": false, - "inProduction": true, - "prodStatus": "deprecated", + "verified": true, + "prodStatus": "deleted", "gitRepo": "pax-fips", - "registry": "Public Repo" + "registry": "" }, { - "name": "edge-rke2", + "name": "edge-k8s", "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.13", - "status": "unknown", + "version": "1.22.15", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -10024,17 +11104,17 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", + "name": "edge-microk8s", "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.23.10", + "version": "1.24", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -10050,55 +11130,55 @@ "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", - "displayName": "", + "name": "edge-microk8s", + "displayName": "Microk8s", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.2", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.25", + "status": "active", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "edge-rke2", - "displayName": "", + "name": "edge-microk8s", + "displayName": "Microk8s", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.24", + "status": "deprecated", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-10-14", + "timeLastUpdated": "4 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "edge-rke2", + "name": "edge-microk8s", "displayName": "", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24.6", - "status": "deprecated", + "version": "1.25", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -10108,611 +11188,588 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", + "name": "edge-native-byoi", "displayName": "", - "layer": "k8s", + "layer": "os", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.26.8", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", - "layer": "k8s", + "name": "edge-native-byoi", + "displayName": "BYOS Edge OS", + "layer": "os", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.22.13", - "status": "deprecated", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "version": "1.0.0", + "status": "active", + "packCreateDate": "2023-06-28", + "packLastModifiedDate": "2023-06-28", + "timeLastUpdated": "8 months", + "releaseType": "VerteX", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, + "docsURL": "", + "fips": "unknown", + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", - "layer": "k8s", + "name": "edge-native-opensuse", + "displayName": "openSUSE", + "layer": "os", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.23.10", - "status": "deprecated", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "version": "15.4", + "status": "active", + "packCreateDate": "2022-09-16", + "packLastModifiedDate": "2023-05-18", + "timeLastUpdated": "9 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", - "layer": "k8s", + "name": "edge-native-opensuse", + "displayName": "", + "layer": "os", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.24.4", - "status": "deprecated", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", - "releaseType": "Stable", + "version": "15.4", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, + "docsURL": "", + "fips": "", + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", - "layer": "k8s", + "name": "edge-native-ubuntu", + "displayName": "Ubuntu", + "layer": "os", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.25.0", + "version": "22.04", "status": "active", - "packCreateDate": "2023-04-01", - "packLastModifiedDate": "2023-07-12", - "timeLastUpdated": "3 months", - "releaseType": "VerteX", + "packCreateDate": "2022-09-16", + "packLastModifiedDate": "2023-05-18", + "timeLastUpdated": "9 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", + "docsURL": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "edge-rke2", - "displayName": "Palette Optimized RKE2", - "layer": "k8s", + "name": "edge-native-ubuntu", + "displayName": "Ubuntu", + "layer": "os", "addonType": "", "cloudTypesFormatted": "edge-native", - "version": "1.22.15", - "status": "deprecated", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "version": "20.04", + "status": "active", + "packCreateDate": "2022-09-16", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "elastic-fluentbit-kibana", - "displayName": "Elasticsearch-Fluent Bit-Kibana", - "layer": "addon", - "addonType": "logging", - "cloudTypesFormatted": "all", - "version": "6.7.0", - "status": "active", - "packCreateDate": "2020-01-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "false", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "elastic-fluentd-kibana", + "name": "edge-native-ubuntu", "displayName": "", - "layer": "addon", - "addonType": "logging", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "7.17.3", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "20.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kibana", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "elastic-fluentd-kibana", + "name": "edge-native-ubuntu", "displayName": "", - "layer": "addon", - "addonType": "logging", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "6.7.0", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "22.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kibana", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "elastic-fluentd-kibana", - "displayName": "Elasticsearch-Fluentd-Kibana", - "layer": "addon", - "addonType": "logging", - "cloudTypesFormatted": "all", - "version": "6.7.0", - "status": "active", - "packCreateDate": "2020-01-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kibana", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "elastic-fluentd-kibana", - "displayName": "Elasticsearch-Fluentd-Kibana", + "name": "edge-os", + "displayName": "EdgeOS", "layer": "addon", - "addonType": "logging", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "7.17.3", + "version": "1.0", "status": "active", - "packCreateDate": "2022-08-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "2022-05-23", + "packLastModifiedDate": "2022-07-07", + "timeLastUpdated": "1 years", + "releaseType": "Experimental", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kibana", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "external-dns", + "name": "edge-os", "displayName": "", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.13.5", + "addonType": "system app", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "1.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "external-dns", - "displayName": "ExternalDNS", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "all", - "version": "0.7.2", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.25.13", "status": "deprecated", - "packCreateDate": "2020-07-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "external-dns", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.7.2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.24.4", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "external-dns", - "displayName": "", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.13.1", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.25.2", + "status": "active", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2023-07-12", + "timeLastUpdated": "7 months", + "releaseType": "VerteX", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", - "fips": "", - "verified": true, + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax-fips", "registry": "Palette Registry - OCI" }, { - "name": "external-dns", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.13.4", - "status": "unknown", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.22.13", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "external-dns", - "displayName": "ExternalDNS", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "all", - "version": "0.13.5", - "status": "active", - "packCreateDate": "2020-07-12", - "packLastModifiedDate": "2023-09-12", - "timeLastUpdated": "1 months", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.22.15", + "status": "disabled", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "external-dns", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.23.10", + "status": "disabled", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.22.13", + "status": "disabled", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.28.5", + "status": "active", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2024-01-25", + "timeLastUpdated": "1 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" + }, + { + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.26.12", + "status": "active", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2024-01-25", + "timeLastUpdated": "1 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" + }, + { + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.12.2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.27.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "external-dns", - "displayName": "ExternalDNS", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "all", - "version": "0.13.1", - "status": "active", - "packCreateDate": "2020-07-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "name": "edge-rke2", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.27.2", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", - "fips": "false", - "verified": true, + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "external-dns", - "displayName": "ExternalDNS", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "all", - "version": "0.12.2", - "status": "active", - "packCreateDate": "2020-07-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "name": "edge-rke2", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.26.8", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "external-dns", - "displayName": "ExternalDNS", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "all", - "version": "0.13.4", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.29.0", "status": "active", - "packCreateDate": "2020-07-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-18", + "timeLastUpdated": "1 weeks", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "verified": false, + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "" }, { - "name": "external-secrets", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "8.5.0", - "status": "deprecated", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.26.4", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "external-secrets", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "8.5.0", - "status": "deprecated", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.26.10", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "external-secrets", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.5.6", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.27.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Spectro Addon Repo" + "registry": "Palette Registry - OCI" }, { - "name": "external-secrets", - "displayName": "External Secrets", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "all", - "version": "8.5.0", - "status": "deprecated", - "packCreateDate": "2022-05-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Spectro Addon Repo" - }, - { - "name": "external-secrets-operator", - "displayName": "External Secrets Operator", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "all", - "version": "0.5.6", - "status": "deprecated", - "packCreateDate": "2022-05-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "external-secrets-operator", - "displayName": "External Secrets Operator", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "all", - "version": "0.7.1", - "status": "active", - "packCreateDate": "2022-05-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "name": "edge-rke2", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.25.15", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "external-secrets-operator", - "displayName": "External Secrets Operator", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "all", - "version": "0.9.4", - "status": "active", - "packCreateDate": "2022-05-12", - "packLastModifiedDate": "2023-09-15", - "timeLastUpdated": "1 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "external-secrets-operator", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.9.4", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.25.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": true, "inProduction": true, @@ -10721,103 +11778,103 @@ "registry": "Palette Registry - OCI" }, { - "name": "external-secrets-operator", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.7.1", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.25.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "external-secrets-operator", - "displayName": "External Secrets Operator", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "all", - "version": "0.6.0", + "name": "edge-rke2", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.24.6", "status": "deprecated", - "packCreateDate": "2022-05-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "external-secrets-operator", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.6.0", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.23.12", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "external-secrets-operator", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.8.1", - "status": "unknown", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.23.10", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "external-secrets-operator", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.5.6", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.22.15", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": true, "inProduction": true, @@ -10826,439 +11883,416 @@ "registry": "Palette Registry - OCI" }, { - "name": "external-secrets-operator", - "displayName": "External Secrets Operator", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "all", - "version": "0.8.1", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.27.9", "status": "active", - "packCreateDate": "2022-05-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2024-01-25", + "timeLastUpdated": "1 months", + "releaseType": "VerteX", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "external-snapshotter", - "displayName": "CSI Snapshotter", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "4.0.1", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" - }, - { - "name": "external-snapshotter", - "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.1", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" }, { - "name": "f5", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.26.1", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.28.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "falco", - "displayName": "", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.0.18", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/falco", - "fips": "", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.28.2", + "status": "active", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-11-30", + "timeLastUpdated": "3 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "falco", - "displayName": "Falco", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "1.0.10", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.27.7", "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/falco", - "fips": "false", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2023-12-27", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "pax-fips", "registry": "Public Repo" }, { - "name": "falco", - "displayName": "Falco", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "1.13.1", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.27.5", "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-10-20", + "timeLastUpdated": "4 months", "releaseType": "Stable", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/falco", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "falco", - "displayName": "", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.11", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/falco", - "fips": "", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.27.2", + "status": "active", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2023-08-19", + "timeLastUpdated": "6 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pax-fips", + "registry": "Public Repo" }, { - "name": "falco", - "displayName": "Falco", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "1.0.11", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.26.8", "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", "releaseType": "Stable", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/falco", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "falco", - "displayName": "Falco", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "1.16.3", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.26.4", "status": "active", - "packCreateDate": "2022-03-04", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/falco", - "fips": "false", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2024-02-21", + "timeLastUpdated": "1 weeks", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "pax-fips", + "registry": "Public Repo" }, { - "name": "falco", - "displayName": "", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.1", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/falco", - "fips": "", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.26.10", + "status": "active", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2023-12-27", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax-fips", "registry": "Public Repo" }, { - "name": "falco", + "name": "edge-rke2", "displayName": "", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.16.3", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.25.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/falco", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "falco", - "displayName": "", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.10", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/falco", - "fips": "", - "verified": false, + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.25.15", + "status": "deprecated", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "falco", - "displayName": "Falco", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "2.0.18", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.25.0", "status": "active", - "packCreateDate": "2022-03-04", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/falco", - "fips": "false", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2023-07-12", + "timeLastUpdated": "7 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "pax-fips", + "registry": "Public Repo" }, { - "name": "falcon-sensor", - "displayName": "Falcon Sensor", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "eks", - "version": "1.0.0", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.24.4", + "status": "disabled", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "falcon-sensor", - "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "eks", - "version": "1.0.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.24.6", + "status": "active", + "packCreateDate": "2023-04-01", + "packLastModifiedDate": "2023-07-12", + "timeLastUpdated": "7 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", "verified": false, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", + "prodStatus": "deprecated", + "gitRepo": "pax-fips", "registry": "Public Repo" }, { - "name": "fluentbit", - "displayName": "Fluentbit", + "name": "edge-rke2", + "displayName": "Palette Optimized RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "edge-native", + "version": "1.23.12", + "status": "disabled", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "elastic-fluentbit-kibana", + "displayName": "Elasticsearch-Fluent Bit-Kibana", "layer": "addon", "addonType": "logging", "cloudTypesFormatted": "all", - "version": "1.9.6", + "version": "6.7.0", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", + "packCreateDate": "2020-01-02", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/fluentbit", + "docsURL": "", "fips": "false", "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Public Repo" + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { - "name": "fluentbit", + "name": "elastic-fluentd-kibana", "displayName": "", "layer": "addon", "addonType": "logging", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.3.5", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "7.17.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/fluentbit", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kibana", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Palette Registry - OCI" }, { - "name": "fluentbit", + "name": "elastic-fluentd-kibana", "displayName": "", "layer": "addon", "addonType": "logging", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.6", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "6.7.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/fluentbit", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kibana", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" }, { - "name": "fluentbit", - "displayName": "Fluentbit", + "name": "elastic-fluentd-kibana", + "displayName": "Elasticsearch-Fluentd-Kibana", "layer": "addon", "addonType": "logging", "cloudTypesFormatted": "all", - "version": "1.3.5", + "version": "7.17.3", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/fluentbit", + "packCreateDate": "2022-08-12", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kibana", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "flux-cd", - "displayName": "Flux2", + "name": "elastic-fluentd-kibana", + "displayName": "Elasticsearch-Fluentd-Kibana", "layer": "addon", - "addonType": "system app", + "addonType": "logging", "cloudTypesFormatted": "all", - "version": "2.6.0", + "version": "6.7.0", "status": "active", - "packCreateDate": "2022-01-14", + "packCreateDate": "2020-01-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kibana", "fips": "false", "verified": true, "inProduction": true, @@ -11267,124 +12301,145 @@ "registry": "Palette Registry - OCI" }, { - "name": "flux-cd", + "name": "external-dns", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.0", - "status": "unknown", + "addonType": "load balancer", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "0.7.2", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "gatekeeper", - "displayName": "", + "name": "external-dns", + "displayName": "ExternalDNS", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws", - "version": "3.8.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "addonType": "load balancer", + "cloudTypesFormatted": "all", + "version": "0.13.1", + "status": "active", + "packCreateDate": "2020-07-12", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", - "fips": "", - "verified": false, + "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Spectro Addon Repo" + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "generic-byoi", - "displayName": "Bring Your Own OS (BYO-OS)", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,maas,gcp,openstack", - "version": "1.0.0", + "name": "external-dns", + "displayName": "ExternalDNS", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "all", + "version": "0.7.2", + "status": "deprecated", + "packCreateDate": "2020-07-12", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "external-dns", + "displayName": "ExternalDNS", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "all", + "version": "0.13.5", "status": "active", - "packCreateDate": "2023-06-28", - "packLastModifiedDate": "2023-08-27", - "timeLastUpdated": "2 months", - "releaseType": "VerteX", + "packCreateDate": "2020-07-12", + "packLastModifiedDate": "2023-09-12", + "timeLastUpdated": "5 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", - "fips": "unknown", - "verified": false, + "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "generic-byoi", + "name": "external-dns", "displayName": "", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,maas,gcp,openstack", - "version": "1.0.0", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "0.13.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-libvirt", - "displayName": "Generic VM Libvirt", + "name": "external-dns", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.5", - "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-08-03", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "addonType": "load balancer", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "0.13.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, + "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "fips": "", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-libvirt", + "name": "external-dns", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.0", + "addonType": "load balancer", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "0.13.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", "fips": "", "verified": true, "inProduction": true, @@ -11393,40 +12448,60 @@ "registry": "Public Repo" }, { - "name": "generic-vm-libvirt", - "displayName": "Generic VM Libvirt", + "name": "external-dns", + "displayName": "ExternalDNS", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.4", + "addonType": "load balancer", + "cloudTypesFormatted": "all", + "version": "0.13.4", "status": "active", - "packCreateDate": "2022-06-22", + "packCreateDate": "2020-07-12", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "generic-vm-libvirt", + "name": "external-dns", + "displayName": "ExternalDNS", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "all", + "version": "0.13.6", + "status": "active", + "packCreateDate": "2020-07-12", + "packLastModifiedDate": "2024-01-19", + "timeLastUpdated": "1 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "external-dns", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.2", + "addonType": "load balancer", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "0.12.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", "fips": "", "verified": true, "inProduction": true, @@ -11435,208 +12510,228 @@ "registry": "Public Repo" }, { - "name": "generic-vm-libvirt", - "displayName": "", + "name": "external-dns", + "displayName": "ExternalDNS", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "addonType": "load balancer", + "cloudTypesFormatted": "all", + "version": "0.12.2", + "status": "active", + "packCreateDate": "2020-07-12", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", - "fips": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-dns", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-libvirt", + "name": "external-secrets", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.6", + "addonType": "authentication", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "8.5.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Spectro Addon Repo" }, { - "name": "generic-vm-libvirt", - "displayName": "", + "name": "external-secrets", + "displayName": "External Secrets", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.4", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "8.5.0", + "status": "deprecated", + "packCreateDate": "2022-05-12", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", - "fips": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-libvirt", + "name": "external-secrets", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.5", + "addonType": "authentication", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "0.5.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Spectro Addon Repo" }, { - "name": "generic-vm-libvirt", + "name": "external-secrets", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.1", - "status": "unknown", + "addonType": "authentication", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "8.5.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "generic-vm-libvirt", - "displayName": "Generic VM Libvirt", + "name": "external-secrets-operator", + "displayName": "External Secrets Operator", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.6", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "0.7.1", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-10-12", - "timeLastUpdated": "2 weeks", - "releaseType": "Experimental", + "packCreateDate": "2022-05-12", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-libvirt", - "displayName": "Generic VM Libvirt", + "name": "external-secrets-operator", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.1", - "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "addonType": "authentication", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "0.9.4", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "generic-vm-libvirt", - "displayName": "Generic VM Libvirt", + "name": "external-secrets-operator", + "displayName": "External Secrets Operator", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.3", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "0.9.7", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", + "packCreateDate": "2022-05-12", + "packLastModifiedDate": "2023-11-27", "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "generic-vm-libvirt", - "displayName": "Generic VM Libvirt", + "name": "external-secrets-operator", + "displayName": "External Secrets Operator", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.2", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "0.9.11", "status": "active", - "packCreateDate": "2022-06-22", + "packCreateDate": "2022-05-12", + "packLastModifiedDate": "2024-02-17", + "timeLastUpdated": "1 weeks", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "external-secrets-operator", + "displayName": "External Secrets Operator", + "layer": "addon", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "0.5.6", + "status": "deprecated", + "packCreateDate": "2022-05-12", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "generic-vm-libvirt", - "displayName": "Generic VM Libvirt", + "name": "external-secrets-operator", + "displayName": "External Secrets Operator", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.0", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "0.8.1", "status": "active", - "packCreateDate": "2022-06-22", + "packCreateDate": "2022-05-12", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", "fips": "false", "verified": true, "inProduction": true, @@ -11645,180 +12740,201 @@ "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-vsphere", - "displayName": "Generic VM vSphere", + "name": "external-secrets-operator", + "displayName": "External Secrets Operator", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.0", - "status": "active", - "packCreateDate": "2022-06-22", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "0.6.0", + "status": "deprecated", + "packCreateDate": "2022-05-12", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-vsphere", + "name": "external-secrets-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.5", + "addonType": "authentication", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "0.8.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "external-secrets-operator", + "displayName": "", + "layer": "addon", + "addonType": "authentication", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "0.5.6", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-vsphere", - "displayName": "Generic VM vSphere", + "name": "external-secrets-operator", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.5", - "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "addonType": "authentication", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "0.9.7", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-vsphere", - "displayName": "Generic VM vSphere", + "name": "external-secrets-operator", + "displayName": "External Secrets Operator", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.7", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "0.9.4", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "packCreateDate": "2022-05-12", + "packLastModifiedDate": "2023-09-15", + "timeLastUpdated": "5 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-vsphere", + "name": "external-secrets-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.6", - "status": "unknown", + "addonType": "authentication", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "0.6.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "generic-vm-vsphere", - "displayName": "Generic VM vSphere", + "name": "external-secrets-operator", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.3", - "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "addonType": "authentication", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "0.7.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/external-secrets-operator", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "generic-vm-vsphere", - "displayName": "Generic VM vSphere", + "name": "external-snapshotter", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.2", - "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.0.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "generic-vm-vsphere", - "displayName": "Generic VM vSphere", + "name": "external-snapshotter", + "displayName": "CSI Snapshotter", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.4", + "cloudTypesFormatted": "all", + "version": "4.0.1", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" }, { - "name": "generic-vm-vsphere", + "name": "f5", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.10", + "addonType": "load balancer", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "0.26.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -11834,292 +12950,355 @@ "registry": "Public Repo" }, { - "name": "generic-vm-vsphere", - "displayName": "Generic VM vSphere", + "name": "falco", + "displayName": "Falco", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.9", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "1.0.11", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-29", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "", - "docsURL": "", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/falco", "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "falco", + "displayName": "", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "2.0.18", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/falco", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "generic-vm-vsphere", - "displayName": "Generic VM vSphere", + "name": "falco", + "displayName": "Falco", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.1", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "1.16.3", "status": "active", - "packCreateDate": "2022-06-22", + "packCreateDate": "2022-03-04", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "", - "docsURL": "", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/falco", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-vsphere", + "name": "falco", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.1", + "addonType": "security", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.16.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/falco", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "falco", + "displayName": "Falco", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "1.13.1", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/falco", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-vsphere", - "displayName": "", + "name": "falco", + "displayName": "Falco", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": true, + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "1.0.10", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/falco", + "fips": "false", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-vsphere", - "displayName": "", + "name": "falco", + "displayName": "Falco", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.8", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": true, + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "2.0.18", + "status": "active", + "packCreateDate": "2022-03-04", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/falco", + "fips": "false", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "generic-vm-vsphere", + "name": "falco", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.2", + "addonType": "security", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "1.0.11", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/falco", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "generic-vm-vsphere", + "name": "falco", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.3", + "addonType": "security", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "1.0.10", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/falco", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "generic-vm-vsphere", + "name": "falco", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.9", + "addonType": "security", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.13.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/falco", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "generic-vm-vsphere", - "displayName": "Generic VM vSphere", + "name": "falcon-sensor", + "displayName": "Falcon Sensor", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.8", + "cloudTypesFormatted": "eks", + "version": "1.0.0", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "pack-central", "registry": "Public Repo" }, { - "name": "generic-vm-vsphere", + "name": "falcon-sensor", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.7", + "cloudTypesFormatted": "eks", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", + "releaseType": "community", + "contributor": "spectrocloud", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Palette Community Registry - OCI" }, { - "name": "generic-vm-vsphere", + "name": "fluentbit", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.4", + "addonType": "logging", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "1.3.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/fluentbit", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Palette Community Registry - OCI" }, { - "name": "generic-vm-vsphere", - "displayName": "Generic VM vSphere", + "name": "fluentbit", + "displayName": "Fluentbit", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.6", + "addonType": "logging", + "cloudTypesFormatted": "all", + "version": "1.3.5", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "", - "docsURL": "", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/fluentbit", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "pack-central", + "registry": "Public Repo" }, { - "name": "generic-vm-vsphere", - "displayName": "Generic VM vSphere", + "name": "fluentbit", + "displayName": "Fluentbit", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.10", + "addonType": "logging", + "cloudTypesFormatted": "all", + "version": "1.9.6", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-10-12", - "timeLastUpdated": "2 weeks", - "releaseType": "Experimental", - "contributor": "", - "docsURL": "", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/fluentbit", "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "pack-central", + "registry": "Public Repo" }, { - "name": "gke-csi-gcp-driver", + "name": "fluentbit", "displayName": "", - "layer": "csi", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.0.0", + "layer": "addon", + "addonType": "logging", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "1.9.6", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/fluentbit", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "flux-cd", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "2.6.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, @@ -12128,19 +13307,40 @@ "registry": "Public Repo" }, { - "name": "gke-csi-gcp-driver", - "displayName": "GKE Managed GCE Persistent Disk CSI", - "layer": "csi", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.0.0", + "name": "flux-cd", + "displayName": "Flux2", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "2.6.0", "status": "active", - "packCreateDate": "2023-04-14", + "packCreateDate": "2022-01-14", "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "flux-cd", + "displayName": "Flux2", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "2.10.2", + "status": "active", + "packCreateDate": "2022-01-14", + "packLastModifiedDate": "2023-11-25", "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, @@ -12149,33 +13349,33 @@ "registry": "Palette Registry - OCI" }, { - "name": "gloo", + "name": "flux-cd", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.2.18", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.10.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "gvisor", + "name": "gatekeeper", "displayName": "", "layer": "addon", "addonType": "security", "cloudTypesFormatted": "aws", - "version": "0.1.0", + "version": "3.8.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -12191,205 +13391,184 @@ "registry": "Spectro Addon Repo" }, { - "name": "harbor", - "displayName": "Harbor", - "layer": "addon", - "addonType": "registry", - "cloudTypesFormatted": "all", - "version": "1.9.3", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", + "name": "generic-byoi", + "displayName": "", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,maas,gcp,openstack", + "version": "1.0.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "harbor", - "displayName": "Harbor", - "layer": "addon", - "addonType": "registry", - "cloudTypesFormatted": "all", - "version": "1.9.0", + "name": "generic-byoi", + "displayName": "Bring Your Own OS (BYO-OS)", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,maas,gcp,openstack", + "version": "1.0.0", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", + "packCreateDate": "2023-06-28", + "packLastModifiedDate": "2024-02-16", + "timeLastUpdated": "2 weeks", + "releaseType": "VerteX", + "contributor": "", "docsURL": "", - "fips": "false", + "fips": "unknown", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" }, { - "name": "harbor", - "displayName": "Harbor", + "name": "generic-vm-libvirt", + "displayName": "Generic VM Libvirt", "layer": "addon", - "addonType": "registry", - "cloudTypesFormatted": "all", - "version": "1.8.0", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.2", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", "docsURL": "", "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" - }, - { - "name": "harbor", - "displayName": "", - "layer": "addon", - "addonType": "registry", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "harbor", - "displayName": "", + "name": "generic-vm-libvirt", + "displayName": "Generic VM Libvirt", "layer": "addon", - "addonType": "registry", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.6", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-10-12", + "timeLastUpdated": "4 months", + "releaseType": "Experimental", + "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "harbor", - "displayName": "", + "name": "generic-vm-libvirt", + "displayName": "Generic VM Libvirt", "layer": "addon", - "addonType": "registry", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.5", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-08-03", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "heartbeat", - "displayName": "Heartbeat", + "name": "generic-vm-libvirt", + "displayName": "Generic VM Libvirt", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "1.0.0", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.3", "status": "active", - "packCreateDate": "2020-03-07", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", - "contributor": "spectrocloud", + "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "heartbeat", + "name": "generic-vm-libvirt", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.0", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "spectrocloud", + "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "image-swap", + "name": "generic-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.4.2", - "status": "deprecated", + "cloudTypesFormatted": "libvirt", + "version": "1.0.5", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "image-swap", - "displayName": "Image Swap", + "name": "generic-vm-libvirt", + "displayName": "Generic VM Libvirt", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.5.1", + "cloudTypesFormatted": "libvirt", + "version": "1.0.0", "status": "active", - "packCreateDate": "2021-12-08", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -12401,58 +13580,37 @@ "registry": "Palette Registry - OCI" }, { - "name": "image-swap", - "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5.2", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "image-swap", - "displayName": "Image Swap", + "name": "generic-vm-libvirt", + "displayName": "Generic VM Libvirt", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.4.2", - "status": "deprecated", - "packCreateDate": "2021-12-08", + "cloudTypesFormatted": "libvirt", + "version": "1.0.1", + "status": "active", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "image-swap", - "displayName": "Image Swap", + "name": "generic-vm-libvirt", + "displayName": "Generic VM Libvirt", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.5.2", + "cloudTypesFormatted": "libvirt", + "version": "1.0.4", "status": "active", - "packCreateDate": "2021-12-08", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -12464,12 +13622,12 @@ "registry": "Palette Registry - OCI" }, { - "name": "image-swap", + "name": "generic-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5.1", + "cloudTypesFormatted": "libvirt", + "version": "1.0.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -12485,103 +13643,82 @@ "registry": "Public Repo" }, { - "name": "istio", - "displayName": "Istio", + "name": "generic-vm-libvirt", + "displayName": "", "layer": "addon", - "addonType": "servicemesh", - "cloudTypesFormatted": "all", - "version": "1.14.3", - "status": "active", - "packCreateDate": "2022-10-14", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/istio", - "fips": "false", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "istio", - "displayName": "Istio", - "layer": "addon", - "addonType": "servicemesh", - "cloudTypesFormatted": "all", - "version": "1.6.2", - "status": "deprecated", - "packCreateDate": "2020-02-13", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/istio", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "istio", - "displayName": "Istio", + "name": "generic-vm-libvirt", + "displayName": "", "layer": "addon", - "addonType": "servicemesh", - "cloudTypesFormatted": "all", - "version": "1.17.2", - "status": "active", - "packCreateDate": "2023-05-12", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.6", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/istio", - "fips": "false", - "verified": true, + "docsURL": "", + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "istio", + "name": "generic-vm-libvirt", "displayName": "", "layer": "addon", - "addonType": "servicemesh", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.3", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/istio", + "contributor": "", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "istio", + "name": "generic-vm-libvirt", "displayName": "", "layer": "addon", - "addonType": "servicemesh", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.17.2", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/istio", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, @@ -12590,81 +13727,103 @@ "registry": "Public Repo" }, { - "name": "istio", + "name": "generic-vm-vsphere", "displayName": "", "layer": "addon", - "addonType": "servicemesh", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.6.2", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.10", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/istio", + "releaseType": "", + "contributor": "", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "k3s", - "displayName": "K3S", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "edge-native", - "version": "1.24.4", + "name": "generic-vm-vsphere", + "displayName": "Generic VM vSphere", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.0", "status": "active", - "packCreateDate": "2022-08-24", - "packLastModifiedDate": "2022-09-15", - "timeLastUpdated": "1 years", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "false", - "verified": false, - "prodStatus": "deleted", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "" + "registry": "Public Repo" }, { - "name": "k8s-dashboard", - "displayName": "Kubernetes Dashboard", + "name": "generic-vm-vsphere", + "displayName": "Generic VM vSphere", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "2.0.1", - "status": "deprecated", - "packCreateDate": "2020-01-13", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.5", + "status": "active", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "generic-vm-vsphere", + "displayName": "Generic VM vSphere", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.9", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-29", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "k8s-dashboard", + "name": "generic-vm-vsphere", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.1", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, @@ -12673,124 +13832,166 @@ "registry": "Public Repo" }, { - "name": "k8s-dashboard", - "displayName": "Kubernetes Dashboard", + "name": "generic-vm-vsphere", + "displayName": "Generic VM vSphere", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "2.7.0", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.6", "status": "active", - "packCreateDate": "2021-11-10", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "k8s-dashboard", - "displayName": "Kubernetes Dashboard", + "name": "generic-vm-vsphere", + "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "2.4.0", - "status": "deprecated", - "packCreateDate": "2021-11-10", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "generic-vm-vsphere", + "displayName": "Generic VM vSphere", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.4", + "status": "active", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "k8s-dashboard", - "displayName": "", + "name": "generic-vm-vsphere", + "displayName": "Generic VM vSphere", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.0", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.3", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", - "fips": "", + "docsURL": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "k8s-dashboard", - "displayName": "Kubernetes Dashboard", + "name": "generic-vm-vsphere", + "displayName": "Generic VM vSphere", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "2.5.1", - "status": "deprecated", - "packCreateDate": "2021-11-10", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.2", + "status": "active", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "k8s-dashboard", - "displayName": "", + "name": "generic-vm-vsphere", + "displayName": "Generic VM vSphere", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.5.1", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.10", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-10-12", + "timeLastUpdated": "4 months", + "releaseType": "Experimental", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", - "fips": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "generic-vm-vsphere", + "displayName": "Generic VM vSphere", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.1", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "k8s-dashboard", - "displayName": "Kubernetes Dashboard", + "name": "generic-vm-vsphere", + "displayName": "Generic VM vSphere", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "2.6.0", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.7", "status": "active", - "packCreateDate": "2021-11-10", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, @@ -12799,292 +14000,208 @@ "registry": "Palette Registry - OCI" }, { - "name": "k8s-dashboard", + "name": "generic-vm-vsphere", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.0", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "k8s-dashboard", + "name": "generic-vm-vsphere", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.0", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "k8s-dashboard", + "name": "generic-vm-vsphere", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.0.1", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "k8s-dashboard", + "name": "generic-vm-vsphere", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.4.0", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.6", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "k8s-dashboard", - "displayName": "Kubernetes Dashboard", - "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "2.1.0", - "status": "deprecated", - "packCreateDate": "2020-01-13", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "k8s-dashboard", - "displayName": "Kubernetes Dashboard", + "name": "generic-vm-vsphere", + "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "2.6.1", - "status": "active", - "packCreateDate": "2021-11-10", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", - "fips": "false", + "docsURL": "", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "k8sgpt-operator", + "name": "generic-vm-vsphere", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.0.20", + "cloudTypesFormatted": "vsphere", + "version": "1.0.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "spectrocloud", + "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "k8sgpt-operator", - "displayName": "K8sGPT Operator", + "name": "generic-vm-vsphere", + "displayName": "Generic VM vSphere", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "0.0.20", + "cloudTypesFormatted": "vsphere", + "version": "1.0.8", "status": "active", - "packCreateDate": "2023-05-22", - "packLastModifiedDate": "2023-08-09", - "timeLastUpdated": "2 months", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Experimental", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "kafka-operator", - "displayName": "Kafka", - "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "all", - "version": "0.32.0", - "status": "active", - "packCreateDate": "2022-11-23", - "packLastModifiedDate": "2022-12-10", - "timeLastUpdated": "10 months", - "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kafka-operator", + "name": "generic-vm-vsphere", "displayName": "", "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.32.0", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "kong", - "displayName": "Kong", - "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "all", - "version": "2.13.1", - "status": "active", - "packCreateDate": "2020-01-10", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kong", - "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kong", - "displayName": "Kong", - "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "all", - "version": "2.26.5", - "status": "active", - "packCreateDate": "2020-01-10", - "packLastModifiedDate": "2023-09-20", - "timeLastUpdated": "1 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kong", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "kong", + "name": "generic-vm-vsphere", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.4", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.3", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kong", - "displayName": "Kong", - "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "all", - "version": "2.17.0", + "name": "gke-csi-gcp-driver", + "displayName": "GKE Managed GCE Persistent Disk CSI", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "gke", + "version": "1.0.0", "status": "active", - "packCreateDate": "2020-01-10", + "packCreateDate": "2023-04-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "false", "verified": true, "inProduction": true, @@ -13093,180 +14210,159 @@ "registry": "Public Repo" }, { - "name": "kong", + "name": "gke-csi-gcp-driver", "displayName": "", - "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.13.1", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "gke", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kong", + "name": "gloo", "displayName": "", "layer": "addon", "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.26.5", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "1.2.18", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kong", + "name": "gvisor", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.17.0", + "addonType": "security", + "cloudTypesFormatted": "aws", + "version": "0.1.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Spectro Addon Repo" }, { - "name": "kong", - "displayName": "Kong", + "name": "harbor", + "displayName": "Harbor", "layer": "addon", - "addonType": "ingress", + "addonType": "registry", "cloudTypesFormatted": "all", - "version": "1.4", - "status": "deprecated", - "packCreateDate": "2020-01-10", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "version": "1.8.0", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" }, { - "name": "konvoy-defaultstorageclass", - "displayName": "Default storage classes", + "name": "harbor", + "displayName": "Harbor", "layer": "addon", - "addonType": "system app", + "addonType": "registry", "cloudTypesFormatted": "all", - "version": "0.0.6", + "version": "1.9.0", "status": "active", - "packCreateDate": "2022-02-14", - "packLastModifiedDate": "2022-02-14", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", "timeLastUpdated": "1 years", - "releaseType": "Stable", - "contributor": "", + "releaseType": "Community", + "contributor": "spectrocloud", "docsURL": "", "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" }, { - "name": "konvoy-defaultstorageclass", - "displayName": "", + "name": "harbor", + "displayName": "Harbor", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.0.6", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", - "contributor": "", + "addonType": "registry", + "cloudTypesFormatted": "all", + "version": "1.9.3", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" }, { - "name": "konvoy-nvidia", + "name": "harbor", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.4.4", + "addonType": "registry", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "1.9.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", - "contributor": "", + "releaseType": "community", + "contributor": "spectrocloud", "docsURL": "", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "konvoy-nvidia", - "displayName": "Nvidia GPU plugin", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "0.4.4", - "status": "active", - "packCreateDate": "2022-02-14", - "packLastModifiedDate": "2022-02-14", - "timeLastUpdated": "1 years", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "konvoy-opsportal", + "name": "harbor", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.9.5", + "addonType": "registry", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "1.9.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -13279,140 +14375,99 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "konvoy-opsportal", - "displayName": "OpsPortal", + "name": "harbor", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "0.9.5", - "status": "active", - "packCreateDate": "2023-08-09", - "packLastModifiedDate": "2023-08-09", - "timeLastUpdated": "2 months", - "releaseType": "Experimental", + "addonType": "registry", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "1.8.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", "contributor": "spectrocloud", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "kotsadm", - "displayName": "Kubernetes Off-The-Shelf (KOTS)", + "name": "harbor-edge-native-config", + "displayName": "Harbor Edge-Native Config", "layer": "addon", - "addonType": "app services", - "cloudTypesFormatted": "all", + "addonType": "registry", + "cloudTypesFormatted": "edge-native", "version": "1.0.0", "status": "active", - "packCreateDate": "2022-07-12", - "packLastModifiedDate": "2022-07-12", - "timeLastUpdated": "1 years", + "packCreateDate": "2020-11-07", + "packLastModifiedDate": "2024-01-10", + "timeLastUpdated": "1 months", "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "false", - "verified": false, + "fips": "unknown", + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "kotsadm", - "displayName": "", - "layer": "addon", - "addonType": "app services", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kube-bench", + "name": "harbor-edge-native-config", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws", - "version": "0.6.7", + "addonType": "registry", + "cloudTypesFormatted": "edge-native", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "", - "verified": false, + "fips": "unknown", + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Spectro Addon Repo" + "registry": "Public Repo" }, { - "name": "kube-scan", - "displayName": "Kube-Scan", + "name": "heartbeat", + "displayName": "Heartbeat", "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "20.1.1", + "version": "1.0.0", "status": "active", - "packCreateDate": "2020-03-16", + "packCreateDate": "2020-03-07", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", "fips": "false", "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "kubebench", - "displayName": "Kubebench", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "0.16.7", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "false", - "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "kubebench", + "name": "heartbeat", "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.16.7", + "addonType": "monitoring", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -13425,19 +14480,19 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubeflow", - "displayName": "KubeFlow", + "name": "hello-universe", + "displayName": "Hello Universe", "layer": "addon", - "addonType": "system app", + "addonType": "app services", "cloudTypesFormatted": "all", - "version": "1.2.0", + "version": "1.1.1", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", + "packCreateDate": "2024-02-23", + "packLastModifiedDate": "2024-02-23", + "timeLastUpdated": "1 weeks", "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "", @@ -13446,379 +14501,357 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "registry": "Palette Registry - OCI" }, { - "name": "kubeflow", - "displayName": "", + "name": "image-swap", + "displayName": "Image Swap", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.2.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "cloudTypesFormatted": "all", + "version": "1.5.2", + "status": "active", + "packCreateDate": "2021-12-08", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", "docsURL": "", - "fips": "", - "verified": false, + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubeflow-full", + "name": "image-swap", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "1.5.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "spectrocloud", + "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Palette Registry - OCI" }, { - "name": "kubeflow-full", - "displayName": "Kubeflow Full", + "name": "image-swap", + "displayName": "Image Swap", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.5", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", + "version": "1.4.2", + "status": "deprecated", + "packCreateDate": "2021-12-08", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Public Repo" + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubeflow-full", - "displayName": "", + "name": "image-swap", + "displayName": "Image Swap", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "cloudTypesFormatted": "all", + "version": "1.5.3", + "status": "active", + "packCreateDate": "2021-12-08", + "packLastModifiedDate": "2023-11-27", + "timeLastUpdated": "3 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Spectro Addon Repo" - }, - { - "name": "kubeflow-pipelines", - "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "", - "verified": false, + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubeflow-pipelines", - "displayName": "Kubeflow Pipelines", + "name": "image-swap", + "displayName": "Image Swap", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.5", + "version": "1.5.1", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", + "packCreateDate": "2021-12-08", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Spectro Addon Repo" + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "kubeflow-pipelines", + "name": "image-swap", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5", - "status": "unknown", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "1.4.2", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "spectrocloud", + "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubeflow-serving", + "name": "image-swap", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "1.5.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Spectro Addon Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubeflow-serving", + "name": "image-swap", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "1.5.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "spectrocloud", + "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Palette Registry - OCI" }, { - "name": "kubeflow-serving", - "displayName": "Kubeflow Serving", + "name": "istio", + "displayName": "Istio", "layer": "addon", - "addonType": "system app", + "addonType": "servicemesh", "cloudTypesFormatted": "all", - "version": "1.5", + "version": "1.6.2", + "status": "deprecated", + "packCreateDate": "2020-02-13", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/istio", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "istio", + "displayName": "Istio", + "layer": "addon", + "addonType": "servicemesh", + "cloudTypesFormatted": "all", + "version": "1.18.2", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", + "packCreateDate": "2023-05-12", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/istio", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "istio", + "displayName": "Istio", + "layer": "addon", + "addonType": "servicemesh", + "cloudTypesFormatted": "all", + "version": "1.14.3", + "status": "active", + "packCreateDate": "2022-10-14", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "spectrocloud", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/istio", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubeflow-training", + "name": "istio", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5", + "addonType": "servicemesh", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.18.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/istio", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Spectro Addon Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubeflow-training", + "name": "istio", + "displayName": "Istio", + "layer": "addon", + "addonType": "servicemesh", + "cloudTypesFormatted": "all", + "version": "1.17.2", + "status": "active", + "packCreateDate": "2023-05-12", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/istio", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "istio", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5", + "addonType": "servicemesh", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.14.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", + "releaseType": "spectrocloud", "contributor": "spectrocloud", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/istio", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "kubeflow-training", - "displayName": "Kubeflow Training", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.5", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "registry": "Palette Registry - OCI" }, { - "name": "kubehunter", - "displayName": "KubeHunter", + "name": "istio", + "displayName": "Istio", "layer": "addon", - "addonType": "monitoring", + "addonType": "servicemesh", "cloudTypesFormatted": "all", - "version": "1.0.3", + "version": "1.20.1", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "", + "packCreateDate": "2023-05-12", + "packLastModifiedDate": "2024-02-23", + "timeLastUpdated": "1 weeks", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/istio", "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" - }, - { - "name": "kubehunter", - "displayName": "", - "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { - "name": "kubehunter", + "name": "istio", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.6.5", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Spectro Addon Repo" - }, - { - "name": "kubernetes", - "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.21.2", + "addonType": "servicemesh", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "1.6.2", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/istio", "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "istio", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", - "version": "1.26.3", + "layer": "addon", + "addonType": "servicemesh", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "1.17.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/istio", "fips": "", "verified": true, "inProduction": true, @@ -13827,40 +14860,39 @@ "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "k3s", + "displayName": "K3S", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", - "version": "1.19.11", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "edge-native", + "version": "1.24.4", + "status": "active", + "packCreateDate": "2022-08-24", + "packLastModifiedDate": "2022-09-15", + "timeLastUpdated": "1 years", + "releaseType": "Experimental", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", + "verified": false, + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.19.13", + "name": "k8s-dashboard", + "displayName": "Kubernetes Dashboard", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "2.0.1", "status": "deprecated", - "packCreateDate": "2019-12-24", + "packCreateDate": "2020-01-13", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", "fips": "false", "verified": true, "inProduction": true, @@ -13869,103 +14901,82 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.28.2", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-10-13", - "timeLastUpdated": "2 weeks", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.19.15", + "name": "k8s-dashboard", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "2.1.0", "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.19.14", - "status": "deprecated", - "packCreateDate": "2019-12-24", + "name": "k8s-dashboard", + "displayName": "Kubernetes Dashboard", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "2.6.1", + "status": "active", + "packCreateDate": "2021-11-10", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.19.16", + "name": "k8s-dashboard", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "2.0.1", "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.19.5", + "name": "k8s-dashboard", + "displayName": "Kubernetes Dashboard", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "2.5.1", "status": "deprecated", - "packCreateDate": "2019-12-24", + "packCreateDate": "2021-11-10", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", "fips": "false", "verified": true, "inProduction": true, @@ -13974,19 +14985,19 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.19.4", + "name": "k8s-dashboard", + "displayName": "Kubernetes Dashboard", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "2.4.0", "status": "deprecated", - "packCreateDate": "2019-12-24", + "packCreateDate": "2021-11-10", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", "fips": "false", "verified": true, "inProduction": true, @@ -13995,19 +15006,19 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.19.6", + "name": "k8s-dashboard", + "displayName": "Kubernetes Dashboard", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "2.1.0", "status": "deprecated", - "packCreateDate": "2019-12-24", + "packCreateDate": "2020-01-13", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", "fips": "false", "verified": true, "inProduction": true, @@ -14016,172 +15027,3192 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", - "version": "1.19.8", - "status": "deprecated", - "packCreateDate": "2019-12-24", + "name": "k8s-dashboard", + "displayName": "Kubernetes Dashboard", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "2.6.0", + "status": "active", + "packCreateDate": "2021-11-10", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", - "version": "1.19.9", - "status": "deprecated", - "packCreateDate": "2019-12-24", + "name": "k8s-dashboard", + "displayName": "Kubernetes Dashboard", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "2.7.0", + "status": "active", + "packCreateDate": "2021-11-10", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", - "version": "1.19.7", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "name": "k8s-dashboard", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "2.7.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,gcp", - "version": "1.20.0", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "name": "k8s-dashboard", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "2.6.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,gcp", - "version": "1.20.1", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "name": "k8s-dashboard", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "2.6.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.20.10", + "name": "k8s-dashboard", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "2.5.1", "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.20.12", + "name": "k8s-dashboard", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.4.0", "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.20.11", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, + "name": "k8sgpt-operator", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "0.0.20", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "k8sgpt-operator", + "displayName": "K8sGPT Operator", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "0.0.20", + "status": "active", + "packCreateDate": "2023-05-22", + "packLastModifiedDate": "2023-08-09", + "timeLastUpdated": "6 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kafka-operator", + "displayName": "", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "0.32.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kafka-operator", + "displayName": "Kafka", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "all", + "version": "0.32.0", + "status": "active", + "packCreateDate": "2022-11-23", + "packLastModifiedDate": "2022-12-10", + "timeLastUpdated": "1 years", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kong", + "displayName": "", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.32.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kong", + "displayName": "", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "2.26.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kong", + "displayName": "Kong", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "2.26.5", + "status": "active", + "packCreateDate": "2020-01-10", + "packLastModifiedDate": "2023-09-20", + "timeLastUpdated": "5 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kong", + "displayName": "Kong", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "2.17.0", + "status": "active", + "packCreateDate": "2020-01-10", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kong", + "displayName": "Kong", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "2.13.1", + "status": "active", + "packCreateDate": "2020-01-10", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kong", + "displayName": "", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "1.4", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kong", + "displayName": "Kong", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "2.32.0", + "status": "active", + "packCreateDate": "2020-01-10", + "packLastModifiedDate": "2023-12-04", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kong", + "displayName": "", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.17.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kong", + "displayName": "", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "2.13.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kong", + "displayName": "Kong", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "1.4", + "status": "deprecated", + "packCreateDate": "2020-01-10", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kong", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "konvoy-defaultstorageclass", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "0.0.6", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "konvoy-defaultstorageclass", + "displayName": "Default storage classes", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "0.0.6", + "status": "active", + "packCreateDate": "2022-02-14", + "packLastModifiedDate": "2022-02-14", + "timeLastUpdated": "2 years", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "konvoy-nvidia", + "displayName": "Nvidia GPU plugin", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "0.4.4", + "status": "active", + "packCreateDate": "2022-02-14", + "packLastModifiedDate": "2022-02-14", + "timeLastUpdated": "2 years", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "konvoy-nvidia", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "0.4.4", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "konvoy-opsportal", + "displayName": "OpsPortal", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "0.9.5", + "status": "active", + "packCreateDate": "2023-08-09", + "packLastModifiedDate": "2023-08-09", + "timeLastUpdated": "6 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "konvoy-opsportal", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "0.9.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kotsadm", + "displayName": "", + "layer": "addon", + "addonType": "app services", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "1.0.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kotsadm", + "displayName": "Kubernetes Off-The-Shelf (KOTS)", + "layer": "addon", + "addonType": "app services", + "cloudTypesFormatted": "all", + "version": "1.0.0", + "status": "active", + "packCreateDate": "2022-07-12", + "packLastModifiedDate": "2022-07-12", + "timeLastUpdated": "1 years", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kube-bench", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "aws", + "version": "0.6.7", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Spectro Addon Repo" + }, + { + "name": "kube-scan", + "displayName": "Kube-Scan", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "20.1.1", + "status": "active", + "packCreateDate": "2020-03-16", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubebench", + "displayName": "", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "0.16.7", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubebench", + "displayName": "Kubebench", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "0.16.7", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Public Repo" + }, + { + "name": "kubeflow", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "1.2.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubeflow", + "displayName": "KubeFlow", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "1.2.0", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Public Repo" + }, + { + "name": "kubeflow-full", + "displayName": "Kubeflow Full", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "1.5", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Spectro Addon Repo" + }, + { + "name": "kubeflow-full", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "1.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubeflow-full", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubeflow-pipelines", + "displayName": "Kubeflow Pipelines", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "1.5", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Spectro Addon Repo" + }, + { + "name": "kubeflow-pipelines", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "1.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubeflow-pipelines", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "1.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubeflow-serving", + "displayName": "Kubeflow Serving", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "1.5", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubeflow-serving", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "1.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubeflow-serving", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "1.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Spectro Addon Repo" + }, + { + "name": "kubeflow-training", + "displayName": "Kubeflow Training", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "1.5", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Public Repo" + }, + { + "name": "kubeflow-training", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "1.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubeflow-training", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "1.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Spectro Addon Repo" + }, + { + "name": "kubehunter", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "0.6.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Spectro Addon Repo" + }, + { + "name": "kubehunter", + "displayName": "KubeHunter", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "1.0.3", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubehunter", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "1.0.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.19.13", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.23.4", + "status": "disabled", + "packCreateDate": "2022-04-26", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.25.6", + "status": "deprecated", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.19.0", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", + "version": "1.26.1", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.25.8", + "status": "deprecated", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere", + "version": "1.25.9", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-06-28", + "timeLastUpdated": "8 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,azure", + "version": "1.28.3", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-12-11", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.28.2", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-10-13", + "timeLastUpdated": "4 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,azure", + "version": "1.27.7", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-12-11", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere", + "version": "1.27.5", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-10-03", + "timeLastUpdated": "5 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere", + "version": "1.27.1", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-07-27", + "timeLastUpdated": "7 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere", + "version": "1.26.8", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-10-03", + "timeLastUpdated": "5 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere", + "version": "1.26.5", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-07-27", + "timeLastUpdated": "7 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere", + "version": "1.26.4", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-06-28", + "timeLastUpdated": "8 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", + "version": "1.26.3", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,azure", + "version": "1.25.15", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-12-11", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", + "version": "1.26.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.25.9", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.25.8", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.25.6", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws", + "version": "1.25.4", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.25.15", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.25.13", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.25.10", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.24.3", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.24.14", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.24.13", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.24.10", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.23.9", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.23.4", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.23.17", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.23.16", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.22.7", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.22.12", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.21.8", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.21.6", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.21.5", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.21.3", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.21.2", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.21.14", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.21.10", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", + "version": "1.21.1", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", + "version": "1.21.0", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.20.9", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.20.8", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", + "version": "1.20.7", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", + "version": "1.20.6", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.20.5", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.20.4", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,gcp", + "version": "1.20.2", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.20.14", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.20.12", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.20.11", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.20.10", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,gcp", + "version": "1.20.1", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,gcp", + "version": "1.20.0", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", + "version": "1.19.9", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", + "version": "1.19.8", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", + "version": "1.19.7", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.19.6", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.19.5", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.19.4", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.19.16", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.19.15", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.19.14", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.19.13", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.19.12", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", + "version": "1.19.11", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", + "version": "1.19.10", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.19.0", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.28.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.28.2", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.27.7", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.27.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.27.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", + "version": "1.26.8", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", + "version": "1.26.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", + "version": "1.26.4", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", + "version": "1.26.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", + "version": "1.26.10", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,azure", + "version": "1.26.12", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2024-01-18", + "timeLastUpdated": "1 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere", + "version": "1.24.14", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-11-30", + "timeLastUpdated": "3 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax-fips", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,maas,azure", + "version": "1.26.10", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-12-11", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.19.14", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.19.15", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.19.16", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.19.4", + "status": "deprecated", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere,azure,maas", + "version": "1.27.9", + "status": "active", + "packCreateDate": "2024-02-12", + "packLastModifiedDate": "2024-02-23", + "timeLastUpdated": "1 weeks", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.19.5", + "status": "deprecated", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.19.12", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", + "version": "1.19.11", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.19.6", + "status": "deprecated", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", + "version": "1.19.7", + "status": "deprecated", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,maas", + "version": "1.29.0", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-27", + "timeLastUpdated": "3 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", + "version": "1.19.8", + "status": "deprecated", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", + "version": "1.19.9", + "status": "deprecated", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,gcp", + "version": "1.20.0", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,gcp", + "version": "1.20.1", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.20.10", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.20.11", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.20.12", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14190,10 +18221,10 @@ "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", "version": "1.20.14", - "status": "deprecated", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14202,7 +18233,28 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,gcp", + "version": "1.20.2", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14211,10 +18263,10 @@ "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp", "version": "1.20.4", - "status": "deprecated", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14223,7 +18275,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14232,10 +18284,10 @@ "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp", "version": "1.20.5", - "status": "deprecated", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14244,19 +18296,19 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", "displayName": "Palette eXtended Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,gcp", - "version": "1.20.2", - "status": "deprecated", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", + "version": "1.20.6", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14265,7 +18317,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14274,10 +18326,10 @@ "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", "version": "1.20.7", - "status": "deprecated", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14286,19 +18338,19 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", "displayName": "Palette eXtended Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", - "version": "1.20.6", - "status": "deprecated", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.20.8", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14307,7 +18359,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14315,11 +18367,11 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.20.8", - "status": "deprecated", + "version": "1.20.9", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14328,7 +18380,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14337,10 +18389,10 @@ "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", "version": "1.21.0", - "status": "deprecated", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14349,7 +18401,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14358,10 +18410,10 @@ "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", "version": "1.21.1", - "status": "deprecated", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14370,19 +18422,19 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", "displayName": "Palette eXtended Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.20.9", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.21.10", + "status": "disabled", + "packCreateDate": "2022-04-26", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14391,7 +18443,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14400,10 +18452,10 @@ "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", "version": "1.21.14", - "status": "deprecated", + "status": "disabled", "packCreateDate": "2022-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14412,7 +18464,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14421,10 +18473,10 @@ "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", "version": "1.21.2", - "status": "deprecated", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14433,19 +18485,19 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", "displayName": "Palette eXtended Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.21.10", - "status": "deprecated", - "packCreateDate": "2022-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "version": "1.21.3", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14454,7 +18506,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14462,11 +18514,11 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.21.6", - "status": "deprecated", + "version": "1.21.5", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14475,19 +18527,39 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", "displayName": "Palette eXtended Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.21.3", - "status": "deprecated", + "cloudTypesFormatted": "aws,vsphere,azure", + "version": "1.28.5", + "status": "active", + "packCreateDate": "2024-02-12", + "packLastModifiedDate": "2024-02-12", + "timeLastUpdated": "2 weeks", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", + "version": "1.21.6", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14496,7 +18568,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14504,11 +18576,11 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.22.7", - "status": "deprecated", - "packCreateDate": "2022-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "version": "1.21.8", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14517,7 +18589,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14526,10 +18598,10 @@ "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", "version": "1.22.12", - "status": "deprecated", + "status": "disabled", "packCreateDate": "2022-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14538,7 +18610,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14546,11 +18618,11 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.21.8", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "version": "1.22.7", + "status": "disabled", + "packCreateDate": "2022-04-26", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14559,7 +18631,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14567,11 +18639,11 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.23.17", - "status": "deprecated", + "version": "1.23.16", + "status": "disabled", "packCreateDate": "2022-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14580,7 +18652,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14588,11 +18660,11 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.23.16", - "status": "deprecated", + "version": "1.23.17", + "status": "disabled", "packCreateDate": "2022-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14601,28 +18673,28 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", "displayName": "Palette eXtended Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.23.4", + "cloudTypesFormatted": "aws", + "version": "1.25.4", "status": "deprecated", - "packCreateDate": "2022-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14630,11 +18702,11 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.24.10", - "status": "deprecated", + "version": "1.23.9", + "status": "disabled", "packCreateDate": "2022-04-26", - "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14643,7 +18715,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14651,11 +18723,11 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.23.9", - "status": "deprecated", + "version": "1.24.10", + "status": "disabled", "packCreateDate": "2022-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14664,7 +18736,27 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,vsphere", + "version": "1.27.2", + "status": "active", + "packCreateDate": "2022-12-18", + "packLastModifiedDate": "2023-07-27", + "timeLastUpdated": "7 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" }, { "name": "kubernetes", @@ -14676,7 +18768,7 @@ "status": "active", "packCreateDate": "2022-12-18", "packLastModifiedDate": "2023-06-28", - "timeLastUpdated": "4 months", + "timeLastUpdated": "8 months", "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14685,7 +18777,28 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" + }, + { + "name": "kubernetes", + "displayName": "Palette eXtended Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", + "version": "1.19.10", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14694,10 +18807,10 @@ "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", "version": "1.24.3", - "status": "deprecated", + "status": "disabled", "packCreateDate": "2022-04-26", - "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14706,7 +18819,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14718,7 +18831,7 @@ "status": "active", "packCreateDate": "2022-12-18", "packLastModifiedDate": "2023-07-27", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14727,7 +18840,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "kubernetes", @@ -14735,53 +18848,115 @@ "layer": "k8s", "addonType": "", "cloudTypesFormatted": "aws,vsphere", - "version": "1.24.14", + "version": "1.25.13", "status": "active", "packCreateDate": "2022-12-18", - "packLastModifiedDate": "2023-07-27", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2023-10-03", + "timeLastUpdated": "5 months", "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "true", "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-aks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,vsphere", - "version": "1.25.13", + "cloudTypesFormatted": "aks", + "version": "1.22", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-08-14", + "timeLastUpdated": "6 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubernetes-aks", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aks", + "version": "1.28", "status": "active", - "packCreateDate": "2022-12-18", - "packLastModifiedDate": "2023-10-03", - "timeLastUpdated": "4 weeks", + "packCreateDate": "2024-01-30", + "packLastModifiedDate": "2024-01-31", + "timeLastUpdated": "1 months", "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, + "fips": "unknown", + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax-fips", + "registry": "Public Repo" + }, + { + "name": "kubernetes-aks", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aks", + "version": "1.28", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-aks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.25.4", + "cloudTypesFormatted": "aks", + "version": "1.27", "status": "active", + "packCreateDate": "2024-01-30", + "packLastModifiedDate": "2024-01-31", + "timeLastUpdated": "1 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "unknown", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-aks", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aks", + "version": "1.26", + "status": "deprecated", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14793,16 +18968,16 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-aks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.25.6", - "status": "active", + "cloudTypesFormatted": "aks", + "version": "1.25", + "status": "deleted", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -14814,120 +18989,118 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-aks", + "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,vsphere", - "version": "1.25.9", - "status": "active", - "packCreateDate": "2022-12-18", - "packLastModifiedDate": "2023-06-28", - "timeLastUpdated": "4 months", - "releaseType": "VerteX", + "cloudTypesFormatted": "aks", + "version": "1.27", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, + "fips": "", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-aks", + "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.25.8", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "aks", + "version": "1.26", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-aks", + "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", - "version": "1.26.1", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "aks", + "version": "1.25", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-aks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,vsphere", - "version": "1.26.5", - "status": "active", - "packCreateDate": "2022-12-18", - "packLastModifiedDate": "2023-07-27", - "timeLastUpdated": "3 months", - "releaseType": "VerteX", + "cloudTypesFormatted": "aks", + "version": "1.24", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-08-14", + "timeLastUpdated": "6 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-aks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,vsphere", - "version": "1.26.4", - "status": "active", - "packCreateDate": "2022-12-18", - "packLastModifiedDate": "2023-06-28", - "timeLastUpdated": "4 months", - "releaseType": "VerteX", + "cloudTypesFormatted": "aks", + "version": "1.23", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-08-14", + "timeLastUpdated": "6 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", - "version": "1.26.3", + "cloudTypesFormatted": "coxedge", + "version": "1.25.14", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", + "packLastModifiedDate": "2023-11-27", "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", @@ -14940,12 +19113,12 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", - "version": "1.26.8", + "cloudTypesFormatted": "coxedge", + "version": "1.25.14", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -14958,56 +19131,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,vsphere", - "version": "1.27.5", - "status": "active", - "packCreateDate": "2022-12-18", - "packLastModifiedDate": "2023-10-03", - "timeLastUpdated": "4 weeks", - "releaseType": "VerteX", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" - }, - { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,vsphere", - "version": "1.27.1", - "status": "active", - "packCreateDate": "2022-12-18", - "packLastModifiedDate": "2023-07-27", - "timeLastUpdated": "3 months", - "releaseType": "VerteX", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "cloudTypesFormatted": "coxedge", "version": "1.28.2", "status": "unknown", "packCreateDate": "", @@ -15024,12 +19155,12 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.27.5", + "cloudTypesFormatted": "coxedge", + "version": "1.27.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -15045,13 +19176,13 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.19.0", - "status": "deprecated", + "cloudTypesFormatted": "coxedge", + "version": "1.27.2", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -15061,17 +19192,17 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.27.1", + "cloudTypesFormatted": "coxedge", + "version": "1.26.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -15087,11 +19218,32 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.22.12", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", + "cloudTypesFormatted": "coxedge", "version": "1.26.5", "status": "unknown", "packCreateDate": "", @@ -15108,12 +19260,33 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.23.9", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", - "version": "1.26.1", + "cloudTypesFormatted": "coxedge", + "version": "1.26.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -15129,12 +19302,33 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.24.10", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,libvirt,maas", - "version": "1.26.4", + "cloudTypesFormatted": "coxedge", + "version": "1.26.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -15150,16 +19344,16 @@ "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.19.12", - "status": "deprecated", + "cloudTypesFormatted": "coxedge", + "version": "1.24.13", + "status": "deleted", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -15171,12 +19365,12 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.25.9", + "cloudTypesFormatted": "coxedge", + "version": "1.26.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -15192,11 +19386,32 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.24.3", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "cloudTypesFormatted": "coxedge", "version": "1.25.6", "status": "unknown", "packCreateDate": "", @@ -15213,12 +19428,12 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.25.8", + "cloudTypesFormatted": "coxedge", + "version": "1.25.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -15234,11 +19449,32 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.21.14", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", + "cloudTypesFormatted": "coxedge", "version": "1.25.10", "status": "unknown", "packCreateDate": "", @@ -15255,13 +19491,13 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.25.4", - "status": "unknown", + "cloudTypesFormatted": "coxedge", + "version": "1.24.3", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -15271,18 +19507,18 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.25.13", - "status": "unknown", + "cloudTypesFormatted": "coxedge", + "version": "1.24.13", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -15292,59 +19528,248 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.28.2", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-11-27", + "timeLastUpdated": "3 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.27.6", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-11-27", + "timeLastUpdated": "3 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.27.2", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.24.3", - "status": "deprecated", + "cloudTypesFormatted": "coxedge", + "version": "1.25.8", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.26.9", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-11-27", + "timeLastUpdated": "3 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.26.5", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.26.4", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.26.3", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.25.10", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "coxedge", + "version": "1.26.1", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.24.13", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "coxedge", + "version": "1.25.9", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.24.14", + "cloudTypesFormatted": "coxedge", + "version": "1.24.10", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -15360,55 +19785,55 @@ "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.24.10", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "coxedge", + "version": "1.25.8", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.23.4", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "coxedge", + "version": "1.25.6", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.23.9", - "status": "deprecated", + "cloudTypesFormatted": "coxedge", + "version": "1.25.9", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -15418,38 +19843,38 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-coxedge", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.23.17", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "coxedge", + "version": "1.25.4", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.22.7", + "cloudTypesFormatted": "coxedge", + "version": "1.23.9", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -15465,12 +19890,12 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.23.16", + "cloudTypesFormatted": "coxedge", + "version": "1.22.12", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -15486,12 +19911,12 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-coxedge", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.21.6", + "cloudTypesFormatted": "coxedge", + "version": "1.21.14", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -15507,75 +19932,75 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-custom", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.22.12", - "status": "deprecated", + "cloudTypesFormatted": "custom", + "version": "1.0.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-custom", + "displayName": "Kubernetes for Custom Cloud", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.21.8", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "custom", + "version": "1.0.0", + "status": "active", + "packCreateDate": "2023-12-05", + "packLastModifiedDate": "2023-12-05", + "timeLastUpdated": "2 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": true, + "docsURL": "", + "fips": "false", + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.21.3", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "eks", + "version": "1.24", + "status": "active", + "packCreateDate": "2023-07-02", + "packLastModifiedDate": "2023-07-02", + "timeLastUpdated": "8 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": true, + "fips": "unknown", + "verified": false, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.21.5", + "cloudTypesFormatted": "eks", + "version": "1.24", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -15591,15 +20016,15 @@ "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", - "version": "1.19.10", - "status": "deprecated", + "cloudTypesFormatted": "eks", + "version": "1.28", + "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", + "packLastModifiedDate": "2023-11-25", "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", @@ -15607,39 +20032,39 @@ "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.21.14", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "eks", + "version": "1.27", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.21.10", - "status": "deprecated", + "cloudTypesFormatted": "eks", + "version": "1.28", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -15649,39 +20074,39 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", - "version": "1.21.1", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "eks", + "version": "1.18", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.20.9", - "status": "deprecated", + "cloudTypesFormatted": "eks", + "version": "1.27", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -15691,83 +20116,84 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", - "version": "1.21.0", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "eks", + "version": "1.19", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,vsphere", - "version": "1.27.2", - "status": "active", - "packCreateDate": "2022-12-18", - "packLastModifiedDate": "2023-07-27", - "timeLastUpdated": "3 months", - "releaseType": "VerteX", + "cloudTypesFormatted": "eks", + "version": "1.20", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax-fips", - "registry": "" + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,gcp", - "version": "1.20.1", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "eks", + "version": "1.21", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.21.5", - "status": "deprecated", + "cloudTypesFormatted": "eks", + "version": "1.22", + "status": "deleted", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -15779,34 +20205,34 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", - "version": "1.20.6", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "eks", + "version": "1.23", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.20.14", - "status": "deprecated", + "cloudTypesFormatted": "eks", + "version": "1.26", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -15816,38 +20242,38 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.20.4", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "eks", + "version": "1.17", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,gcp", - "version": "1.20.2", + "cloudTypesFormatted": "eks", + "version": "1.18", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -15863,34 +20289,34 @@ "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.20.10", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "eks", + "version": "1.26", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.20.12", - "status": "deprecated", + "cloudTypesFormatted": "eks", + "version": "1.25", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -15900,17 +20326,17 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.20.11", + "cloudTypesFormatted": "eks", + "version": "1.17", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -15926,33 +20352,33 @@ "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-eks", + "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,gcp", - "version": "1.20.0", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "eks", + "version": "1.25", + "status": "active", + "packCreateDate": "2023-07-02", + "packLastModifiedDate": "2023-07-02", + "timeLastUpdated": "8 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": true, + "fips": "unknown", + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", - "version": "1.20.7", + "cloudTypesFormatted": "eks", + "version": "1.19", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -15968,12 +20394,12 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", - "version": "1.19.9", + "cloudTypesFormatted": "eks", + "version": "1.20", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -15989,12 +20415,12 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.19.6", + "cloudTypesFormatted": "eks", + "version": "1.21", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -16010,12 +20436,12 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", - "version": "1.19.8", + "cloudTypesFormatted": "eks", + "version": "1.22", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -16031,12 +20457,12 @@ "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-eks", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas", - "version": "1.19.7", + "cloudTypesFormatted": "eks", + "version": "1.23", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -16052,55 +20478,93 @@ "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-eksd", + "displayName": "Amazon EKS Distro", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.19.5", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.20.7-eks-1-20-8", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-eksd", + "displayName": "Amazon EKS Distro", "layer": "k8s", "addonType": "", "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.19.4", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "version": "1.19.6-eks-1-19-1", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { - "name": "kubernetes", + "name": "kubernetes-eksd", + "displayName": "Amazon EKS Distro", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.21.2-eks-1-21-6", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubernetes-eksd", + "displayName": "Amazon EKS Distro", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "aws,azure,vsphere,gcp", + "version": "1.18.9-eks-1-18-1", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubernetes-gke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.19.16", - "status": "deprecated", + "cloudTypesFormatted": "gke", + "version": "1.25.14", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -16110,18 +20574,18 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", + "name": "kubernetes-gke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas,edge,libvirt", - "version": "1.19.15", - "status": "deprecated", + "cloudTypesFormatted": "gke", + "version": "1.25.10", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -16131,81 +20595,121 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-gke", + "displayName": "GKE", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.19.13", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "gke", + "version": "1.26.8", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-10-12", + "timeLastUpdated": "4 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-gke", + "displayName": "GKE", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.19.14", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "gke", + "version": "1.26.5", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-gke", + "displayName": "GKE", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.19.12", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "gke", + "version": "1.24.10", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubernetes-gke", + "displayName": "GKE", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "gke", + "version": "1.25.9", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-08-24", + "timeLastUpdated": "6 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubernetes-gke", + "displayName": "GKE", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "gke", + "version": "1.25.13", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-gke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", - "version": "1.19.10", - "status": "deprecated", + "cloudTypesFormatted": "gke", + "version": "1.27.2", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -16215,60 +20719,181 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-gke", + "displayName": "GKE", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack", - "version": "1.19.11", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "gke", + "version": "1.26.3", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-08-24", + "timeLastUpdated": "6 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubernetes-gke", + "displayName": "GKE", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "gke", + "version": "1.28.4", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubernetes-gke", + "displayName": "GKE", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "gke", + "version": "1.27.6", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes", - "displayName": "", + "name": "kubernetes-gke", + "displayName": "GKE", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.20.5", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "gke", + "version": "1.28.6", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-16", + "timeLastUpdated": "2 weeks", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubernetes-gke", + "displayName": "GKE", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "gke", + "version": "1.27.5", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubernetes-gke", + "displayName": "GKE", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "gke", + "version": "1.26.4", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubernetes-gke", + "displayName": "GKE", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "gke", + "version": "1.25.14", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes", + "name": "kubernetes-gke", + "displayName": "GKE", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "gke", + "version": "1.25.7", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "kubernetes-gke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,openstack,maas", - "version": "1.20.8", - "status": "deprecated", + "cloudTypesFormatted": "gke", + "version": "1.26.5", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -16278,59 +20903,59 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-gke", + "displayName": "GKE", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.19.0", - "status": "deprecated", + "cloudTypesFormatted": "gke", + "version": "1.25.10", + "status": "deleted", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes", - "displayName": "Palette eXtended Kubernetes", + "name": "kubernetes-gke", + "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aws,vsphere", + "cloudTypesFormatted": "gke", "version": "1.26.8", - "status": "active", - "packCreateDate": "2022-12-18", - "packLastModifiedDate": "2023-10-03", - "timeLastUpdated": "4 weeks", - "releaseType": "VerteX", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, + "fips": "", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes-aks", + "name": "kubernetes-gke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aks", - "version": "1.26", + "cloudTypesFormatted": "gke", + "version": "1.26.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -16346,12 +20971,12 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-aks", + "name": "kubernetes-gke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aks", - "version": "1.25", + "cloudTypesFormatted": "gke", + "version": "1.25.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -16367,16 +20992,16 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-aks", - "displayName": "Kubernetes", + "name": "kubernetes-gke", + "displayName": "GKE", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aks", - "version": "1.22", + "cloudTypesFormatted": "gke", + "version": "1.24.14", "status": "deleted", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-14", - "timeLastUpdated": "2 months", + "packLastModifiedDate": "2023-12-01", + "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -16387,12 +21012,12 @@ "registry": "" }, { - "name": "kubernetes-aks", + "name": "kubernetes-gke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aks", - "version": "1.27", + "cloudTypesFormatted": "gke", + "version": "1.27.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -16405,19 +21030,40 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes-aks", - "displayName": "Kubernetes", + "name": "kubernetes-gke", + "displayName": "", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "gke", + "version": "1.27.5", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubernetes-gke", + "displayName": "GKE", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aks", - "version": "1.26", + "cloudTypesFormatted": "gke", + "version": "1.27.2", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -16426,19 +21072,19 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-aks", - "displayName": "Kubernetes", + "name": "kubernetes-gke", + "displayName": "GKE", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aks", - "version": "1.24", + "cloudTypesFormatted": "gke", + "version": "1.25.8", "status": "deleted", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-14", - "timeLastUpdated": "2 months", + "packLastModifiedDate": "2023-08-24", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -16449,162 +21095,157 @@ "registry": "" }, { - "name": "kubernetes-aks", - "displayName": "Kubernetes", + "name": "kubernetes-gke", + "displayName": "GKE", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aks", - "version": "1.23", + "cloudTypesFormatted": "gke", + "version": "1.26.9", "status": "deleted", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-14", - "timeLastUpdated": "2 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, - "prodStatus": "deleted", + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "" + "registry": "Public Repo" }, { - "name": "kubernetes-aks", - "displayName": "Kubernetes", + "name": "kubernetes-konvoy", + "displayName": "Konvoy", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aks", - "version": "1.25", - "status": "active", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack,libvirt", + "version": "1.20.8", + "status": "deleted", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "" }, { - "name": "kubernetes-aks", - "displayName": "Kubernetes", + "name": "kubernetes-konvoy", + "displayName": "Konvoy", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "aks", - "version": "1.27", - "status": "active", + "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack,libvirt", + "version": "1.19.10", + "status": "deleted", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-konvoy", + "displayName": "Konvoy", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.26.5", - "status": "active", + "cloudTypesFormatted": "edge,libvirt", + "version": "1.21.6", + "status": "deleted", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "" }, { - "name": "kubernetes-coxedge", - "displayName": "", + "name": "kubernetes-konvoy", + "displayName": "Konvoy", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.23.9", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "libvirt", + "version": "1.19.15", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { - "name": "kubernetes-coxedge", - "displayName": "", + "name": "kubernetes-konvoy", + "displayName": "Konvoy", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.24.10", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "vsphere", + "version": "1.27.6", + "status": "active", + "packCreateDate": "2024-02-13", + "packLastModifiedDate": "2024-02-16", + "timeLastUpdated": "2 weeks", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "true", "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" }, { - "name": "kubernetes-coxedge", - "displayName": "", + "name": "kubernetes-konvoy", + "displayName": "Konvoy", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.24.13", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "libvirt", + "version": "1.20.11", + "status": "deleted", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-microk8s", + "displayName": "MicroK8s", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.23.9", - "status": "deprecated", + "cloudTypesFormatted": "aws,maas", + "version": "1.23", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -16613,19 +21254,19 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-microk8s", + "displayName": "MicroK8s", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.25.10", + "cloudTypesFormatted": "aws,maas", + "version": "1.26", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "packLastModifiedDate": "2023-11-07", + "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -16634,15 +21275,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", + "name": "kubernetes-microk8s", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.24.3", + "cloudTypesFormatted": "aws,maas", + "version": "1.23", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -16658,37 +21299,37 @@ "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", - "displayName": "", + "name": "kubernetes-microk8s", + "displayName": "MicroK8s", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.25.4", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "aws,maas", + "version": "1.24", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", + "prodStatus": "deprecated", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-microk8s", + "displayName": "MicroK8s", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.26.3", - "status": "active", + "cloudTypesFormatted": "aws,maas", + "version": "1.25", + "status": "deprecated", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -16697,39 +21338,39 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-microk8s", + "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.24.13", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", - "releaseType": "Stable", + "cloudTypesFormatted": "aws,maas", + "version": "1.26", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-microk8s", + "displayName": "MicroK8s", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.26.4", + "cloudTypesFormatted": "aws,maas", + "version": "1.27", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", + "packLastModifiedDate": "2023-11-07", "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", @@ -16742,33 +21383,33 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-microk8s", + "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.25.9", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "aws,maas", + "version": "1.27", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", + "name": "kubernetes-microk8s", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.25.8", + "cloudTypesFormatted": "aws,maas", + "version": "1.25", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -16784,12 +21425,12 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", + "name": "kubernetes-microk8s", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.21.14", + "cloudTypesFormatted": "aws,maas", + "version": "1.24", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -16805,222 +21446,262 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-rke2", + "displayName": "RKE2", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.25.6", + "cloudTypesFormatted": "vsphere,aws,azure,maas", + "version": "1.27.8-rke2r1-build20231115", "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "packCreateDate": "2023-07-18", + "packLastModifiedDate": "2023-12-21", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, + "fips": "true", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "pax-fips", "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-rke2", + "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.22.12", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "maas,vsphere", + "version": "1.23.9-rke2r1-build20220713", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", + "name": "kubernetes-rke2", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.22.12", - "status": "deprecated", + "cloudTypesFormatted": "vsphere,aws", + "version": "1.26.5-rke2r1-build20230518", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-rke2", + "displayName": "RKE2", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.26.1", + "cloudTypesFormatted": "vsphere", + "version": "1.26.3-rke2r1-build20230317", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2023-12-21", + "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", - "displayName": "", + "name": "kubernetes-rke2", + "displayName": "RKE2", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.27.2", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "vsphere,aws,azure,maas", + "version": "1.26.11-rke2r1-build20231115", + "status": "active", + "packCreateDate": "2023-07-18", + "packLastModifiedDate": "2023-12-21", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": true, + "fips": "true", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax-fips", "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", - "displayName": "", + "name": "kubernetes-rke2", + "displayName": "RKE2", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.26.5", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "vsphere,aws,azure,maas", + "version": "1.28.4-rke2r1-build20231115", + "status": "active", + "packCreateDate": "2023-07-18", + "packLastModifiedDate": "2023-12-21", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": true, + "fips": "true", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", - "displayName": "", + "name": "kubernetes-rke2", + "displayName": "RKE2", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.26.1", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "vsphere,aws", + "version": "1.26.5-rke2r1-build20230518", + "status": "active", + "packCreateDate": "2023-07-18", + "packLastModifiedDate": "2023-12-21", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": true, + "fips": "true", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", + "name": "kubernetes-rke2", + "displayName": "RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "vsphere,aws,azure,maas", + "version": "1.26.12-rke2r1-build20231220", + "status": "active", + "packCreateDate": "2023-07-18", + "packLastModifiedDate": "2024-02-20", + "timeLastUpdated": "1 weeks", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" + }, + { + "name": "kubernetes-rke2", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.25.10", + "cloudTypesFormatted": "vsphere", + "version": "1.26.3-rke2r1-build20230317", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", - "displayName": "", + "name": "kubernetes-rke2", + "displayName": "RKE2", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.26.4", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "maas,vsphere", + "version": "1.23.9-rke2r1-build20220713", + "status": "disabled", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", + "name": "kubernetes-rke2", + "displayName": "RKE2", + "layer": "k8s", + "addonType": "", + "cloudTypesFormatted": "vsphere,aws,azure,maas", + "version": "1.28.5-rke2r1-build20231220", + "status": "active", + "packCreateDate": "2023-07-18", + "packLastModifiedDate": "2024-02-20", + "timeLastUpdated": "1 weeks", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" + }, + { + "name": "kubernetes-rke2", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.26.3", + "cloudTypesFormatted": "vsphere,aws,azure,maas", + "version": "1.26.11-rke2r1-build20231115", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", + "name": "kubernetes-rke2", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.25.6", + "cloudTypesFormatted": "maas,vsphere", + "version": "1.22.12-rke2r1-build20220713", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -17036,58 +21717,58 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", + "name": "kubernetes-rke2", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.25.9", + "cloudTypesFormatted": "vsphere,aws,azure,maas", + "version": "1.28.4-rke2r1-build20231115", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-rke2", + "displayName": "RKE2", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.24.3", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", - "releaseType": "Stable", + "cloudTypesFormatted": "vsphere,aws", + "version": "1.25.10-rke2r1-build20230518", + "status": "active", + "packCreateDate": "2023-07-18", + "packLastModifiedDate": "2023-12-21", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, + "fips": "true", + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", + "prodStatus": "unknown", + "gitRepo": "pax-fips", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-rke2", + "displayName": "RKE2", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.25.8", - "status": "active", + "cloudTypesFormatted": "maas,vsphere", + "version": "1.22.12-rke2r1-build20220713", + "status": "disabled", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", @@ -17099,82 +21780,81 @@ "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-rke2", + "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.25.4", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "vsphere,aws", + "version": "1.25.10-rke2r1-build20230518", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-rke2", + "displayName": "RKE2", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.24.10", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", - "releaseType": "Stable", + "cloudTypesFormatted": "vsphere,aws,azure,maas", + "version": "1.27.9-rke2r1-build20231220", + "status": "active", + "packCreateDate": "2023-07-18", + "packLastModifiedDate": "2024-02-20", + "timeLastUpdated": "1 weeks", + "releaseType": "VerteX", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" + "fips": "true", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax-fips", + "registry": "" }, { - "name": "kubernetes-coxedge", - "displayName": "Kubernetes", + "name": "kubernetes-rke2", + "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.27.2", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "vsphere,aws,azure,maas", + "version": "1.27.8-rke2r1-build20231115", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-coxedge", + "name": "kubernetes-tke", "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "coxedge", - "version": "1.21.14", + "cloudTypesFormatted": "tke", + "version": "1.18.4", "status": "deprecated", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, @@ -17183,40 +21863,40 @@ "registry": "Public Repo" }, { - "name": "kubernetes-eks", + "name": "kubernetes-tke", "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.18", + "cloudTypesFormatted": "tke", + "version": "1.16.3", "status": "deprecated", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-eks", + "name": "kubernetes-tke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.24", + "cloudTypesFormatted": "tke", + "version": "1.18.4", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, @@ -17225,582 +21905,691 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-eks", + "name": "kubernetes-tke", "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.24", - "status": "active", - "packCreateDate": "2023-07-02", - "packLastModifiedDate": "2023-07-02", - "timeLastUpdated": "4 months", - "releaseType": "VerteX", + "cloudTypesFormatted": "tke", + "version": "1.20.6", + "status": "deprecated", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "unknown", - "verified": false, + "docsURL": "", + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "pax-fips", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-eks", + "name": "kubernetes-tke", "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.22", + "cloudTypesFormatted": "tke", + "version": "1.24.4", "status": "deprecated", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2023-10-14", + "timeLastUpdated": "4 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-eks", + "name": "kubernetes-tke", "displayName": "Kubernetes", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.26", + "cloudTypesFormatted": "tke", + "version": "1.22.5", "status": "active", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-eks", + "name": "kubernetes-tke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.27", - "status": "unknown", + "cloudTypesFormatted": "tke", + "version": "1.24.4", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes-eks", + "name": "kubernetes-tke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.25", - "status": "unknown", + "cloudTypesFormatted": "tke", + "version": "1.20.6", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes-eks", + "name": "kubernetes-tke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.18", + "cloudTypesFormatted": "tke", + "version": "1.16.3", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes-eks", + "name": "kubernetes-tke", "displayName": "", "layer": "k8s", "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.17", - "status": "deprecated", + "cloudTypesFormatted": "tke", + "version": "1.22.5", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes-eks", + "name": "kubesec", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.19", - "status": "deprecated", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "aws", + "version": "2.11.4", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Spectro Addon Repo" + }, + { + "name": "kubevious", + "displayName": "Kubevious", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "1.0.10", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Public Repo" + }, + { + "name": "kubevious", + "displayName": "Kubevious", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "0.8.15", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Public Repo" + }, + { + "name": "kubevious", + "displayName": "Kubevious", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "0.5.9", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubevious", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "0.8.15", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubevious", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.0.10", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubevious", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "0.5.9", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubevirt", + "displayName": "KubeVirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "0.55.0", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Public Repo" + }, + { + "name": "kubevirt", + "displayName": "KubeVirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "0.51.0", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubevirt", + "displayName": "KubeVirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "0.59.0", + "status": "active", + "packCreateDate": "2022-06-27", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "kubevirt", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "0.55.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "kubevirt", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "0.59.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "kubevirt", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "0.51.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes-eks", + "name": "kubevirt", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.21", - "status": "deprecated", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "0.51.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-eks", + "name": "kubevirt", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.20", - "status": "deprecated", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "0.55.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-eks", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.21", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "kubernetes-eks", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.23", - "status": "deprecated", - "packCreateDate": "2019-12-24", + "name": "kubevirt-cdi", + "displayName": "KubeVirt-CDI", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "1.55.2", + "status": "active", + "packCreateDate": "2023-02-28", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes-eks", + "name": "kubevirt-cdi", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.23", - "status": "deprecated", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "1.55.2", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-eks", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.19", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "name": "kubewatch", + "displayName": "KubeWatch", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "1.0.7", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" }, { - "name": "kubernetes-eks", + "name": "kubewatch", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.26", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "1.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes-eks", + "name": "lb-citrix-adc", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.22", - "status": "deprecated", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "1.7.6", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/citrix-ipam", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "kubernetes-eks", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.20", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "kubernetes-eks", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.17", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Community Registry - OCI" }, { - "name": "kubernetes-eks", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.25", + "name": "lb-citrix-adc", + "displayName": "Citrix ADC", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "1.7.6", "status": "active", - "packCreateDate": "2023-07-02", - "packLastModifiedDate": "2023-07-02", - "timeLastUpdated": "4 months", - "releaseType": "VerteX", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "unknown", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/citrix-ipam", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "gitRepo": "pack-central", + "registry": "Public Repo" }, { - "name": "kubernetes-eks", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "eks", - "version": "1.27", + "name": "lb-metallb", + "displayName": "MetalLB", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "0.11.0", "status": "active", - "packCreateDate": "2019-12-24", + "packCreateDate": "2020-02-21", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "kubernetes-eksd", - "displayName": "Amazon EKS Distro", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.20.7-eks-1-20-8", - "status": "disabled", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "kubernetes-eksd", - "displayName": "Amazon EKS Distro", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.18.9-eks-1-18-1", - "status": "disabled", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "kubernetes-eksd", - "displayName": "Amazon EKS Distro", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.19.6-eks-1-19-1", - "status": "disabled", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" + "registry": "Public Repo" }, { - "name": "kubernetes-eksd", - "displayName": "Amazon EKS Distro", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp", - "version": "1.21.2-eks-1-21-6", - "status": "disabled", - "packCreateDate": "2019-12-24", + "name": "lb-metallb", + "displayName": "MetalLB", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "0.9.5", + "status": "deprecated", + "packCreateDate": "2020-02-21", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.25.10", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-gke", + "name": "lb-metallb", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.25.13", - "status": "unknown", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "0.9.5", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.26.5", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "name": "lb-metallb", + "displayName": "", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "0.8.3", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", + "prodStatus": "deprecated", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.26.8", + "name": "lb-metallb", + "displayName": "MetalLB", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "0.13.5", "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-10-12", - "timeLastUpdated": "2 weeks", + "packCreateDate": "2020-02-21", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "false", "verified": true, "inProduction": true, @@ -17809,162 +22598,103 @@ "registry": "Public Repo" }, { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.26.3", - "status": "deleted", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-24", - "timeLastUpdated": "2 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.24.10", - "status": "deleted", - "packCreateDate": "2019-12-24", + "name": "lb-metallb", + "displayName": "MetalLB", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native", + "version": "0.13.7", + "status": "active", + "packCreateDate": "2020-02-21", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "false", "verified": true, - "prodStatus": "deleted", + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.25.7", - "status": "deleted", - "packCreateDate": "2019-12-24", + "name": "lb-metallb", + "displayName": "MetalLB", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "0.8.3", + "status": "deprecated", + "packCreateDate": "2020-02-21", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "false", "verified": true, - "prodStatus": "deleted", + "inProduction": true, + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-gke", + "name": "lb-metallb", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.27.2", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "0.13.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-gke", + "name": "lb-metallb", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.27.5", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "0.11.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.24.14", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.26.4", - "status": "deleted", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "kubernetes-gke", + "name": "lb-metallb", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.25.10", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native", + "version": "0.13.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "", "verified": true, "inProduction": true, @@ -17973,60 +22703,40 @@ "registry": "Public Repo" }, { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.25.8", - "status": "deleted", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-24", - "timeLastUpdated": "2 months", + "name": "lb-metallb-helm", + "displayName": "MetalLB (Helm)", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "0.13.7", + "status": "active", + "packCreateDate": "2020-02-21", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "false", "verified": true, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "kubernetes-gke", - "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.24.14", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes-gke", + "name": "lb-metallb-helm", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.26.5", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native,custom", + "version": "0.13.11", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "", "verified": true, "inProduction": true, @@ -18035,19 +22745,19 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-gke", + "name": "lb-metallb-helm", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.26.8", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", + "version": "0.13.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "", "verified": true, "inProduction": true, @@ -18056,19 +22766,19 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.25.13", + "name": "lb-metallb-helm", + "displayName": "MetalLB (Helm)", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native,custom", + "version": "0.13.9", "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-10-12", - "timeLastUpdated": "2 weeks", + "packCreateDate": "2020-02-21", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "false", "verified": true, "inProduction": true, @@ -18077,433 +22787,459 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.27.5", + "name": "lb-metallb-helm", + "displayName": "MetalLB (Helm)", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native,custom", + "version": "0.13.10", "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-10-12", - "timeLastUpdated": "2 weeks", + "packCreateDate": "2020-02-21", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.27.2", + "name": "lb-metallb-helm", + "displayName": "MetalLB (Helm)", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native,custom", + "version": "0.13.12", "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "packCreateDate": "2020-02-21", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "" }, { - "name": "kubernetes-gke", - "displayName": "GKE", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "gke", - "version": "1.25.9", - "status": "deleted", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-24", + "name": "lb-metallb-helm", + "displayName": "MetalLB (Helm)", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native,custom", + "version": "0.13.11", + "status": "active", + "packCreateDate": "2020-02-21", + "packLastModifiedDate": "2023-12-17", "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", "fips": "false", "verified": true, - "prodStatus": "deleted", + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "" + "registry": "Public Repo" }, { - "name": "kubernetes-konvoy", - "displayName": "Konvoy", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "libvirt", - "version": "1.19.15", - "status": "deleted", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "name": "lb-metallb-helm", + "displayName": "", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native,custom", + "version": "0.13.10", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "fips": "", "verified": true, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-konvoy", - "displayName": "Konvoy", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "libvirt", - "version": "1.20.11", - "status": "deleted", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "name": "lb-metallb-helm", + "displayName": "", + "layer": "addon", + "addonType": "load balancer", + "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native,custom", + "version": "0.13.9", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "fips": "", "verified": true, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "kubernetes-konvoy", - "displayName": "Konvoy", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "edge,libvirt", - "version": "1.21.6", - "status": "deleted", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "name": "linkerd", + "displayName": "", + "layer": "addon", + "addonType": "servicemesh", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "2.7.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "local-ai", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.1.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "local-ai", + "displayName": "LocalAI", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "2.1.1", + "status": "active", + "packCreateDate": "2023-05-22", + "packLastModifiedDate": "2023-08-09", + "timeLastUpdated": "6 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", "fips": "false", - "verified": true, - "prodStatus": "deleted", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "" + "registry": "Public Repo" }, { - "name": "kubernetes-konvoy", - "displayName": "Konvoy", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack,libvirt", - "version": "1.20.8", - "status": "deleted", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "name": "minio", + "displayName": "Minio", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "8.0.10", + "status": "active", + "packCreateDate": "2021-04-01", + "packLastModifiedDate": "2021-04-01", + "timeLastUpdated": "2 years", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/minio", "fips": "false", - "verified": true, - "prodStatus": "deleted", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-konvoy", - "displayName": "Konvoy", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws,azure,vsphere,gcp,maas,openstack,libvirt", - "version": "1.19.10", - "status": "deleted", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "name": "minio", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "8.0.10", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/minio", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "mongodb-community-operator", + "displayName": "MongoDB", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "all", + "version": "0.7.6", + "status": "active", + "packCreateDate": "2022-10-07", + "packLastModifiedDate": "2022-10-07", + "timeLastUpdated": "1 years", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "false", - "verified": true, - "prodStatus": "deleted", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-microk8s", + "name": "mongodb-community-operator", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.23", - "status": "deprecated", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "0.7.6", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubernetes-microk8s", + "name": "mysql-operator", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.26", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "0.6.2", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "mysql-operator", + "displayName": "MySQL", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "all", + "version": "0.6.3", + "status": "active", + "packCreateDate": "2022-11-23", + "packLastModifiedDate": "2023-11-01", + "timeLastUpdated": "4 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "mysql-operator", + "displayName": "", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "0.6.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes-microk8s", + "name": "mysql-operator", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.25", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "0.6.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-microk8s", + "name": "nats-operator", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.24", - "status": "deprecated", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "0.18.2", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubernetes-microk8s", - "displayName": "MicroK8s", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.24", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", + "name": "nats-operator", + "displayName": "NATS", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "all", + "version": "0.18.2", + "status": "active", + "packCreateDate": "2022-11-23", + "packLastModifiedDate": "2022-11-28", + "timeLastUpdated": "1 years", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-microk8s", + "name": "newrelic", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.27", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "1.13.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "kubernetes-microk8s", - "displayName": "MicroK8s", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.27", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes-microk8s", - "displayName": "MicroK8s", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.26", + "name": "nginx", + "displayName": "Nginx", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "1.4.0", "status": "active", - "packCreateDate": "2019-12-24", + "packCreateDate": "2022-01-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "kubernetes-microk8s", - "displayName": "MicroK8s", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.23", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes-microk8s", - "displayName": "MicroK8s", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "aws", - "version": "1.25", + "name": "nginx", + "displayName": "Nginx", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "1.7.0", "status": "active", - "packCreateDate": "2019-12-24", + "packCreateDate": "2022-01-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "kubernetes-rke2", - "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "vsphere", - "version": "1.26.3-rke2r1-build20230317", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "kubernetes-rke2", - "displayName": "RKE2", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "vsphere,aws", - "version": "1.25.10-rke2r1-build20230518", - "status": "active", - "packCreateDate": "2023-07-18", - "packLastModifiedDate": "2023-08-26", - "timeLastUpdated": "2 months", - "releaseType": "VerteX", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax-fips", "registry": "Public Repo" }, { - "name": "kubernetes-rke2", - "displayName": "RKE2", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "maas,vsphere", - "version": "1.22.12-rke2r1-build20220713", + "name": "nginx", + "displayName": "Nginx", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "1.5.1", "status": "active", - "packCreateDate": "2019-12-24", + "packCreateDate": "2022-01-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "false", "verified": true, "inProduction": true, @@ -18512,124 +23248,82 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-rke2", - "displayName": "RKE2", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "vsphere", - "version": "1.26.3-rke2r1-build20230317", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-05", - "timeLastUpdated": "2 months", + "name": "nginx", + "displayName": "Nginx", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "1.0.4", + "status": "deprecated", + "packCreateDate": "2022-01-14", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes-rke2", - "displayName": "RKE2", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "maas,vsphere", - "version": "1.23.9-rke2r1-build20220713", - "status": "active", - "packCreateDate": "2019-12-24", + "name": "nginx", + "displayName": "Nginx", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "1.2.1", + "status": "deprecated", + "packCreateDate": "2022-01-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes-rke2", + "name": "nginx", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "maas,vsphere", - "version": "1.22.12-rke2r1-build20220713", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "1.9.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "kubernetes-rke2", - "displayName": "RKE2", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "vsphere,aws", - "version": "1.26.5-rke2r1-build20230518", - "status": "active", - "packCreateDate": "2023-07-18", - "packLastModifiedDate": "2023-07-18", - "timeLastUpdated": "3 months", - "releaseType": "VerteX", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "true", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax-fips", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-rke2", - "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "vsphere,aws", - "version": "1.26.5-rke2r1-build20230518", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "kubernetes-rke2", + "name": "nginx", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "maas,vsphere", - "version": "1.23.9-rke2r1-build20220713", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "1.4.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "", "verified": true, "inProduction": true, @@ -18638,61 +23332,61 @@ "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-rke2", + "name": "nginx", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "vsphere,aws", - "version": "1.25.10-rke2r1-build20230518", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "1.8.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-tke", + "name": "nginx", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "tke", - "version": "1.16.3", - "status": "deprecated", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "1.7.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-tke", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "tke", - "version": "1.22.5", + "name": "nginx", + "displayName": "Nginx", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "1.9.4", "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", + "packCreateDate": "2022-01-14", + "packLastModifiedDate": "2023-11-09", "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "false", "verified": true, "inProduction": true, @@ -18701,61 +23395,40 @@ "registry": "Public Repo" }, { - "name": "kubernetes-tke", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "tke", - "version": "1.24.4", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-10-14", - "timeLastUpdated": "2 weeks", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "kubernetes-tke", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "tke", - "version": "1.18.4", - "status": "deprecated", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "name": "nginx", + "displayName": "Nginx", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "1.8.1", + "status": "active", + "packCreateDate": "2022-01-14", + "packLastModifiedDate": "2023-09-15", + "timeLastUpdated": "5 months", "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "kubernetes-tke", + "name": "nginx", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "tke", - "version": "1.24.4", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "0.26.1", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "", "verified": true, "inProduction": true, @@ -18764,250 +23437,207 @@ "registry": "Public Repo" }, { - "name": "kubernetes-tke", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "tke", - "version": "1.20.6", + "name": "nginx", + "displayName": "Nginx", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "0.26.1", "status": "deprecated", - "packCreateDate": "2019-12-24", + "packCreateDate": "2020-01-10", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "kubernetes-tke", - "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "tke", - "version": "1.18.4", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kubernetes-tke", - "displayName": "Kubernetes", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "tke", - "version": "1.16.3", + "name": "nginx", + "displayName": "Nginx", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "1.3.0", "status": "deprecated", - "packCreateDate": "2019-12-24", + "packCreateDate": "2022-01-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "kubernetes-tke", - "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "tke", - "version": "1.20.6", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", - "fips": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "kubernetes-tke", + "name": "nginx", "displayName": "", - "layer": "k8s", - "addonType": "", - "cloudTypesFormatted": "tke", - "version": "1.22.5", - "status": "unknown", + "layer": "addon", + "addonType": "ingress", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "1.3.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kubesec", + "name": "nginx", "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws", - "version": "2.11.4", - "status": "unknown", + "addonType": "ingress", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.2.1", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Spectro Addon Repo" + "registry": "Palette Registry - OCI" }, { - "name": "kubevious", - "displayName": "Kubevious", + "name": "nginx", + "displayName": "Nginx", "layer": "addon", - "addonType": "monitoring", + "addonType": "ingress", "cloudTypesFormatted": "all", - "version": "0.5.9", + "version": "1.9.5", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "packCreateDate": "2022-01-14", + "packLastModifiedDate": "2024-02-25", + "timeLastUpdated": "5 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" }, { - "name": "kubevious", - "displayName": "Kubevious", + "name": "nginx", + "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "1.0.10", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", - "fips": "false", - "verified": false, + "addonType": "ingress", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "1.0.4", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "fips": "", + "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "kubevious", - "displayName": "Kubevious", + "name": "nginx", + "displayName": "Nginx", "layer": "addon", - "addonType": "monitoring", + "addonType": "ingress", "cloudTypesFormatted": "all", - "version": "0.8.15", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "version": "0.43.0", + "status": "deprecated", + "packCreateDate": "2021-01-28", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubevious", + "name": "nginx", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.8.15", + "addonType": "ingress", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.5.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubevious", + "name": "nginx", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.10", - "status": "unknown", + "addonType": "ingress", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "0.43.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/nginx", "fips": "", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "kubevious", + "name": "ngrok-ingress-controller", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.5.9", + "addonType": "ingress", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "0.9.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "contributor": "ngrok", + "docsURL": "", "fips": "", "verified": false, "inProduction": true, @@ -19016,439 +23646,396 @@ "registry": "Public Repo" }, { - "name": "kubevirt", - "displayName": "", + "name": "ngrok-ingress-controller", + "displayName": "ngrok Ingress Controller", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.59.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "addonType": "ingress", + "cloudTypesFormatted": "all", + "version": "0.9.0", + "status": "active", + "packCreateDate": "2023-05-17", + "packLastModifiedDate": "2023-05-24", + "timeLastUpdated": "9 months", + "releaseType": "Community", + "contributor": "ngrok", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" }, { - "name": "kubevirt", - "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.55.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "", - "verified": false, + "name": "nutanix-csi", + "displayName": "Nutanix CSI", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "nutanix", + "version": "2.6.6", + "status": "active", + "packCreateDate": "2023-12-11", + "packLastModifiedDate": "2023-12-24", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "kubevirt", + "name": "nutanix-csi", "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.55.0", + "layer": "csi", + "addonType": "", + "cloudTypesFormatted": "nutanix", + "version": "2.6.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/csi", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kubevirt", + "name": "nvidia-gpu-operator", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.51.0", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "22.9.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "spectrocloud", + "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubevirt", - "displayName": "KubeVirt", + "name": "nvidia-gpu-operator", + "displayName": "Nvidia GPU Operator", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "all", - "version": "0.51.0", + "version": "23.9.1", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", + "packCreateDate": "2022-03-07", + "packLastModifiedDate": "2023-12-24", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubevirt", - "displayName": "KubeVirt", + "name": "nvidia-gpu-operator", + "displayName": "Nvidia GPU Operator", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "0.55.0", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", + "cloudTypesFormatted": "libvirt", + "version": "1.9.1", + "status": "deprecated", + "packCreateDate": "2022-03-07", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Public Repo" + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubevirt", + "name": "nvidia-gpu-operator", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.51.0", - "status": "unknown", + "cloudTypesFormatted": "libvirt", + "version": "1.9.1", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "spectrocloud", + "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" }, { - "name": "kubevirt", - "displayName": "KubeVirt", + "name": "nvidia-gpu-operator", + "displayName": "Nvidia GPU Operator", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "all", - "version": "0.59.0", + "version": "22.9.2", "status": "active", - "packCreateDate": "2022-06-27", + "packCreateDate": "2022-03-07", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "kubevirt-cdi", - "displayName": "KubeVirt-CDI", + "name": "nvidia-gpu-operator", + "displayName": "Nvidia GPU Operator", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.55.2", + "version": "23.3.2", "status": "active", - "packCreateDate": "2023-02-28", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", + "packCreateDate": "2022-03-07", + "packLastModifiedDate": "2023-07-31", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "kubevirt-cdi", - "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.55.2", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "kubewatch", - "displayName": "KubeWatch", + "name": "nvidia-gpu-operator", + "displayName": "Nvidia GPU Operator", "layer": "addon", - "addonType": "monitoring", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.0.7", + "version": "22.9.0", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", + "packCreateDate": "2022-03-07", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "kubewatch", + "name": "nvidia-gpu-operator", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.7", + "addonType": "system app", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "23.9.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "spectrocloud", + "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" - }, - { - "name": "lb-citrix-adc", - "displayName": "Citrix ADC", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "1.7.6", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/citrix-ipam", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", "registry": "Public Repo" }, { - "name": "lb-citrix-adc", + "name": "nvidia-gpu-operator", "displayName": "", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "1.7.6", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "23.3.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/citrix-ipam", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" }, { - "name": "lb-metallb", + "name": "nvidia-gpu-operator", "displayName": "", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "0.11.0", + "addonType": "system app", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "22.9.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "lb-metallb", - "displayName": "MetalLB", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "0.9.5", - "status": "deprecated", - "packCreateDate": "2020-02-21", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "lb-metallb", - "displayName": "MetalLB", + "name": "oam-app-controller", + "displayName": "OAM App Controller", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "0.13.5", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "0.0.1", "status": "active", - "packCreateDate": "2020-02-21", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "packCreateDate": "2023-12-15", + "packLastModifiedDate": "2023-12-15", + "timeLastUpdated": "2 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "verified": false, + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "" }, { - "name": "lb-metallb", - "displayName": "MetalLB", + "name": "open-policy-agent", + "displayName": "OpenPolicyAgent", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "0.8.3", - "status": "deprecated", - "packCreateDate": "2020-02-21", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "3.11.0", + "status": "active", + "packCreateDate": "2022-02-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "lb-metallb", + "name": "open-policy-agent", "displayName": "", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "0.9.5", - "status": "deprecated", + "addonType": "security", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "3.11.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "lb-metallb", - "displayName": "MetalLB", + "name": "open-policy-agent", + "displayName": "OpenPolicyAgent", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native", - "version": "0.13.7", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "3.12.0", "status": "active", - "packCreateDate": "2020-02-21", - "packLastModifiedDate": "2023-07-21", + "packCreateDate": "2022-02-02", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "open-policy-agent", + "displayName": "OpenPolicyAgent", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "3.13.2", + "status": "active", + "packCreateDate": "2022-02-02", + "packLastModifiedDate": "2023-11-27", "timeLastUpdated": "3 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "lb-metallb", + "name": "open-policy-agent", "displayName": "", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "0.8.3", + "addonType": "security", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "3.6.0", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, @@ -19457,19 +24044,19 @@ "registry": "Palette Registry - OCI" }, { - "name": "lb-metallb", + "name": "open-policy-agent", "displayName": "", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "0.13.5", + "addonType": "security", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "3.7.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, @@ -19478,166 +24065,145 @@ "registry": "Palette Registry - OCI" }, { - "name": "lb-metallb", - "displayName": "MetalLB", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "0.11.0", - "status": "active", - "packCreateDate": "2020-02-21", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "lb-metallb", + "name": "open-policy-agent", "displayName": "", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native", - "version": "0.13.7", + "addonType": "security", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "3.9.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "lb-metallb-helm", - "displayName": "MetalLB (Helm)", - "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native", - "version": "0.13.10", - "status": "active", - "packCreateDate": "2020-02-21", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "lb-metallb-helm", + "name": "open-policy-agent", "displayName": "", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native", - "version": "0.13.10", + "addonType": "security", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "3.12.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "lb-metallb-helm", + "name": "open-policy-agent", "displayName": "", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "0.13.7", - "status": "unknown", + "addonType": "security", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "3.5.1", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "lb-metallb-helm", - "displayName": "MetalLB (Helm)", + "name": "open-policy-agent", + "displayName": "OpenPolicyAgent", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt", - "version": "0.13.7", - "status": "active", - "packCreateDate": "2020-02-21", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "3.5.1", + "status": "deprecated", + "packCreateDate": "2020-06-04", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "lb-metallb-helm", - "displayName": "", + "name": "open-policy-agent", + "displayName": "OpenPolicyAgent", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native", - "version": "0.13.9", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "3.6.0", + "status": "deprecated", + "packCreateDate": "2020-06-04", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", - "fips": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "open-policy-agent", + "displayName": "OpenPolicyAgent", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "3.7.0", + "status": "active", + "packCreateDate": "2022-02-02", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "lb-metallb-helm", - "displayName": "MetalLB (Helm)", + "name": "open-policy-agent", + "displayName": "OpenPolicyAgent", "layer": "addon", - "addonType": "load balancer", - "cloudTypesFormatted": "vsphere,openstack,maas,edge,libvirt,edge-native", - "version": "0.13.9", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "3.9.0", "status": "active", - "packCreateDate": "2020-02-21", + "packCreateDate": "2022-02-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/metallb", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, @@ -19646,179 +24212,159 @@ "registry": "Public Repo" }, { - "name": "linkerd", + "name": "open-policy-agent", "displayName": "", "layer": "addon", - "addonType": "servicemesh", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.0", + "addonType": "security", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "3.13.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "local-ai", - "displayName": "", + "name": "opensuse-k3s", + "displayName": "openSuSE-K3s", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.1", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "cloudTypesFormatted": "all", + "version": "1.21.12-k3s0", + "status": "active", + "packCreateDate": "2022-05-23", + "packLastModifiedDate": "2022-06-01", + "timeLastUpdated": "1 years", + "releaseType": "Experimental", + "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "local-ai", - "displayName": "LocalAI", + "name": "opensuse-k3s", + "displayName": "openSuSE-K3s", "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "all", - "version": "2.1.1", + "version": "1.22.9-k3s0", "status": "active", - "packCreateDate": "2023-05-22", - "packLastModifiedDate": "2023-08-09", - "timeLastUpdated": "2 months", + "packCreateDate": "2022-05-23", + "packLastModifiedDate": "2022-06-30", + "timeLastUpdated": "1 years", "releaseType": "Experimental", - "contributor": "spectrocloud", + "contributor": "", "docsURL": "", "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "minio", + "name": "opensuse-k3s", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "8.0.10", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.22.9-k3s0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/minio", + "docsURL": "", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "minio", - "displayName": "Minio", + "name": "opensuse-k3s", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "8.0.10", - "status": "active", - "packCreateDate": "2021-04-01", - "packLastModifiedDate": "2021-04-01", - "timeLastUpdated": "2 years", - "releaseType": "Stable", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "1.21.12-k3s0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/minio", - "fips": "false", + "docsURL": "", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "mongodb-community-operator", + "name": "outcold-monitoring", "displayName": "", "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.7.6", + "addonType": "monitoring", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "5.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/collectord", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Palette Community Registry - OCI" }, { - "name": "mongodb-community-operator", - "displayName": "MongoDB", + "name": "outcold-monitoring", + "displayName": "Outcold Solutions", "layer": "addon", - "addonType": "operator", + "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "0.7.6", + "version": "5.0.0", "status": "active", - "packCreateDate": "2022-10-07", - "packLastModifiedDate": "2022-10-07", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", "timeLastUpdated": "1 years", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/collectord", "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "pack-central", "registry": "Public Repo" }, { - "name": "mysql-operator", - "displayName": "MySQL", - "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "all", - "version": "0.6.3", - "status": "active", - "packCreateDate": "2022-11-23", - "packLastModifiedDate": "2023-11-01", - "timeLastUpdated": "20 hours", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "mysql-operator", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.6.2", + "addonType": "system app", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "4.0.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -19831,15 +24377,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "mysql-operator", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.6.2", + "addonType": "system app", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "4.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -19855,12 +24401,12 @@ "registry": "Palette Registry - OCI" }, { - "name": "nats-operator", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.18.2", + "addonType": "system app", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "3.3.54", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -19876,33 +24422,33 @@ "registry": "Public Repo" }, { - "name": "nats-operator", - "displayName": "NATS", + "name": "palette-upgrader", + "displayName": "Palette Upgrader", "layer": "addon", - "addonType": "operator", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "0.18.2", + "version": "3.3.16", "status": "active", - "packCreateDate": "2022-11-23", - "packLastModifiedDate": "2022-11-28", - "timeLastUpdated": "11 months", + "packCreateDate": "2022-12-07", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "newrelic", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.2", + "addonType": "system app", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "4.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -19918,376 +24464,334 @@ "registry": "Public Repo" }, { - "name": "nginx", - "displayName": "Nginx", + "name": "palette-upgrader", + "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "all", - "version": "0.26.1", - "status": "deprecated", - "packCreateDate": "2020-01-10", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "addonType": "system app", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "4.1.6", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", - "fips": "false", - "verified": true, + "docsURL": "", + "fips": "", + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "nginx", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.3.0", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "4.1.7", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "nginx", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.26.1", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "4.1.9", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "nginx", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.4.0", + "addonType": "system app", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "4.2.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "nginx", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.2.1", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "4.2.13", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "nginx", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.7.0", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.2.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "nginx", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5.1", + "addonType": "system app", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "3.3.16", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "nginx", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.4", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.2.4", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "nginx", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.43.0", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "4.2.7", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "nginx", - "displayName": "Nginx", - "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "all", - "version": "1.2.1", - "status": "deprecated", - "packCreateDate": "2022-01-14", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "nginx", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.1", + "addonType": "system app", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "4.2.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "nginx", - "displayName": "Nginx", + "name": "palette-upgrader", + "displayName": "Palette Upgrader", "layer": "addon", - "addonType": "ingress", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.3.0", + "version": "3.0.51", "status": "deprecated", - "packCreateDate": "2022-01-14", + "packCreateDate": "2022-12-07", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "nginx", - "displayName": "Nginx", + "name": "palette-upgrader", + "displayName": "Palette Upgrader", "layer": "addon", - "addonType": "ingress", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.0.4", + "version": "3.0.70", "status": "deprecated", - "packCreateDate": "2022-01-14", + "packCreateDate": "2022-12-07", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "nginx", - "displayName": "Nginx", + "name": "palette-upgrader", + "displayName": "Palette Upgrader", "layer": "addon", - "addonType": "ingress", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.5.1", - "status": "active", - "packCreateDate": "2022-01-14", + "version": "3.0.95", + "status": "deprecated", + "packCreateDate": "2022-12-07", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "nginx", - "displayName": "Nginx", + "name": "palette-upgrader", + "displayName": "Palette Upgrader", "layer": "addon", - "addonType": "ingress", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.4.0", - "status": "active", - "packCreateDate": "2022-01-14", + "version": "3.1.26", + "status": "deprecated", + "packCreateDate": "2022-12-07", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "nginx", - "displayName": "Nginx", + "name": "palette-upgrader", + "displayName": "Palette Upgrader", "layer": "addon", - "addonType": "ingress", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.7.0", + "version": "3.2.24", "status": "active", - "packCreateDate": "2022-01-14", + "packCreateDate": "2022-12-07", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "nginx", - "displayName": "Nginx", - "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "all", - "version": "0.43.0", - "status": "deprecated", - "packCreateDate": "2021-01-28", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "nginx", - "displayName": "Nginx", + "name": "palette-upgrader", + "displayName": "Palette Upgrader", "layer": "addon", - "addonType": "ingress", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.8.1", + "version": "3.2.37", "status": "active", - "packCreateDate": "2022-01-14", - "packLastModifiedDate": "2023-09-15", - "timeLastUpdated": "1 months", + "packCreateDate": "2022-12-07", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/nginx", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, @@ -20296,411 +24800,306 @@ "registry": "Palette Registry - OCI" }, { - "name": "ngrok-ingress-controller", - "displayName": "ngrok Ingress Controller", + "name": "palette-upgrader", + "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "all", - "version": "0.9.0", - "status": "active", - "packCreateDate": "2023-05-17", - "packLastModifiedDate": "2023-05-24", - "timeLastUpdated": "5 months", - "releaseType": "Community", - "contributor": "ngrok", + "addonType": "system app", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "4.0.8", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "ngrok-ingress-controller", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "ingress", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.9.0", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.0.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "ngrok", + "releaseType": "", + "contributor": "", "docsURL": "", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Palette Registry - OCI" }, { - "name": "nvidia-gpu-operator", + "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "22.9.2", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "4.0.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "nvidia-gpu-operator", + "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.9.1", - "status": "deprecated", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "4.0.17", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "nvidia-gpu-operator", - "displayName": "Nvidia GPU Operator", + "name": "palette-upgrader", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.9.1", - "status": "deprecated", - "packCreateDate": "2022-03-07", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "4.0.19", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", + "prodStatus": "unknown", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "nvidia-gpu-operator", - "displayName": "Nvidia GPU Operator", + "name": "palette-upgrader", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "23.3.2", - "status": "active", - "packCreateDate": "2022-03-07", - "packLastModifiedDate": "2023-07-31", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "4.0.6", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "nvidia-gpu-operator", + "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "22.9.0", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "4.0.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "nvidia-gpu-operator", - "displayName": "Nvidia GPU Operator", + "name": "palette-upgrader", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "22.9.2", - "status": "active", - "packCreateDate": "2022-03-07", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.0.8", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "nvidia-gpu-operator", + "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "23.3.2", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "4.1.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "nvidia-gpu-operator", - "displayName": "Nvidia GPU Operator", + "name": "palette-upgrader", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "22.9.0", - "status": "active", - "packCreateDate": "2022-03-07", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "4.1.12", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "open-policy-agent", - "displayName": "OpenPolicyAgent", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "3.6.0", - "status": "deprecated", - "packCreateDate": "2020-06-04", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "open-policy-agent", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.5.1", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.1.6", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "open-policy-agent", - "displayName": "OpenPolicyAgent", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "3.5.1", - "status": "deprecated", - "packCreateDate": "2020-06-04", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "open-policy-agent", - "displayName": "OpenPolicyAgent", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "3.7.0", - "status": "active", - "packCreateDate": "2022-02-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" - }, - { - "name": "open-policy-agent", - "displayName": "OpenPolicyAgent", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "3.11.0", - "status": "active", - "packCreateDate": "2022-02-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "open-policy-agent", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.7.0", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.1.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "open-policy-agent", - "displayName": "OpenPolicyAgent", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "3.9.0", - "status": "active", - "packCreateDate": "2022-02-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "open-policy-agent", - "displayName": "OpenPolicyAgent", + "name": "palette-upgrader", + "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "3.12.0", - "status": "active", - "packCreateDate": "2022-02-02", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "addonType": "system app", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "4.0.6", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "open-policy-agent", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.11.0", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.1.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "open-policy-agent", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.12.0", + "addonType": "system app", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "3.2.37", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -20716,54 +25115,54 @@ "registry": "Public Repo" }, { - "name": "open-policy-agent", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.6.0", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "4.2.12", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "open-policy-agent", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.9.0", + "addonType": "system app", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "4.2.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "opensuse-k3s", + "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.22.9-k3s0", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "4.2.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -20779,54 +25178,54 @@ "registry": "Palette Registry - OCI" }, { - "name": "opensuse-k3s", - "displayName": "openSuSE-K3s", + "name": "palette-upgrader", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.22.9-k3s0", - "status": "active", - "packCreateDate": "2022-05-23", - "packLastModifiedDate": "2022-06-30", - "timeLastUpdated": "1 years", - "releaseType": "Experimental", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "4.2.4", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "opensuse-k3s", - "displayName": "openSuSE-K3s", + "name": "palette-upgrader", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.21.12-k3s0", - "status": "active", - "packCreateDate": "2022-05-23", - "packLastModifiedDate": "2022-06-01", - "timeLastUpdated": "1 years", - "releaseType": "Experimental", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "4.2.7", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "opensuse-k3s", + "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.21.12-k3s0", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "4.2.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -20842,19 +25241,19 @@ "registry": "Palette Registry - OCI" }, { - "name": "outcold-monitoring", + "name": "palette-upgrader", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "5.0.0", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.0.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/collectord", + "releaseType": "", + "contributor": "", + "docsURL": "", "fips": "", "verified": false, "inProduction": true, @@ -20862,34 +25261,13 @@ "gitRepo": "", "registry": "Public Repo" }, - { - "name": "outcold-monitoring", - "displayName": "Outcold Solutions", - "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "5.0.0", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/collectord", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" - }, { "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.7", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "4.0.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -20909,8 +25287,8 @@ "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.5", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "4.0.17", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -20930,9 +25308,9 @@ "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.16", - "status": "unknown", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "3.0.51", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -20942,100 +25320,100 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.7", - "status": "unknown", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "3.0.70", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.7", - "status": "unknown", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "3.0.95", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.6", - "status": "unknown", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "3.1.26", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.8", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "3.2.24", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "palette-upgrader", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", "version": "4.0.19", "status": "unknown", "packCreateDate": "", @@ -21049,142 +25427,394 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "palette-upgrader", + "name": "permission-manager", + "displayName": "Permission Manager", + "layer": "addon", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "1.0.0", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/permission-manager", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Public Repo" + }, + { + "name": "permission-manager", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.6", + "addonType": "authentication", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/permission-manager", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Palette Community Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.5", + "cloudTypesFormatted": "libvirt", + "version": "1.0.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.15", + "cloudTypesFormatted": "libvirt", + "version": "1.0.11", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.17", + "cloudTypesFormatted": "libvirt", + "version": "1.0.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", - "displayName": "", + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.13", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "cloudTypesFormatted": "libvirt", + "version": "1.0.4", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", - "fips": "", - "verified": false, + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.5", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.11", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-10-12", + "timeLastUpdated": "4 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.0", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.1", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.10", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.2", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.3", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.6", + "cloudTypesFormatted": "libvirt", + "version": "1.0.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.6", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.7", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.8", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "pfsense-vm-libvirt", + "displayName": "Pfsense VM Libvirt", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "libvirt", + "version": "1.0.9", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.70", - "status": "deprecated", + "cloudTypesFormatted": "libvirt", + "version": "1.0.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -21194,18 +25824,18 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.51", - "status": "deprecated", + "cloudTypesFormatted": "libvirt", + "version": "1.0.1", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -21215,80 +25845,80 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.7", + "cloudTypesFormatted": "libvirt", + "version": "1.0.10", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.17", + "cloudTypesFormatted": "libvirt", + "version": "1.0.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.19", + "cloudTypesFormatted": "libvirt", + "version": "1.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.2.24", + "cloudTypesFormatted": "libvirt", + "version": "1.0.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -21304,80 +25934,80 @@ "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.54", + "cloudTypesFormatted": "libvirt", + "version": "1.0.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-libvirt", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.15", + "cloudTypesFormatted": "libvirt", + "version": "1.0.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-vsphere", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.13", + "cloudTypesFormatted": "vsphere", + "version": "1.0.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", - "displayName": "Palette Upgrader", + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "3.3.16", + "cloudTypesFormatted": "vsphere", + "version": "1.0.4", "status": "active", - "packCreateDate": "2022-12-07", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", "fips": "false", @@ -21388,180 +26018,201 @@ "registry": "Public Repo" }, { - "name": "palette-upgrader", - "displayName": "Palette Upgrader", + "name": "pfsense-vm-vsphere", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "3.2.24", - "status": "active", - "packCreateDate": "2022-12-07", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "vsphere", + "version": "1.0.8", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", - "displayName": "Palette Upgrader", + "name": "pfsense-vm-vsphere", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "3.2.37", - "status": "active", - "packCreateDate": "2022-12-07", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "vsphere", + "version": "1.0.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", - "displayName": "Palette Upgrader", + "name": "pfsense-vm-vsphere", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "3.0.70", - "status": "deprecated", - "packCreateDate": "2022-12-07", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "vsphere", + "version": "1.0.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", - "displayName": "Palette Upgrader", + "name": "pfsense-vm-vsphere", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "3.0.95", - "status": "deprecated", - "packCreateDate": "2022-12-07", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "vsphere", + "version": "1.0.9", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Public Repo" + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", - "displayName": "Palette Upgrader", + "name": "pfsense-vm-vsphere", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "3.1.26", - "status": "deprecated", - "packCreateDate": "2022-12-07", + "cloudTypesFormatted": "vsphere", + "version": "1.0.4", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.9", + "status": "active", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "palette-upgrader", - "displayName": "Palette Upgrader", + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "3.0.51", - "status": "deprecated", - "packCreateDate": "2022-12-07", + "cloudTypesFormatted": "vsphere", + "version": "1.0.8", + "status": "active", + "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-vsphere", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.8", + "cloudTypesFormatted": "vsphere", + "version": "1.0.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", - "displayName": "", + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.6", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "cloudTypesFormatted": "vsphere", + "version": "1.0.6", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", - "fips": "", - "verified": false, + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "palette-upgrader", + "name": "pfsense-vm-vsphere", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.2.37", + "cloudTypesFormatted": "vsphere", + "version": "1.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -21577,100 +26228,79 @@ "registry": "Palette Registry - OCI" }, { - "name": "palette-upgrader", - "displayName": "", + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.95", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "vsphere", + "version": "1.0.2", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "palette-upgrader", - "displayName": "", + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.1.26", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "vsphere", + "version": "1.0.11", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-10-12", + "timeLastUpdated": "4 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "permission-manager", - "displayName": "", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/permission-manager", - "fips": "", - "verified": false, - "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "permission-manager", - "displayName": "Permission Manager", + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "all", - "version": "1.0.0", + "addonType": "system app", + "cloudTypesFormatted": "vsphere", + "version": "1.0.10", "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/permission-manager", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.9", + "cloudTypesFormatted": "vsphere", + "version": "1.0.1", "status": "active", "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -21679,36 +26309,36 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", - "displayName": "", + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "vsphere", + "version": "1.0.0", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", + "name": "pfsense-vm-vsphere", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.9", + "cloudTypesFormatted": "vsphere", + "version": "1.0.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -21721,35 +26351,35 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-libvirt", - "displayName": "", + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", + "cloudTypesFormatted": "vsphere", "version": "1.0.7", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", + "name": "pfsense-vm-vsphere", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", + "cloudTypesFormatted": "vsphere", "version": "1.0.6", "status": "unknown", "packCreateDate": "", @@ -21763,36 +26393,36 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-libvirt", - "displayName": "", + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.5", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "vsphere", + "version": "1.0.3", + "status": "active", + "packCreateDate": "2022-06-22", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", + "name": "pfsense-vm-vsphere", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.2", + "cloudTypesFormatted": "vsphere", + "version": "1.0.10", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -21805,15 +26435,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-libvirt", + "name": "pfsense-vm-vsphere", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.0", + "cloudTypesFormatted": "vsphere", + "version": "1.0.11", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -21829,16 +26459,16 @@ "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", + "name": "pfsense-vm-vsphere", + "displayName": "Pfsense VM vsphere", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.7", + "cloudTypesFormatted": "vsphere", + "version": "1.0.5", "status": "active", "packCreateDate": "2022-06-22", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -21847,64 +26477,64 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", + "name": "portworx-add-on", + "displayName": "Portworx /w Operator", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.5", + "cloudTypesFormatted": "aws,azure,gcp,vsphere,edge,edge-native,maas,openstack,eks,aks,tke,custom", + "version": "3.0.4", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "packCreateDate": "2022-07-14", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.6", - "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "name": "portworx-add-on", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,edge-native,maas,openstack,eks,tke", + "version": "2.13.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", + "name": "portworx-add-on", + "displayName": "Portworx /w Operator", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.2", + "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", + "version": "2.12.0", "status": "active", - "packCreateDate": "2022-06-22", + "packCreateDate": "2022-07-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "false", "verified": true, "inProduction": true, @@ -21913,19 +26543,19 @@ "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", + "name": "portworx-add-on", + "displayName": "Portworx /w Operator", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.4", + "cloudTypesFormatted": "aws,azure,gcp,vsphere,edge,edge-native,maas,openstack,eks,aks,tke,custom", + "version": "3.0.3", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "packCreateDate": "2022-07-14", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "false", "verified": true, "inProduction": true, @@ -21934,40 +26564,40 @@ "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", + "name": "portworx-add-on", + "displayName": "Portworx /w Operator", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.3", - "status": "active", - "packCreateDate": "2022-06-22", + "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", + "version": "2.11.2", + "status": "deprecated", + "packCreateDate": "2022-07-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", + "name": "portworx-add-on", + "displayName": "Portworx /w Operator", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.1", + "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,edge-native,maas,openstack,eks,tke", + "version": "2.13.6", "status": "active", - "packCreateDate": "2022-06-22", + "packCreateDate": "2022-07-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "false", "verified": true, "inProduction": true, @@ -21976,19 +26606,19 @@ "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-libvirt", + "name": "portworx-add-on", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.8", + "cloudTypesFormatted": "aws,azure,gcp,vsphere,edge,edge-native,maas,openstack,eks,aks,tke,custom", + "version": "3.0.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "", "verified": true, "inProduction": true, @@ -21997,40 +26627,40 @@ "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", + "name": "portworx-add-on", + "displayName": "Portworx /w Operator", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.8", + "cloudTypesFormatted": "aws,azure,gcp,vsphere,edge,edge-native,maas,openstack,eks,aks,tke", + "version": "3.0.0", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "packCreateDate": "2022-07-14", + "packLastModifiedDate": "2023-08-10", + "timeLastUpdated": "6 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", + "name": "portworx-add-on", + "displayName": "Portworx /w Operator", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.11", + "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,edge-native,maas,openstack,eks,tke", + "version": "2.13.3", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-10-12", - "timeLastUpdated": "2 weeks", - "releaseType": "Experimental", + "packCreateDate": "2022-07-14", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "false", "verified": true, "inProduction": true, @@ -22039,124 +26669,145 @@ "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", + "name": "portworx-add-on", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.0", - "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,edge-native,maas,openstack,eks,tke", + "version": "2.13.6", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", - "displayName": "Pfsense VM Libvirt", + "name": "portworx-add-on", + "displayName": "Portworx /w Operator", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.10", - "status": "active", - "packCreateDate": "2022-06-22", + "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", + "version": "2.11.4", + "status": "deprecated", + "packCreateDate": "2022-07-14", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-libvirt", + "name": "portworx-add-on", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.10", - "status": "unknown", + "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", + "version": "2.11.2", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "portworx-add-on", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", + "version": "2.11.4", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", "gitRepo": "", "registry": "Public Repo" }, { - "name": "pfsense-vm-libvirt", + "name": "portworx-add-on", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.1", + "cloudTypesFormatted": "aws,azure,gcp,vsphere,edge,edge-native,maas,openstack,eks,aks,tke,custom", + "version": "3.0.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-libvirt", + "name": "portworx-add-on", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.11", + "cloudTypesFormatted": "aws,azure,gcp,vsphere,edge,edge-native,maas,openstack,eks,aks,tke", + "version": "3.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-libvirt", + "name": "portworx-add-on", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "libvirt", - "version": "1.0.4", + "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", + "version": "2.12.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/portworx", "fips": "", "verified": true, "inProduction": true, @@ -22165,124 +26816,145 @@ "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "postgres-operator", + "displayName": "PostgreSQL", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.4", + "addonType": "operator", + "cloudTypesFormatted": "all", + "version": "1.10.0", "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "packCreateDate": "2022-10-07", + "packLastModifiedDate": "2023-11-01", + "timeLastUpdated": "4 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-vsphere", + "name": "postgres-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.9", + "addonType": "operator", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "1.10.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", + "name": "postgresql-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.4", + "addonType": "operator", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.8.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-vsphere", + "name": "postgresql-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.3", + "addonType": "operator", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "1.8.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", + "name": "prismacloud", + "displayName": "Prisma Cloud Compute", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "20.09.0", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/prisma-cloud", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" + }, + { + "name": "prismacloud", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.11", + "addonType": "security", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "20.09.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "https://docs.spectrocloud.com/integrations/prisma-cloud", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", + "name": "prometheus-agent", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.10", + "addonType": "monitoring", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "19.0.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-agent", "fips": "", "verified": true, "inProduction": true, @@ -22291,61 +26963,122 @@ "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-vsphere", + "name": "prometheus-agent", + "displayName": "Prometheus Agent", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "19.0.2", + "status": "active", + "packCreateDate": "2022-03-02", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-agent", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "prometheus-grafana", + "displayName": "Prometheus-Grafana", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "9.7.2", + "status": "active", + "packCreateDate": "2020-01-02", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "false", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "prometheus-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.1", - "status": "unknown", + "addonType": "monitoring", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "30.0.3", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.9", - "status": "active", - "packCreateDate": "2022-06-22", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "30.0.3", + "status": "deprecated", + "packCreateDate": "2022-01-20", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.0", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "55.8.3", "status": "active", - "packCreateDate": "2022-06-22", + "packCreateDate": "2022-01-20", + "packLastModifiedDate": "2024-02-28", + "timeLastUpdated": "2 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "45.25.0", + "status": "active", + "packCreateDate": "2022-01-20", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "false", "verified": true, "inProduction": true, @@ -22354,19 +27087,40 @@ "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.8", - "status": "active", - "packCreateDate": "2022-06-22", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "12.3.0", + "status": "deprecated", + "packCreateDate": "2021-01-28", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "51.0.3", + "status": "active", + "packCreateDate": "2022-01-20", + "packLastModifiedDate": "2023-12-14", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "false", "verified": true, "inProduction": true, @@ -22375,61 +27129,82 @@ "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", - "displayName": "", + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.2", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "46.4.0", + "status": "active", + "packCreateDate": "2022-01-20", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "45.4.0", + "status": "active", + "packCreateDate": "2022-01-20", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", - "fips": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", + "name": "prometheus-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.8", + "addonType": "monitoring", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "45.25.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.7", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "44.3.0", "status": "active", - "packCreateDate": "2022-06-22", + "packCreateDate": "2022-01-20", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "false", "verified": true, "inProduction": true, @@ -22438,19 +27213,19 @@ "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.5", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "40.5.0", "status": "active", - "packCreateDate": "2022-06-22", + "packCreateDate": "2022-01-20", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "false", "verified": true, "inProduction": true, @@ -22459,166 +27234,166 @@ "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "prometheus-operator", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.6", - "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "addonType": "monitoring", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "39.13.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", - "docsURL": "", - "fips": "false", - "verified": true, + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.2", - "status": "active", - "packCreateDate": "2022-06-22", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "37.2.0", + "status": "deprecated", + "packCreateDate": "2022-01-20", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.3", - "status": "active", - "packCreateDate": "2022-06-22", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "35.5.1", + "status": "deprecated", + "packCreateDate": "2022-01-20", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.11", - "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-10-12", - "timeLastUpdated": "2 weeks", - "releaseType": "Experimental", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "30.2.0", + "status": "deprecated", + "packCreateDate": "2022-01-20", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "prometheus-operator", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.1", - "status": "active", - "packCreateDate": "2022-06-22", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "addonType": "monitoring", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "35.5.1", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", - "fips": "false", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-vsphere", - "displayName": "Pfsense VM vsphere", + "name": "prometheus-operator", + "displayName": "Prometheus - Grafana", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.10", - "status": "active", - "packCreateDate": "2022-06-22", + "addonType": "monitoring", + "cloudTypesFormatted": "all", + "version": "19.2.3", + "status": "deprecated", + "packCreateDate": "2022-01-20", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "pfsense-vm-vsphere", + "name": "prometheus-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.0", + "addonType": "monitoring", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "51.0.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-vsphere", + "name": "prometheus-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.6", + "addonType": "monitoring", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "46.4.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "", "verified": true, "inProduction": true, @@ -22627,19 +27402,19 @@ "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-vsphere", + "name": "prometheus-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.7", + "addonType": "monitoring", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "45.4.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "", "verified": true, "inProduction": true, @@ -22648,19 +27423,19 @@ "registry": "Palette Registry - OCI" }, { - "name": "pfsense-vm-vsphere", + "name": "prometheus-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "vsphere", - "version": "1.0.5", + "addonType": "monitoring", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "44.3.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "", "verified": true, "inProduction": true, @@ -22669,145 +27444,103 @@ "registry": "Palette Registry - OCI" }, { - "name": "portworx-add-on", - "displayName": "Portworx /w Operator", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,azure,gcp,vsphere,edge,edge-native,maas,openstack,eks,aks,tke", - "version": "3.0.0", - "status": "active", - "packCreateDate": "2022-07-14", - "packLastModifiedDate": "2023-08-10", - "timeLastUpdated": "2 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", - "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "portworx-add-on", + "name": "prometheus-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", - "version": "2.11.2", - "status": "deprecated", + "addonType": "monitoring", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "40.5.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "portworx-add-on", - "displayName": "Portworx /w Operator", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,edge-native,maas,openstack,eks,tke", - "version": "2.13.6", - "status": "active", - "packCreateDate": "2022-07-14", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", - "fips": "false", - "verified": true, - "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { - "name": "portworx-add-on", + "name": "prometheus-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,edge-native,maas,openstack,eks,tke", - "version": "2.13.3", - "status": "unknown", + "addonType": "monitoring", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "30.2.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "portworx-add-on", + "name": "prometheus-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,azure,gcp,vsphere,edge,edge-native,maas,openstack,eks,aks,tke", - "version": "3.0.0", - "status": "unknown", + "addonType": "monitoring", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "37.2.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "portworx-add-on", + "name": "prometheus-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", - "version": "2.12.0", - "status": "unknown", + "addonType": "monitoring", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "19.2.3", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "portworx-add-on", + "name": "prometheus-operator", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", - "version": "2.11.4", + "addonType": "monitoring", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "12.3.0", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", "fips": "", "verified": true, "inProduction": true, @@ -22816,137 +27549,159 @@ "registry": "Palette Registry - OCI" }, { - "name": "portworx-add-on", - "displayName": "Portworx /w Operator", + "name": "qualys-agent", + "displayName": "Qualys Cloud Agent", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", - "version": "2.11.4", - "status": "deprecated", - "packCreateDate": "2022-07-14", + "cloudTypesFormatted": "eks", + "version": "1.0.0", + "status": "active", + "packCreateDate": "2020-11-07", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "portworx-add-on", - "displayName": "Portworx /w Operator", + "name": "qualys-agent", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", - "version": "2.12.0", - "status": "active", - "packCreateDate": "2022-07-14", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", - "fips": "false", - "verified": true, + "cloudTypesFormatted": "eks", + "version": "1.0.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "portworx-add-on", - "displayName": "Portworx /w Operator", + "name": "rbac-manager", + "displayName": "Fairwinds RBAC Manager", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,maas,openstack,eks,tke", - "version": "2.11.2", - "status": "deprecated", - "packCreateDate": "2022-07-14", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "1.9.0", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", + "contributor": "spectrocloud", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "prodStatus": "unknown", + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" }, { - "name": "portworx-add-on", - "displayName": "Portworx /w Operator", + "name": "rbac-manager", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,edge-native,maas,openstack,eks,tke", - "version": "2.13.3", + "addonType": "authentication", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "1.9.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "redis-operator", + "displayName": "Redis", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "all", + "version": "6.2.18-3", "status": "active", - "packCreateDate": "2022-07-14", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packCreateDate": "2022-10-10", + "packLastModifiedDate": "2022-11-28", + "timeLastUpdated": "1 years", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "portworx-add-on", - "displayName": "", + "name": "redis-operator", + "displayName": "Redis", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,azure,aks,vsphere,edge,edge-native,maas,openstack,eks,tke", - "version": "2.13.6", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "addonType": "operator", + "cloudTypesFormatted": "all", + "version": "6.2.19-1", + "status": "active", + "packCreateDate": "2022-10-10", + "packLastModifiedDate": "2022-12-19", + "timeLastUpdated": "1 years", + "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/portworx", - "fips": "", - "verified": true, + "docsURL": "", + "fips": "false", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "postgres-operator", - "displayName": "PostgreSQL", + "name": "redis-operator", + "displayName": "Redis", "layer": "addon", "addonType": "operator", "cloudTypesFormatted": "all", - "version": "1.10.0", + "version": "6.2.12-1", "status": "active", - "packCreateDate": "2022-10-07", - "packLastModifiedDate": "2023-11-01", - "timeLastUpdated": "20 hours", + "packCreateDate": "2022-10-10", + "packLastModifiedDate": "2022-10-13", + "timeLastUpdated": "1 years", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": false, - "prodStatus": "deleted", + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "" + "registry": "Palette Registry - OCI" }, { - "name": "postgresql-operator", + "name": "redis-operator", "displayName": "", "layer": "addon", "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.2", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "6.2.19-1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -22962,12 +27717,12 @@ "registry": "Public Repo" }, { - "name": "postgresql-operator", + "name": "redis-operator", "displayName": "", "layer": "addon", "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.2", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "6.2.18-3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -22980,43 +27735,22 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" - }, - { - "name": "prismacloud", - "displayName": "Prisma Cloud Compute", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "all", - "version": "20.09.0", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/prisma-cloud", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" }, { - "name": "prismacloud", + "name": "redis-operator", "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "20.09.0", + "addonType": "operator", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "6.2.12-1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "https://docs.spectrocloud.com/integrations/prisma-cloud", + "releaseType": "", + "contributor": "", + "docsURL": "", "fips": "", "verified": false, "inProduction": true, @@ -23025,557 +27759,474 @@ "registry": "Public Repo" }, { - "name": "prometheus-agent", - "displayName": "Prometheus Agent", + "name": "registry-creds", + "displayName": "Registry Credentials", "layer": "addon", - "addonType": "monitoring", + "addonType": "registry", "cloudTypesFormatted": "all", - "version": "19.0.2", + "version": "1.10.0", "status": "active", - "packCreateDate": "2022-03-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packCreateDate": "2020-07-14", + "packLastModifiedDate": "2020-07-13", + "timeLastUpdated": "3 years", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-agent", + "docsURL": "https://docs.spectrocloud.com/integrations/registrycreds", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "prometheus-agent", + "name": "registry-creds", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "19.0.2", + "addonType": "registry", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "1.10.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-agent", + "docsURL": "https://docs.spectrocloud.com/integrations/registrycreds", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "prometheus-grafana", - "displayName": "Prometheus-Grafana", + "name": "reloader", + "displayName": "Reloader", "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "9.7.2", + "version": "1.0.43", "status": "active", - "packCreateDate": "2020-01-02", - "packLastModifiedDate": "2023-07-21", + "packCreateDate": "2022-02-02", + "packLastModifiedDate": "2023-11-27", "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", + "releaseType": "Stable", + "contributor": "", "docsURL": "", "fips": "false", - "verified": false, - "prodStatus": "deleted", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "" + "registry": "Public Repo" }, { - "name": "prometheus-operator", + "name": "reloader", "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "46.4.0", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "0.0.118", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "prometheus-operator", - "displayName": "Prometheus - Grafana", + "name": "reloader", + "displayName": "Reloader", "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "12.3.0", + "version": "0.0.104", "status": "deprecated", - "packCreateDate": "2021-01-28", + "packCreateDate": "2022-02-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "prometheus-operator", - "displayName": "", - "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "40.5.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", "registry": "Public Repo" }, { - "name": "prometheus-operator", + "name": "reloader", "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "30.2.0", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "0.0.104", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "prometheus-operator", - "displayName": "", + "name": "reloader", + "displayName": "Reloader", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "30.0.3", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "all", + "version": "1.0.40", + "status": "active", + "packCreateDate": "2022-02-02", + "packLastModifiedDate": "2023-09-15", + "timeLastUpdated": "5 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", - "fips": "", + "docsURL": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "prometheus-operator", - "displayName": "", + "name": "reloader", + "displayName": "Reloader", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "37.2.0", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "all", + "version": "1.0.24", + "status": "active", + "packCreateDate": "2022-02-02", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", - "fips": "", + "docsURL": "", + "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", + "prodStatus": "unknown", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "prometheus-operator", + "name": "reloader", "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "45.25.0", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "0.0.129", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "prometheus-operator", - "displayName": "", - "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "35.5.1", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "prometheus-operator", - "displayName": "Prometheus - Grafana", + "name": "reloader", + "displayName": "Reloader", "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "45.4.0", + "version": "0.0.129", "status": "active", - "packCreateDate": "2022-01-20", + "packCreateDate": "2022-02-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "prometheus-operator", - "displayName": "Prometheus - Grafana", + "name": "reloader", + "displayName": "Reloader", "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "19.2.3", - "status": "deprecated", - "packCreateDate": "2022-01-20", + "version": "0.0.118", + "status": "active", + "packCreateDate": "2022-02-02", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "prometheus-operator", - "displayName": "Prometheus - Grafana", + "name": "reloader", + "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "30.0.3", - "status": "deprecated", - "packCreateDate": "2022-01-20", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "1.0.43", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", - "fips": "false", + "docsURL": "", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", + "prodStatus": "unknown", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "prometheus-operator", + "name": "reloader", "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "44.3.0", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "1.0.40", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "docsURL": "", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "prometheus-operator", - "displayName": "Prometheus - Grafana", + "name": "reloader", + "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "35.5.1", - "status": "deprecated", - "packCreateDate": "2022-01-20", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "1.0.24", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", - "fips": "false", + "docsURL": "", + "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "pax", + "prodStatus": "unknown", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "prometheus-operator", - "displayName": "Prometheus - Grafana", - "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "30.2.0", - "status": "deprecated", - "packCreateDate": "2022-01-20", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "name": "rhel-vmware", + "displayName": "RHEL", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "vsphere", + "version": "8.1", + "status": "active", + "packCreateDate": "2020-02-24", + "packLastModifiedDate": "2020-07-13", + "timeLastUpdated": "3 years", + "releaseType": "Experimental", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "prometheus-operator", - "displayName": "Prometheus - Grafana", + "name": "sapp-hipster", + "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "44.3.0", - "status": "active", - "packCreateDate": "2022-01-20", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", - "fips": "false", - "verified": true, + "addonType": "system app", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "3.0.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "prometheus-operator", - "displayName": "Prometheus - Grafana", + "name": "sapp-hipster", + "displayName": "Hipster Commerce", "layer": "addon", - "addonType": "monitoring", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "45.25.0", + "version": "2.0.0", "status": "active", - "packCreateDate": "2022-01-20", + "packCreateDate": "2020-04-26", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "prometheus-operator", - "displayName": "Prometheus - Grafana", + "name": "sapp-hipster", + "displayName": "Hipster Commerce", "layer": "addon", - "addonType": "monitoring", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "40.5.0", + "version": "3.0.0", "status": "active", - "packCreateDate": "2022-01-20", + "packCreateDate": "2020-04-26", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "prometheus-operator", - "displayName": "Prometheus - Grafana", + "name": "sapp-hipster", + "displayName": "Hipster Commerce", "layer": "addon", - "addonType": "monitoring", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "46.4.0", + "version": "1.0.0", "status": "active", - "packCreateDate": "2022-01-20", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "packCreateDate": "2020-04-26", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", "fips": "false", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "prometheus-operator", - "displayName": "", - "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "39.13.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", - "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { - "name": "prometheus-operator", - "displayName": "Prometheus - Grafana", + "name": "sapp-hipster", + "displayName": "Hipster Commerce", "layer": "addon", - "addonType": "monitoring", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "37.2.0", - "status": "deprecated", - "packCreateDate": "2022-01-20", + "version": "4.0.0", + "status": "active", + "packCreateDate": "2020-04-26", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", + "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, - { - "name": "prometheus-operator", - "displayName": "", - "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "12.3.0", - "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "deprecated", - "gitRepo": "", "registry": "Public Repo" }, { - "name": "prometheus-operator", + "name": "sapp-hipster", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "19.2.3", - "status": "deprecated", + "addonType": "system app", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "1.0.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "prometheus-operator", + "name": "sapp-hipster", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "45.4.0", + "addonType": "system app", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "1.1.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/prometheus-operator", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "qualys-agent", + "name": "sapp-hipster", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "eks", - "version": "1.0.0", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "2.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -23591,16 +28242,16 @@ "registry": "Palette Registry - OCI" }, { - "name": "qualys-agent", - "displayName": "Qualys Cloud Agent", + "name": "sapp-hipster", + "displayName": "Hipster Commerce", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "eks", - "version": "1.0.0", + "cloudTypesFormatted": "all", + "version": "1.1.0", "status": "active", - "packCreateDate": "2020-11-07", + "packCreateDate": "2020-04-26", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -23612,33 +28263,12 @@ "registry": "Public Repo" }, { - "name": "rbac-manager", - "displayName": "Fairwinds RBAC Manager", - "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "all", - "version": "1.9.0", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" - }, - { - "name": "rbac-manager", + "name": "sapp-hipster", "displayName": "", "layer": "addon", - "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.0", + "addonType": "system app", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "4.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -23651,36 +28281,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" - }, - { - "name": "redis-operator", - "displayName": "Redis", - "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "all", - "version": "6.2.19-1", - "status": "active", - "packCreateDate": "2022-10-10", - "packLastModifiedDate": "2022-12-19", - "timeLastUpdated": "10 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "redis-operator", + "name": "seccomp", "displayName": "", "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "6.2.19-1", + "addonType": "security", + "cloudTypesFormatted": "aws", + "version": "0.4.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -23693,41 +28302,41 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Spectro Addon Repo" }, { - "name": "redis-operator", - "displayName": "Redis", + "name": "signalfx", + "displayName": "", "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "all", - "version": "6.2.12-1", - "status": "active", - "packCreateDate": "2022-10-10", - "packLastModifiedDate": "2022-10-13", - "timeLastUpdated": "1 years", - "releaseType": "Stable", + "addonType": "monitoring", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "4.19.2", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "redis-operator", - "displayName": "Redis", + "name": "slem-rke2", + "displayName": "SLE Micro-RKE2", "layer": "addon", - "addonType": "operator", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "6.2.18-3", + "version": "1.22.9", "status": "active", - "packCreateDate": "2022-10-10", - "packLastModifiedDate": "2022-11-28", - "timeLastUpdated": "11 months", - "releaseType": "Stable", + "packCreateDate": "2022-05-23", + "packLastModifiedDate": "2022-06-10", + "timeLastUpdated": "1 years", + "releaseType": "Experimental", "contributor": "", "docsURL": "", "fips": "false", @@ -23738,12 +28347,12 @@ "registry": "Palette Registry - OCI" }, { - "name": "redis-operator", + "name": "slem-rke2", "displayName": "", "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "6.2.12-1", + "addonType": "system app", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "1.22.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -23756,15 +28365,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "redis-operator", + "name": "slem-rke2", "displayName": "", "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "6.2.18-3", + "addonType": "system app", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "1.21.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -23780,58 +28389,177 @@ "registry": "Public Repo" }, { - "name": "registry-creds", - "displayName": "", + "name": "slem-rke2", + "displayName": "SLE Micro-RKE2", "layer": "addon", - "addonType": "registry", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.10.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "addonType": "system app", + "cloudTypesFormatted": "all", + "version": "1.21.12", + "status": "active", + "packCreateDate": "2022-05-23", + "packLastModifiedDate": "2022-06-10", + "timeLastUpdated": "1 years", + "releaseType": "Experimental", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/registrycreds", - "fips": "", + "docsURL": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { - "name": "registry-creds", - "displayName": "Registry Credentials", - "layer": "addon", - "addonType": "registry", - "cloudTypesFormatted": "all", - "version": "1.10.0", + "name": "sles-edge", + "displayName": "SLES", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "edge", + "version": "15.3", "status": "active", - "packCreateDate": "2020-07-14", - "packLastModifiedDate": "2020-07-13", - "timeLastUpdated": "3 years", + "packCreateDate": "2022-03-30", + "packLastModifiedDate": "2022-03-31", + "timeLastUpdated": "1 years", "releaseType": "Stable", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/registrycreds", + "docsURL": "", "fips": "false", "verified": false, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "" }, { - "name": "reloader", - "displayName": "Reloader", + "name": "sles-libvirt", + "displayName": "SLES", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "libvirt", + "version": "15.3", + "status": "active", + "packCreateDate": "2022-03-30", + "packLastModifiedDate": "2022-05-27", + "timeLastUpdated": "1 years", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "sles-libvirt", + "displayName": "SLES", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "libvirt", + "version": "15.4.1", + "status": "active", + "packCreateDate": "2022-03-30", + "packLastModifiedDate": "2023-05-02", + "timeLastUpdated": "10 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "sles-libvirt", + "displayName": "SLES", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "libvirt", + "version": "15.4", + "status": "active", + "packCreateDate": "2022-03-30", + "packLastModifiedDate": "2022-07-26", + "timeLastUpdated": "1 years", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "sles-vsphere", + "displayName": "SLES", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "vsphere", + "version": "15.3", + "status": "active", + "packCreateDate": "2022-03-30", + "packLastModifiedDate": "2022-03-31", + "timeLastUpdated": "1 years", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "sles-vsphere", + "displayName": "SLES", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "vsphere", + "version": "15.4.1", + "status": "active", + "packCreateDate": "2022-03-30", + "packLastModifiedDate": "2023-05-02", + "timeLastUpdated": "10 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "sles-vsphere", + "displayName": "SLES", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "vsphere", + "version": "15.4", + "status": "active", + "packCreateDate": "2022-03-30", + "packLastModifiedDate": "2022-07-19", + "timeLastUpdated": "1 years", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "spectro-byo-manifest", + "displayName": "BYO Manifest", "layer": "addon", - "addonType": "monitoring", + "addonType": "system app", "cloudTypesFormatted": "all", - "version": "1.0.24", + "version": "1.0.0", "status": "active", - "packCreateDate": "2022-02-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packCreateDate": "2020-11-07", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -23840,36 +28568,78 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "spectro-byo-manifest", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.0.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "reloader", - "displayName": "Reloader", + "name": "spectro-cluster-metrics", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "3.4.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "spectro-grafana-dashboards", + "displayName": "Spectro Grafana Dashboards", "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "0.0.104", - "status": "deprecated", - "packCreateDate": "2022-02-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "version": "4.0.0", + "status": "active", + "packCreateDate": "2023-05-31", + "packLastModifiedDate": "2023-08-16", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { - "name": "reloader", + "name": "spectro-grafana-dashboards", "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.0.129", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "4.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -23885,19 +28655,19 @@ "registry": "Public Repo" }, { - "name": "reloader", - "displayName": "Reloader", + "name": "spectro-k8s-dashboard", + "displayName": "Spectro Kubernetes Dashboard", "layer": "addon", - "addonType": "monitoring", + "addonType": "integration", "cloudTypesFormatted": "all", - "version": "0.0.129", + "version": "2.7.0", "status": "active", - "packCreateDate": "2022-02-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packCreateDate": "2021-11-10", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", "fips": "false", "verified": true, "inProduction": true, @@ -23906,40 +28676,40 @@ "registry": "Palette Registry - OCI" }, { - "name": "reloader", - "displayName": "Reloader", + "name": "spectro-k8s-dashboard", + "displayName": "Spectro Kubernetes Dashboard", "layer": "addon", - "addonType": "monitoring", + "addonType": "integration", "cloudTypesFormatted": "all", - "version": "1.0.40", + "version": "2.7.1", "status": "active", - "packCreateDate": "2022-02-02", - "packLastModifiedDate": "2023-09-15", - "timeLastUpdated": "1 months", + "packCreateDate": "2021-11-10", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "reloader", + "name": "spectro-k8s-dashboard", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.0.118", + "addonType": "integration", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "2.7.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", "fips": "", "verified": true, "inProduction": true, @@ -23948,144 +28718,144 @@ "registry": "Public Repo" }, { - "name": "reloader", + "name": "spectro-k8s-dashboard", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.24", + "addonType": "integration", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "2.7.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "reloader", - "displayName": "Reloader", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "0.0.118", - "status": "active", - "packCreateDate": "2022-02-02", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Stable", + "addonType": "spectro", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "4.2.7", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "reloader", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.40", + "addonType": "spectro", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.1.17", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "reloader", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.0.104", - "status": "deprecated", + "addonType": "spectro", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.1.14", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "rhel-vmware", - "displayName": "RHEL", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "vsphere", - "version": "8.1", - "status": "active", - "packCreateDate": "2020-02-24", - "packLastModifiedDate": "2020-07-13", - "timeLastUpdated": "3 years", - "releaseType": "Experimental", + "name": "spectro-mgmt", + "displayName": "", + "layer": "addon", + "addonType": "spectro", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.1.13", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "sapp-hipster", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.1.0", + "addonType": "spectro", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "2.1.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "", + "contributor": "", "docsURL": "", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "sapp-hipster", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.0", + "addonType": "spectro", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "2.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "", + "contributor": "", "docsURL": "", "fips": "", "verified": false, @@ -24095,123 +28865,123 @@ "registry": "Public Repo" }, { - "name": "sapp-hipster", - "displayName": "Hipster Commerce", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.0.0", - "status": "active", - "packCreateDate": "2020-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", + "addonType": "spectro", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.0.6", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "sapp-hipster", - "displayName": "Hipster Commerce", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.1.0", - "status": "active", - "packCreateDate": "2020-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", + "addonType": "spectro", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "2.0.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "sapp-hipster", - "displayName": "Hipster Commerce", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "3.0.0", - "status": "active", - "packCreateDate": "2020-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", + "addonType": "spectro", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "3.4.75", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "sapp-hipster", - "displayName": "Hipster Commerce", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "4.0.0", - "status": "active", - "packCreateDate": "2020-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", + "addonType": "spectro", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.9.30", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "sapp-hipster", - "displayName": "Hipster Commerce", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "2.0.0", - "status": "active", - "packCreateDate": "2020-04-26", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", + "addonType": "spectro", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.9.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "sapp-hipster", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.0", + "addonType": "spectro", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "1.9.29", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "", + "contributor": "", "docsURL": "", "fips": "", "verified": false, @@ -24221,18 +28991,18 @@ "registry": "Public Repo" }, { - "name": "sapp-hipster", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.0.0", + "addonType": "spectro", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "1.9.25", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "", + "contributor": "", "docsURL": "", "fips": "", "verified": false, @@ -24242,33 +29012,33 @@ "registry": "Public Repo" }, { - "name": "sapp-hipster", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.0", + "addonType": "spectro", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "1.9.24", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "", + "contributor": "", "docsURL": "", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "seccomp", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws", - "version": "0.4.2", + "addonType": "spectro", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "1.9.23", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24281,15 +29051,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Spectro Addon Repo" + "registry": "Public Repo" }, { - "name": "signalfx", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.19.2", + "addonType": "spectro", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "1.9.21", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24305,33 +29075,33 @@ "registry": "Public Repo" }, { - "name": "slem-rke2", - "displayName": "SLE Micro-RKE2", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.21.12", - "status": "active", - "packCreateDate": "2022-05-23", - "packLastModifiedDate": "2022-06-10", - "timeLastUpdated": "1 years", - "releaseType": "Experimental", + "addonType": "spectro", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "1.9.20", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "slem-rke2", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.21.12", + "addonType": "spectro", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "1.9.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24347,33 +29117,33 @@ "registry": "Public Repo" }, { - "name": "slem-rke2", - "displayName": "SLE Micro-RKE2", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.22.9", - "status": "active", - "packCreateDate": "2022-05-23", - "packLastModifiedDate": "2022-06-10", - "timeLastUpdated": "1 years", - "releaseType": "Experimental", + "addonType": "spectro", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "1.9.11", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "slem-rke2", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.22.9", + "addonType": "spectro", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "1.8.33", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24389,194 +29159,54 @@ "registry": "Public Repo" }, { - "name": "sles-edge", - "displayName": "SLES", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "edge", - "version": "15.3", - "status": "active", - "packCreateDate": "2022-03-30", - "packLastModifiedDate": "2022-03-31", - "timeLastUpdated": "1 years", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "sles-libvirt", - "displayName": "SLES", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "libvirt", - "version": "15.4", - "status": "active", - "packCreateDate": "2022-03-30", - "packLastModifiedDate": "2022-07-26", - "timeLastUpdated": "1 years", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "sles-libvirt", - "displayName": "SLES", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "libvirt", - "version": "15.3", - "status": "active", - "packCreateDate": "2022-03-30", - "packLastModifiedDate": "2022-05-27", - "timeLastUpdated": "1 years", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "sles-libvirt", - "displayName": "SLES", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "libvirt", - "version": "15.4.1", - "status": "active", - "packCreateDate": "2022-03-30", - "packLastModifiedDate": "2023-05-02", - "timeLastUpdated": "6 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "sles-vsphere", - "displayName": "SLES", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "vsphere", - "version": "15.4.1", - "status": "active", - "packCreateDate": "2022-03-30", - "packLastModifiedDate": "2023-05-02", - "timeLastUpdated": "6 months", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "sles-vsphere", - "displayName": "SLES", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "vsphere", - "version": "15.3", - "status": "active", - "packCreateDate": "2022-03-30", - "packLastModifiedDate": "2022-03-31", - "timeLastUpdated": "1 years", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "sles-vsphere", - "displayName": "SLES", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "vsphere", - "version": "15.4", - "status": "active", - "packCreateDate": "2022-03-30", - "packLastModifiedDate": "2022-07-19", - "timeLastUpdated": "1 years", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "prodStatus": "deleted", - "gitRepo": "pax", - "registry": "" - }, - { - "name": "spectro-byo-manifest", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.0", + "addonType": "spectro", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "3.0.14", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "spectro-byo-manifest", - "displayName": "BYO Manifest", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "all", - "version": "1.0.0", - "status": "active", - "packCreateDate": "2020-11-07", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "addonType": "spectro", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "3.4.74", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "spectro-cluster-metrics", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.1", + "addonType": "spectro", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "2.8.20", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24592,138 +29222,138 @@ "registry": "Public Repo" }, { - "name": "spectro-grafana-dashboards", - "displayName": "Spectro Grafana Dashboards", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "all", - "version": "4.0.0", - "status": "active", - "packCreateDate": "2023-05-31", - "packLastModifiedDate": "2023-08-16", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "addonType": "spectro", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "1.8.25", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { - "name": "spectro-grafana-dashboards", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.0", + "addonType": "spectro", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "1.8.21", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, { - "name": "spectro-k8s-dashboard", - "displayName": "Spectro Kubernetes Dashboard", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "integration", - "cloudTypesFormatted": "all", - "version": "2.7.0", - "status": "active", - "packCreateDate": "2021-11-10", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "addonType": "spectro", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "1.8.20", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", - "fips": "false", - "verified": true, + "docsURL": "", + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "spectro-k8s-dashboard", - "displayName": "Spectro Kubernetes Dashboard", + "name": "spectro-mgmt", + "displayName": "", "layer": "addon", - "addonType": "integration", - "cloudTypesFormatted": "all", - "version": "2.7.1", - "status": "active", - "packCreateDate": "2021-11-10", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "addonType": "spectro", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "1.8.19", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", - "fips": "false", - "verified": true, + "docsURL": "", + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "spectro-k8s-dashboard", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "integration", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.1", + "addonType": "spectro", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "1.8.18", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "spectro-k8s-dashboard", + "name": "spectro-mgmt", "displayName": "", "layer": "addon", - "addonType": "integration", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.0", + "addonType": "spectro", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "1.8.17", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/kubernetes-dashboard", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5.6", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "1.8.16", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24743,8 +29373,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.69", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "1.8.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24764,8 +29394,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.52", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "1.7.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24785,8 +29415,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.68", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "1.7.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24806,8 +29436,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.65", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "1.7.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24827,8 +29457,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.43", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "1.7.11", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24848,8 +29478,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.32", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.6.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24869,8 +29499,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.37", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "1.6.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24890,8 +29520,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.28", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.6.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24911,8 +29541,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.31", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.6.11", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24932,8 +29562,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.24", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "1.6.10", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24953,8 +29583,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.20", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.6.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24974,8 +29604,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.5.28", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "1.5.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -24995,8 +29625,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.5.27", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.5.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25016,8 +29646,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.5.20", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "1.5.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25037,8 +29667,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.5.23", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.5.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25058,8 +29688,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.5.25", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "1.5.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25079,8 +29709,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.43", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "1.8.28", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25100,8 +29730,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.45", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "1.5.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25121,8 +29751,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.42", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.14.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25142,8 +29772,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.38", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.14.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25163,8 +29793,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.21", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.14.36", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25184,8 +29814,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.22", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.14.35", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25205,8 +29835,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.2.36", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "1.14.34", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25226,8 +29856,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.20", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "1.14.33", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25247,8 +29877,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.2.35", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "1.14.32", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25268,8 +29898,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.9", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.14.31", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25289,8 +29919,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.2.33", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "1.14.27", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25310,8 +29940,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.2.26", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "1.14.24", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25331,8 +29961,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.17", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "1.14.22", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25352,8 +29982,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.5", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "1.14.21", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25373,8 +30003,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.2", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "1.14.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25394,8 +30024,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.13", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "1.14.18", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25415,8 +30045,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.14", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "1.14.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25436,8 +30066,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.12", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.13.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25457,8 +30087,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.0.6", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "1.13.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25478,8 +30108,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.0.7", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "1.13.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25499,8 +30129,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.0.3", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "1.13.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25520,8 +30150,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.3", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "1.13.17", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25541,8 +30171,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.31", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.13.16", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25562,8 +30192,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.30", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.13.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25583,8 +30213,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.25", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.13.14", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25604,8 +30234,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.29", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "1.13.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25625,8 +30255,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.24", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "1.13.10", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25646,8 +30276,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.23", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "1.13.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25667,8 +30297,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.20", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "1.12.20", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25688,8 +30318,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.21", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "1.12.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25709,8 +30339,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.12", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.12.14", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25730,8 +30360,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.9.11", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.12.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25751,8 +30381,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.33", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "1.12.10", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25772,8 +30402,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.32", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.11.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25793,8 +30423,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.28", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "1.11.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25814,8 +30444,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.26", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "1.11.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25835,8 +30465,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.25", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.11.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25856,8 +30486,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.21", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.10.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25877,8 +30507,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.20", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "1.10.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25898,8 +30528,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.17", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "1.10.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25919,8 +30549,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.19", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.10.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25940,8 +30570,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.18", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "1.10.11", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25961,8 +30591,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.12", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "4.2.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -25975,15 +30605,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.8.16", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "2.1.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26003,8 +30633,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.7.4", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "4.2.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26017,15 +30647,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.7.12", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "4.2.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26038,15 +30668,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.7.2", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "4.2.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26059,15 +30689,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.7.11", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "4.2.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26080,15 +30710,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.6.9", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "4.1.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26101,15 +30731,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.6.12", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "4.1.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26122,15 +30752,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.6.4", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "4.1.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26143,15 +30773,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.6.11", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "4.1.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26164,15 +30794,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.6.1", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "4.0.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26185,15 +30815,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.6.10", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "4.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26206,15 +30836,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5.7", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.0.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26227,15 +30857,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5.5", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "3.4.81", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26255,8 +30885,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.70", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "3.4.96", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26276,8 +30906,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5.2", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "3.4.98", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26297,8 +30927,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5.4", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "4.0.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26318,8 +30948,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5.1", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "4.0.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26339,8 +30969,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.5.0", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "4.0.17", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26360,8 +30990,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.8", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "4.0.19", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26381,8 +31011,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.4", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "4.0.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26402,8 +31032,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.34", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "4.0.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26423,8 +31053,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.36", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "4.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26444,8 +31074,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.35", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "4.0.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26465,8 +31095,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.32", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "4.1.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26486,8 +31116,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.31", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "4.0.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26500,15 +31130,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.33", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "4.0.19", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26521,15 +31151,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.27", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "4.0.17", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26542,15 +31172,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.22", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "4.0.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26563,15 +31193,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.24", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "4.0.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26584,15 +31214,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.21", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "4.2.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26612,8 +31242,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.2", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "4.2.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26633,8 +31263,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.18", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "4.2.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26654,8 +31284,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.15", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "4.2.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26675,8 +31305,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.9", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "4.2.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26696,8 +31326,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.6", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.2.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26717,8 +31347,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.5", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "4.1.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26738,8 +31368,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.17", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "4.1.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26759,8 +31389,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.2", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "4.1.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26780,8 +31410,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.16", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.9.31", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26801,8 +31431,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.14", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "1.5.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26822,8 +31452,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.15", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "3.4.71", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26843,8 +31473,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.10", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "3.4.67", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26864,8 +31494,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.1", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "3.4.48", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26885,8 +31515,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.13", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "3.4.34", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26906,8 +31536,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.12.14", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "3.4.25", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26927,8 +31557,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.12.20", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "3.4.117", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26948,8 +31578,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.12.15", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "3.4.114", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26969,8 +31599,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.11.9", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "3.4.113", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -26990,8 +31620,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.12.10", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "3.4.106", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27011,8 +31641,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.12.13", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "3.4.105", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27032,8 +31662,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.11.5", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "3.3.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27053,8 +31683,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.11.6", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "3.3.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27074,8 +31704,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.11.2", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "3.3.62", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27095,8 +31725,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.10.5", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "3.3.61", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27116,8 +31746,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.10.9", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "3.3.59", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27137,8 +31767,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.10.6", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "3.3.55", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27158,8 +31788,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.10.2", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "3.3.37", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27179,8 +31809,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.27", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "3.3.35", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27200,8 +31830,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.10.11", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "3.3.27", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27221,8 +31851,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.7", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "3.2.32", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27242,8 +31872,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.2.32", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "3.2.28", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27263,8 +31893,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.7", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "3.1.38", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27284,8 +31914,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.6", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "3.1.37", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27305,8 +31935,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.8", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "3.1.19", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27326,8 +31956,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.6", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "3.1.11", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27347,8 +31977,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.19", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "3.0.89", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27368,8 +31998,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.5", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "3.0.88", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27389,8 +32019,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.17", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "3.0.84", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27410,8 +32040,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.7", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "3.0.80", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27424,15 +32054,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.13", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "3.0.66", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27452,8 +32082,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.15", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "3.0.58", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27473,8 +32103,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.7", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "3.0.40", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27487,15 +32117,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.6", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "3.0.39", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27508,15 +32138,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.8", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "3.0.35", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27529,15 +32159,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.6", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "3.0.32", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27550,15 +32180,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.5", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "3.0.27", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27571,15 +32201,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.19", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "1.8.32", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27592,15 +32222,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.17", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "2.8.41", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27613,15 +32243,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.13", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.8.40", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27634,15 +32264,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.15", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "2.8.34", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27655,15 +32285,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.35", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.8.29", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27683,8 +32313,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.37", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "1.8.26", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27704,8 +32334,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.98", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "2.8.10", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27725,8 +32355,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.96", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "2.7.44", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27746,8 +32376,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.81", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "2.7.36", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27767,8 +32397,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.71", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "2.7.32", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27788,8 +32418,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.75", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "2.7.31", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27809,8 +32439,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.74", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.7.30", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27830,8 +32460,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.67", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "2.7.29", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27851,8 +32481,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.34", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "2.7.28", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27872,8 +32502,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.48", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "2.7.21", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27893,8 +32523,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.25", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.7.18", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27914,8 +32544,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.113", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "2.7.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27935,8 +32565,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.114", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "2.7.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27956,8 +32586,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.8", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "2.6.70", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27977,8 +32607,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.106", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "2.6.69", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -27998,8 +32628,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.105", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "2.6.68", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28019,8 +32649,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.61", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "2.6.65", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28040,8 +32670,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.62", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "2.6.52", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28061,8 +32691,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.59", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "2.6.43", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28082,8 +32712,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.55", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "2.6.37", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28103,8 +32733,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.7", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.6.32", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28124,8 +32754,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.1.37", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "2.6.31", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28145,8 +32775,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.2.28", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.6.28", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28166,8 +32796,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.1.38", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "2.6.24", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28187,8 +32817,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.1.19", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "2.6.20", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28208,8 +32838,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.1.11", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.5.28", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28229,8 +32859,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.89", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.5.27", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28250,8 +32880,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.88", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "2.5.25", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28271,8 +32901,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.84", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.5.23", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28292,8 +32922,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.80", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "2.5.20", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28313,8 +32943,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.40", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "2.3.45", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28334,8 +32964,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.66", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.3.43", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28355,8 +32985,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.58", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "2.3.42", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28376,8 +33006,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.32", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.3.38", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28397,8 +33027,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.39", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "2.3.22", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28418,8 +33048,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.35", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "2.3.21", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28439,8 +33069,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.41", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "2.3.20", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28460,8 +33090,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.27", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "2.2.36", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28481,8 +33111,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.14", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "2.2.35", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28502,8 +33132,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.40", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "2.2.33", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28523,8 +33153,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.34", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "2.2.26", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28544,8 +33174,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.29", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "2.1.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28565,8 +33195,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.20", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.1.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28582,12 +33212,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.44", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "4.2.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28603,12 +33233,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.10", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.0.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28624,12 +33254,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.36", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "2.3.42", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28645,12 +33275,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.31", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "4.2.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28666,12 +33296,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.32", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "2.3.22", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28687,12 +33317,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.30", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "2.3.21", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28708,12 +33338,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.28", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "2.3.20", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28729,12 +33359,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.29", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "2.2.36", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28750,12 +33380,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.18", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "2.2.35", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28771,12 +33401,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.21", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "2.2.33", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28792,12 +33422,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.15", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.2.26", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28813,12 +33443,12 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt", + "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.13", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "2.1.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28838,7 +33468,7 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", "version": "2.1.5", "status": "unknown", "packCreateDate": "", @@ -28859,8 +33489,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.5", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "2.1.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28880,8 +33510,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.20", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "2.1.17", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28901,8 +33531,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.10", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "2.1.14", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28922,8 +33552,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.36", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.1.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28943,8 +33573,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.31", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "2.1.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28964,8 +33594,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.32", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -28985,8 +33615,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.30", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "2.0.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29006,8 +33636,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.113", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "2.0.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29027,8 +33657,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.29", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "1.14.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29048,8 +33678,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.18", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.14.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29069,8 +33699,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.21", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "1.14.36", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29090,8 +33720,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.15", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "1.14.35", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29111,8 +33741,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.13", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "1.14.34", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29132,8 +33762,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.69", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "1.14.33", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29153,8 +33783,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.70", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "1.14.32", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29174,8 +33804,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.52", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "1.14.31", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29195,8 +33825,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.68", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.14.27", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29216,8 +33846,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.65", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.14.24", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29237,8 +33867,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.37", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "1.14.22", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29258,8 +33888,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.43", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.14.21", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29279,8 +33909,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.32", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "1.14.2", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29300,8 +33930,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.28", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "1.14.18", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29321,8 +33951,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.31", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.14.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29342,8 +33972,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.24", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "1.13.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29363,8 +33993,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.5.28", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.13.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29384,8 +34014,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.6.20", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.13.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29405,8 +34035,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.5.27", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "1.13.17", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29426,8 +34056,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.5.25", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "4.1.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29447,8 +34077,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.5.20", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "4.1.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29468,8 +34098,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.5.23", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas", + "version": "1.13.16", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29489,8 +34119,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.43", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "1.13.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29510,8 +34140,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.45", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "1.13.14", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29531,8 +34161,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.42", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "1.13.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29552,8 +34182,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.21", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "1.13.10", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29573,8 +34203,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.38", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "4.2.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29594,8 +34224,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.22", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "4.2.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29615,8 +34245,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.2.35", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "4.2.4", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29636,8 +34266,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.3.20", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "2.3.45", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29657,8 +34287,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.2.36", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "4.2.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29678,8 +34308,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.2.33", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "4.0.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29692,15 +34322,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.9", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "4.0.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29713,15 +34343,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.2.26", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "4.0.17", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29734,15 +34364,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.34", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "4.0.19", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29755,15 +34385,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.17", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "4.0.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29776,15 +34406,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.2", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "4.0.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29797,15 +34427,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.81", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "4.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29818,15 +34448,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.14", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "4.0.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29839,15 +34469,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.13", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "4.1.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29860,15 +34490,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.0.3", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "4.1.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29881,15 +34511,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.0.6", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "4.1.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29902,15 +34532,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.0.7", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "4.1.9", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29923,15 +34553,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.4", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "4.2.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29944,15 +34574,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.36", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "4.2.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29965,15 +34595,36 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.8", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "4.2.3", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "spectro-mgmt-lb", + "displayName": "", + "layer": "addon", + "addonType": "spectro", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.1.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -29993,8 +34644,71 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.33", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "4.2.9", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "spectro-mgmt-lb", + "displayName": "", + "layer": "addon", + "addonType": "spectro", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "4.2.7", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "spectro-mgmt-lb", + "displayName": "", + "layer": "addon", + "addonType": "spectro", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "4.2.4", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, + { + "name": "spectro-mgmt-lb", + "displayName": "", + "layer": "addon", + "addonType": "spectro", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "2.5.23", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30014,8 +34728,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.34", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.5.25", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30035,8 +34749,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.35", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.5.27", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30056,8 +34770,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.27", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "2.5.28", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30077,8 +34791,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.31", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "2.6.20", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30098,8 +34812,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.32", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "3.3.27", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30119,8 +34833,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.22", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "2.3.38", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30140,8 +34854,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.21", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "4.0.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30161,8 +34875,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.24", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "2.3.43", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30182,8 +34896,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.15", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "4.0.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30203,8 +34917,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.18", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "2.5.20", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30224,8 +34938,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.14.2", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.0.5", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30245,8 +34959,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.6", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.0.19", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30266,8 +34980,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.5", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "4.0.17", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30287,8 +35001,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.9", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "4.0.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30308,8 +35022,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.17", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", + "version": "4.0.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30329,8 +35043,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.15", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "3.4.98", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30350,8 +35064,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.16", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "3.4.96", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30371,8 +35085,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.14", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "3.4.81", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30392,8 +35106,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.10", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "3.4.75", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30413,8 +35127,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.13.13", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "3.4.74", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30434,8 +35148,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.34", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "3.4.71", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30455,7 +35169,7 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", "version": "3.4.67", "status": "unknown", "packCreateDate": "", @@ -30476,7 +35190,7 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", "version": "3.4.48", "status": "unknown", "packCreateDate": "", @@ -30497,8 +35211,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.74", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "3.4.34", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30518,8 +35232,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.71", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "3.4.25", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30539,8 +35253,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.75", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "3.4.117", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30560,8 +35274,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.98", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "3.4.114", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30581,8 +35295,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.15", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "3.4.113", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30602,8 +35316,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.96", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "3.4.106", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30623,8 +35337,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.13", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "3.4.105", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30644,8 +35358,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.17", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "3.3.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30665,8 +35379,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.40", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "3.3.7", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30686,8 +35400,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.19", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "3.3.62", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30707,8 +35421,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.6", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "3.3.61", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30728,8 +35442,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.8", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "3.3.59", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30749,8 +35463,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.6", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "3.3.55", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30770,8 +35484,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.7", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "3.3.37", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30791,8 +35505,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.7", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "3.3.35", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30812,8 +35526,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.13", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "4.1.6", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30826,15 +35540,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.15", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "3.2.32", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30847,15 +35561,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.19", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "3.2.28", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30868,15 +35582,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.5", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "3.1.38", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30889,15 +35603,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.17", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "3.1.37", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30910,15 +35624,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.7", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "3.1.19", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30931,15 +35645,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.6", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "3.1.11", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30952,15 +35666,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.8", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "3.0.89", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30973,15 +35687,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.7", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "3.0.88", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -30994,15 +35708,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.6", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "3.0.84", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31015,15 +35729,15 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-mgmt-lb", "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.25", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "3.0.80", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31043,8 +35757,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.29", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "3.0.66", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31064,8 +35778,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.14", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", + "version": "3.0.58", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31085,8 +35799,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.8.41", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", + "version": "3.0.40", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31106,8 +35820,29 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.27", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "3.0.39", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "spectro-mgmt-lb", + "displayName": "", + "layer": "addon", + "addonType": "spectro", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "3.0.35", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31127,7 +35862,7 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", "version": "3.0.32", "status": "unknown", "packCreateDate": "", @@ -31148,8 +35883,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.39", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", + "version": "3.0.27", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31169,8 +35904,29 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.35", + "cloudTypesFormatted": "openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all", + "version": "3.0.14", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "spectro-mgmt-lb", + "displayName": "", + "layer": "addon", + "addonType": "spectro", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "2.8.41", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31190,8 +35946,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.40", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "2.8.40", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31211,8 +35967,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.66", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "2.8.34", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31232,8 +35988,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.58", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "2.8.29", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31253,8 +36009,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.80", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "2.8.20", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31274,8 +36030,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.84", + "cloudTypesFormatted": "all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent", + "version": "2.8.10", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31295,8 +36051,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.88", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.7.44", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31316,8 +36072,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.1.11", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "2.7.36", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31337,8 +36093,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.1.19", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "2.7.32", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31358,8 +36114,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.0.89", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "2.7.31", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31379,8 +36135,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.1.38", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.7.30", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31400,8 +36156,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.2.28", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "2.7.29", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31421,8 +36177,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.1.37", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "2.7.28", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31442,8 +36198,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.27", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.7.21", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31463,8 +36219,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.2.32", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", + "version": "2.7.18", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31484,8 +36240,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.35", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.7.15", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31505,8 +36261,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.55", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "2.7.13", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31526,8 +36282,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.37", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "2.6.70", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31547,8 +36303,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.59", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", + "version": "2.6.69", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31568,8 +36324,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.62", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", + "version": "2.6.68", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31589,8 +36345,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.61", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "2.6.65", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31610,8 +36366,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.7", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", + "version": "2.6.52", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31631,8 +36387,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.105", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "2.6.43", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31652,8 +36408,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.106", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "2.6.37", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31673,8 +36429,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.3.8", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "2.6.32", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31694,8 +36450,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.44", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "2.6.31", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31715,8 +36471,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "3.4.114", + "cloudTypesFormatted": "tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke", + "version": "2.6.28", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31736,8 +36492,8 @@ "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.7.28", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "2.6.24", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -31753,21 +36509,21 @@ "registry": "Public Repo" }, { - "name": "spectro-mgmt-lb", + "name": "spectro-namespace-labeler", "displayName": "", "layer": "addon", - "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "2.1.12", + "addonType": "system app", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", @@ -31783,7 +36539,7 @@ "status": "active", "packCreateDate": "2022-01-17", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -31794,33 +36550,12 @@ "gitRepo": "pax", "registry": "Palette Registry - OCI" }, - { - "name": "spectro-namespace-labeler", - "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": true, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" - }, { "name": "spectro-nodes-task-handler", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", "version": "1.0.0", "status": "unknown", "packCreateDate": "", @@ -31841,7 +36576,7 @@ "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", "version": "1.0.0", "status": "unknown", "packCreateDate": "", @@ -31867,7 +36602,7 @@ "status": "active", "packCreateDate": "2021-11-15", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -31884,11 +36619,11 @@ "layer": "addon", "addonType": "authentication", "cloudTypesFormatted": "all", - "version": "1.4.1", + "version": "1.3.0", "status": "active", "packCreateDate": "2023-07-20", "packLastModifiedDate": "2023-08-26", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "VerteX", "contributor": "", "docsURL": "", @@ -31897,27 +36632,47 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax-fips", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-proxy", - "displayName": "", + "displayName": "Spectro Proxy", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.2.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "all", + "version": "1.5.1", + "status": "active", + "packCreateDate": "2021-05-24", + "packLastModifiedDate": "2024-01-30", + "timeLastUpdated": "1 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "spectro-proxy", + "displayName": "Spectro Proxy", + "layer": "addon", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "1.4.1", + "status": "active", + "packCreateDate": "2023-07-20", + "packLastModifiedDate": "2023-08-26", + "timeLastUpdated": "6 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "", + "fips": "true", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax-fips", "registry": "Palette Registry - OCI" }, { @@ -31926,11 +36681,11 @@ "layer": "addon", "addonType": "authentication", "cloudTypesFormatted": "all", - "version": "1.0.0", + "version": "1.1.0", "status": "deprecated", "packCreateDate": "2021-05-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -31939,7 +36694,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-proxy", @@ -31951,7 +36706,7 @@ "status": "active", "packCreateDate": "2021-05-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -31960,7 +36715,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-proxy", @@ -31972,7 +36727,7 @@ "status": "active", "packCreateDate": "2021-05-24", "packLastModifiedDate": "2023-07-31", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -31981,7 +36736,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "spectro-proxy", @@ -31989,11 +36744,11 @@ "layer": "addon", "addonType": "authentication", "cloudTypesFormatted": "all", - "version": "1.1.0", + "version": "1.0.0", "status": "deprecated", "packCreateDate": "2021-05-24", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -32010,19 +36765,39 @@ "layer": "addon", "addonType": "authentication", "cloudTypesFormatted": "all", - "version": "1.3.0", + "version": "1.5.0", "status": "active", - "packCreateDate": "2023-07-20", - "packLastModifiedDate": "2023-08-26", - "timeLastUpdated": "2 months", - "releaseType": "VerteX", + "packCreateDate": "2021-05-24", + "packLastModifiedDate": "2024-01-10", + "timeLastUpdated": "1 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "true", - "verified": false, + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, + { + "name": "spectro-proxy", + "displayName": "", + "layer": "addon", + "addonType": "authentication", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "1.0.0", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax-fips", + "prodStatus": "deprecated", + "gitRepo": "", "registry": "Public Repo" }, { @@ -32030,9 +36805,9 @@ "displayName": "", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.4.1", - "status": "unknown", + "cloudTypesFormatted": "maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp", + "version": "1.1.0", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -32042,7 +36817,7 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Palette Registry - OCI" }, @@ -32051,8 +36826,8 @@ "displayName": "", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.4.0", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "1.2.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -32065,14 +36840,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-proxy", "displayName": "", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", "version": "1.3.0", "status": "unknown", "packCreateDate": "", @@ -32086,16 +36861,16 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "spectro-proxy", "displayName": "", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.1.0", - "status": "deprecated", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "1.4.0", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -32105,18 +36880,38 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, + { + "name": "spectro-proxy", + "displayName": "Spectro Proxy", + "layer": "addon", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "1.5.2", + "status": "active", + "packCreateDate": "2021-05-24", + "packLastModifiedDate": "2024-02-27", + "timeLastUpdated": "3 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, { "name": "spectro-proxy", "displayName": "", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.0", - "status": "deprecated", + "cloudTypesFormatted": "tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal", + "version": "1.4.1", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -32126,10 +36921,30 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Public Repo" }, + { + "name": "spectro-proxy", + "displayName": "Spectro Proxy", + "layer": "addon", + "addonType": "authentication", + "cloudTypesFormatted": "all", + "version": "1.4.2", + "status": "active", + "packCreateDate": "2021-05-24", + "packLastModifiedDate": "2024-02-27", + "timeLastUpdated": "3 days", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": true, + "prodStatus": "deleted", + "gitRepo": "pax", + "registry": "" + }, { "name": "spectro-rbac", "displayName": "Spectro RBAC", @@ -32140,7 +36955,7 @@ "status": "active", "packCreateDate": "2021-05-25", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -32156,7 +36971,7 @@ "displayName": "", "layer": "addon", "addonType": "authentication", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere", "version": "1.0.0", "status": "unknown", "packCreateDate": "", @@ -32174,45 +36989,45 @@ }, { "name": "spectro-registry", - "displayName": "", + "displayName": "Spectro Registry", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all", "version": "1.0.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "status": "active", + "packCreateDate": "2020-03-06", + "packLastModifiedDate": "2020-07-13", + "timeLastUpdated": "3 years", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { "name": "spectro-registry", - "displayName": "Spectro Registry", + "displayName": "", "layer": "addon", "addonType": "spectro", - "cloudTypesFormatted": "all", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", "version": "1.0.0", - "status": "active", - "packCreateDate": "2020-03-06", - "packLastModifiedDate": "2020-07-13", - "timeLastUpdated": "3 years", - "releaseType": "Stable", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { "name": "spectro-test", @@ -32224,7 +37039,7 @@ "status": "active", "packCreateDate": "2021-01-09", "packLastModifiedDate": "2021-01-09", - "timeLastUpdated": "2 years", + "timeLastUpdated": "3 years", "releaseType": "", "contributor": "", "docsURL": "", @@ -32244,7 +37059,7 @@ "status": "active", "packCreateDate": "2020-03-06", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", @@ -32256,52 +37071,52 @@ }, { "name": "spectro-zen-of-k8s", - "displayName": "", + "displayName": "Spectro Zen of Kubernetes", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all", "version": "1.0.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", + "status": "active", + "packCreateDate": "2023-04-24", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "spectro-zen-of-k8s", - "displayName": "Spectro Zen of Kubernetes", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", "version": "1.0.0", - "status": "active", - "packCreateDate": "2023-04-24", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", "contributor": "spectrocloud", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { "name": "spectrocloud-grafana-dashboards", "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke", "version": "1.0.0", "status": "unknown", "packCreateDate": "", @@ -32319,44 +37134,44 @@ }, { "name": "splunk", - "displayName": "Splunk Connect for Kubernetes", + "displayName": "", "layer": "addon", "addonType": "logging", - "cloudTypesFormatted": "all", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", "version": "1.4.3", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", "contributor": "spectrocloud", "docsURL": "https://docs.spectrocloud.com/integrations/splunk", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", + "gitRepo": "", "registry": "Public Repo" }, { "name": "splunk", - "displayName": "", + "displayName": "Splunk Connect for Kubernetes", "layer": "addon", "addonType": "logging", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all", "version": "1.4.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "https://docs.spectrocloud.com/integrations/splunk", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pack-central", "registry": "Palette Community Registry - OCI" }, { @@ -32365,16 +37180,16 @@ "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "aws,eks", - "version": "1.0.104", + "version": "1.0.117", "status": "active", "packCreateDate": "2022-12-12", - "packLastModifiedDate": "2022-12-12", - "timeLastUpdated": "10 months", + "packLastModifiedDate": "2023-11-27", + "timeLastUpdated": "3 months", "releaseType": "Experimental", "contributor": "", "docsURL": "https://docs.spot.io/ocean/getting-started/", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", @@ -32386,41 +37201,62 @@ "layer": "addon", "addonType": "system app", "cloudTypesFormatted": "aws,eks", - "version": "1.0.104", + "version": "1.0.117", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "https://docs.spot.io/ocean/getting-started/", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, { - "name": "sr-iov", + "name": "spotinst-kubernetes-cluster-controller", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,edge", - "version": "3.4.0", + "cloudTypesFormatted": "aws,eks", + "version": "1.0.104", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "", + "releaseType": "", + "contributor": "", + "docsURL": "https://docs.spot.io/ocean/getting-started/", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Palette Registry - OCI" + }, + { + "name": "spotinst-kubernetes-cluster-controller", + "displayName": "Spot.io Controller (Helm)", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aws,eks", + "version": "1.0.104", + "status": "active", + "packCreateDate": "2022-12-12", + "packLastModifiedDate": "2022-12-12", + "timeLastUpdated": "1 years", + "releaseType": "Experimental", + "contributor": "", + "docsURL": "https://docs.spot.io/ocean/getting-started/", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "sr-iov", @@ -32432,7 +37268,7 @@ "status": "active", "packCreateDate": "2023-02-03", "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", + "timeLastUpdated": "1 years", "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "", @@ -32448,7 +37284,7 @@ "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,edge", + "cloudTypesFormatted": "aws,edge,custom", "version": "3.4.0", "status": "unknown", "packCreateDate": "", @@ -32465,18 +37301,18 @@ "registry": "Public Repo" }, { - "name": "stormforge-optimize-live", + "name": "sr-iov", "displayName": "", "layer": "addon", - "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.7.8", + "addonType": "system app", + "cloudTypesFormatted": "aws,edge", + "version": "3.4.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", - "contributor": "", + "releaseType": "community", + "contributor": "spectrocloud", "docsURL": "", "fips": "", "verified": false, @@ -32491,62 +37327,83 @@ "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "0.7.8", + "version": "0.7.2", "status": "active", - "packCreateDate": "2023-04-25", - "packLastModifiedDate": "2023-04-25", - "timeLastUpdated": "6 months", - "releaseType": "Community", - "contributor": "", + "packCreateDate": "2023-01-31", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Experimental", + "contributor": "spectrocloud", "docsURL": "", "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", + "gitRepo": "pax", "registry": "Public Repo" }, + { + "name": "stormforge-optimize-live", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "0.7.2", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", + "contributor": "spectrocloud", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Palette Registry - OCI" + }, { "name": "stormforge-optimize-live", "displayName": "Stormforge-Optimize-Live", "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "0.7.2", + "version": "0.7.8", "status": "active", - "packCreateDate": "2023-01-31", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", - "releaseType": "Experimental", - "contributor": "spectrocloud", + "packCreateDate": "2023-04-25", + "packLastModifiedDate": "2023-04-25", + "timeLastUpdated": "10 months", + "releaseType": "Community", + "contributor": "", "docsURL": "", "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "pack-central", + "registry": "Public Repo" }, { "name": "stormforge-optimize-live", "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.7.2", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "0.7.8", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", + "releaseType": "", + "contributor": "", "docsURL": "", "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Community Registry - OCI" }, { "name": "suc", @@ -32558,7 +37415,7 @@ "status": "active", "packCreateDate": "2022-05-23", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Experimental", "contributor": "", "docsURL": "", @@ -32567,14 +37424,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "suc", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", "version": "0.8.0", "status": "unknown", "packCreateDate": "", @@ -32588,14 +37445,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "sumologic", "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "gke,all,openstack,coxedge,tke,gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws", "version": "0.14.0", "status": "unknown", "packCreateDate": "", @@ -32616,7 +37473,7 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks", "version": "1.0.0", "status": "unknown", "packCreateDate": "", @@ -32634,44 +37491,44 @@ }, { "name": "tekton-chains", - "displayName": "", + "displayName": "Tekton Chains", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all", "version": "0.12.0", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "https://github.com/tektoncd/chains", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pack-central", "registry": "Palette Community Registry - OCI" }, { "name": "tekton-chains", - "displayName": "Tekton Chains", + "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "all", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", "version": "0.12.0", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", "contributor": "spectrocloud", "docsURL": "https://github.com/tektoncd/chains", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", + "gitRepo": "", "registry": "Public Repo" }, { @@ -32684,7 +37541,7 @@ "status": "active", "packCreateDate": "2023-02-03", "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", + "timeLastUpdated": "1 years", "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "https://github.com/tektoncd/operator", @@ -32700,7 +37557,7 @@ "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", "version": "0.61.0", "status": "unknown", "packCreateDate": "", @@ -32716,26 +37573,46 @@ "gitRepo": "", "registry": "Public Repo" }, + { + "name": "tetragon", + "displayName": "", + "layer": "addon", + "addonType": "monitoring", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "0.10.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, { "name": "tetragon", "displayName": "Cilium Tetragon", "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "0.10.0", + "version": "1.0.1", "status": "active", "packCreateDate": "2022-11-23", - "packLastModifiedDate": "2023-09-13", - "timeLastUpdated": "1 months", + "packLastModifiedDate": "2024-02-06", + "timeLastUpdated": "3 weeks", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "" }, { "name": "tetragon", @@ -32743,11 +37620,11 @@ "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "0.8.3", + "version": "0.9.0", "status": "active", "packCreateDate": "2022-11-23", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -32756,28 +37633,28 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "tetragon", - "displayName": "", + "displayName": "Cilium Tetragon", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.8.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "cloudTypesFormatted": "all", + "version": "0.10.0", + "status": "active", + "packCreateDate": "2022-11-23", + "packLastModifiedDate": "2023-09-13", + "timeLastUpdated": "5 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { "name": "tetragon", @@ -32785,11 +37662,11 @@ "layer": "addon", "addonType": "monitoring", "cloudTypesFormatted": "all", - "version": "0.9.0", + "version": "0.8.3", "status": "active", "packCreateDate": "2022-11-23", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -32805,8 +37682,8 @@ "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.10.0", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "0.8.3", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -32823,45 +37700,45 @@ }, { "name": "thanos", - "displayName": "", + "displayName": "Thanos", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "all", "version": "10.5.3", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", + "status": "active", + "packCreateDate": "2023-02-03", + "packLastModifiedDate": "2023-02-22", + "timeLastUpdated": "1 years", + "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pack-central", + "registry": "Palette Community Registry - OCI" }, { "name": "thanos", - "displayName": "Thanos", + "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "all", + "cloudTypesFormatted": "baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", "version": "10.5.3", - "status": "active", - "packCreateDate": "2023-02-03", - "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", - "releaseType": "Community", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "community", "contributor": "spectrocloud", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pack-central", - "registry": "Palette Community Registry - OCI" + "gitRepo": "", + "registry": "Public Repo" }, { "name": "tke-managed-os", @@ -32915,7 +37792,7 @@ "status": "active", "packCreateDate": "2023-08-09", "packLastModifiedDate": "2023-08-09", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "Experimental", "contributor": "spectrocloud", "docsURL": "https://docs.trilio.io/kubernetes/overview/readme", @@ -32947,27 +37824,6 @@ "gitRepo": "", "registry": "Palette Registry - OCI" }, - { - "name": "trivy", - "displayName": "", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.4.12", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "community", - "contributor": "spectrocloud", - "docsURL": "", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" - }, { "name": "trivy", "displayName": "Trivy", @@ -32978,7 +37834,7 @@ "status": "active", "packCreateDate": "2023-02-03", "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", + "timeLastUpdated": "1 years", "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "", @@ -32994,7 +37850,7 @@ "displayName": "", "layer": "addon", "addonType": "monitoring", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt", "version": "0.25.3", "status": "unknown", "packCreateDate": "", @@ -33011,18 +37867,18 @@ "registry": "Spectro Addon Repo" }, { - "name": "trow", + "name": "trivy", "displayName": "", "layer": "addon", - "addonType": "registry", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.0.0", + "addonType": "security", + "cloudTypesFormatted": "tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke", + "version": "0.4.12", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", - "contributor": "", + "releaseType": "community", + "contributor": "spectrocloud", "docsURL": "", "fips": "", "verified": false, @@ -33032,12 +37888,12 @@ "registry": "Public Repo" }, { - "name": "twistlock", + "name": "trow", "displayName": "", "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "19.7.0", + "addonType": "registry", + "cloudTypesFormatted": "libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "1.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -33053,24 +37909,24 @@ "registry": "Public Repo" }, { - "name": "ubuntu-aks", - "displayName": "Linux", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "aks", - "version": "22.04", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-14", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "name": "twistlock", + "displayName": "", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "19.7.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { @@ -33096,41 +37952,41 @@ }, { "name": "ubuntu-aks", - "displayName": "", + "displayName": "Linux", "layer": "os", "addonType": "", "cloudTypesFormatted": "aks", "version": "22.04", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "status": "active", + "packCreateDate": "2024-01-30", + "packLastModifiedDate": "2024-01-30", + "timeLastUpdated": "1 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "", - "fips": "", + "fips": "unknown", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", - "registry": "Palette Registry - OCI" + "gitRepo": "pax-fips", + "registry": "Public Repo" }, { - "name": "ubuntu-aws", + "name": "ubuntu-aks", "displayName": "", "layer": "os", "addonType": "", - "cloudTypesFormatted": "aws", - "version": "20.04", + "cloudTypesFormatted": "aks", + "version": "22.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", @@ -33146,7 +38002,7 @@ "status": "active", "packCreateDate": "2023-02-13", "packLastModifiedDate": "2023-07-27", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "VerteX", "contributor": "", "docsURL": "", @@ -33163,11 +38019,11 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "aws", - "version": "22.04", + "version": "18.04", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-05-31", - "timeLastUpdated": "5 months", + "packLastModifiedDate": "2020-09-09", + "timeLastUpdated": "3 years", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -33184,11 +38040,11 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "aws", - "version": "18.04", + "version": "22.04", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2020-09-09", - "timeLastUpdated": "3 years", + "packLastModifiedDate": "2023-12-11", + "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -33205,7 +38061,7 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "aws", - "version": "18.04", + "version": "22.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -33226,7 +38082,7 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "aws", - "version": "22.04", + "version": "18.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -33242,25 +38098,25 @@ "registry": "Palette Registry - OCI" }, { - "name": "ubuntu-azure", - "displayName": "Ubuntu", + "name": "ubuntu-aws", + "displayName": "", "layer": "os", "addonType": "", - "cloudTypesFormatted": "azure", + "cloudTypesFormatted": "aws", "version": "20.04", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "", "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Public Repo" + "gitRepo": "", + "registry": "Palette Registry - OCI" }, { "name": "ubuntu-azure", @@ -33268,19 +38124,19 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "azure", - "version": "22.04", + "version": "20.04", "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-02-05", - "timeLastUpdated": "8 months", - "releaseType": "Stable", + "packCreateDate": "2023-02-13", + "packLastModifiedDate": "2023-12-12", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "", - "fips": "false", + "fips": "true", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "pax-fips", "registry": "Palette Registry - OCI" }, { @@ -33323,7 +38179,28 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" + }, + { + "name": "ubuntu-azure", + "displayName": "Ubuntu", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "azure", + "version": "22.04", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-12-12", + "timeLastUpdated": "2 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "", + "fips": "false", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "ubuntu-azure", @@ -33365,7 +38242,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "ubuntu-coxedge", @@ -33409,27 +38286,6 @@ "gitRepo": "", "registry": "Palette Registry - OCI" }, - { - "name": "ubuntu-edge", - "displayName": "Ubuntu", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "edge", - "version": "20.04", - "status": "active", - "packCreateDate": "2021-12-02", - "packLastModifiedDate": "2021-12-02", - "timeLastUpdated": "1 years", - "releaseType": "Stable", - "contributor": "", - "docsURL": "", - "fips": "false", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" - }, { "name": "ubuntu-edge", "displayName": "", @@ -33449,27 +38305,27 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "ubuntu-gcp", - "displayName": "", + "name": "ubuntu-edge", + "displayName": "Ubuntu", "layer": "os", "addonType": "", - "cloudTypesFormatted": "gcp", + "cloudTypesFormatted": "edge", "version": "20.04", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "status": "active", + "packCreateDate": "2021-12-02", + "packLastModifiedDate": "2021-12-02", + "timeLastUpdated": "2 years", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", - "verified": true, + "fips": "false", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Public Repo" }, { @@ -33514,43 +38370,22 @@ "gitRepo": "", "registry": "Public Repo" }, - { - "name": "ubuntu-gcp", - "displayName": "", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "gcp", - "version": "18.04", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", - "contributor": "", - "docsURL": "", - "fips": "", - "verified": false, - "inProduction": true, - "prodStatus": "unknown", - "gitRepo": "", - "registry": "Public Repo" - }, { "name": "ubuntu-gcp", "displayName": "Ubuntu", "layer": "os", "addonType": "", "cloudTypesFormatted": "gcp", - "version": "20.04", + "version": "18.04", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "packLastModifiedDate": "2020-09-09", + "timeLastUpdated": "3 years", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", @@ -33562,16 +38397,16 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "gcp", - "version": "18.04", + "version": "20.04", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2020-09-09", - "timeLastUpdated": "3 years", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", @@ -33587,7 +38422,7 @@ "status": "active", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-02-05", - "timeLastUpdated": "8 months", + "timeLastUpdated": "1 years", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -33599,12 +38434,12 @@ "registry": "Palette Registry - OCI" }, { - "name": "ubuntu-k3s", + "name": "ubuntu-gcp", "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.21.12-k3s0", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "gcp", + "version": "18.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -33617,24 +38452,24 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "ubuntu-k3s", + "name": "ubuntu-gcp", "displayName": "", - "layer": "addon", - "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.22.9-k3s0", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "gcp", + "version": "20.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", @@ -33659,7 +38494,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "ubuntu-k3s", @@ -33683,54 +38518,54 @@ "registry": "Palette Registry - OCI" }, { - "name": "ubuntu-libvirt", + "name": "ubuntu-k3s", "displayName": "", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "libvirt", - "version": "20.04", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge,aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks", + "version": "1.22.9-k3s0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "ubuntu-libvirt", - "displayName": "Ubuntu", - "layer": "os", - "addonType": "", - "cloudTypesFormatted": "libvirt", - "version": "20.04", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "name": "ubuntu-k3s", + "displayName": "", + "layer": "addon", + "addonType": "system app", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native", + "version": "1.21.12-k3s0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { - "name": "ubuntu-maas", + "name": "ubuntu-libvirt", "displayName": "", "layer": "os", "addonType": "", - "cloudTypesFormatted": "maas", - "version": "18.04", + "cloudTypesFormatted": "libvirt", + "version": "20.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -33746,25 +38581,25 @@ "registry": "Public Repo" }, { - "name": "ubuntu-maas", + "name": "ubuntu-libvirt", "displayName": "Ubuntu", "layer": "os", "addonType": "", - "cloudTypesFormatted": "maas", - "version": "22.04", + "cloudTypesFormatted": "libvirt", + "version": "20.04", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-02-05", - "timeLastUpdated": "8 months", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "", "fips": "false", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "ubuntu-maas", @@ -33772,11 +38607,11 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "maas", - "version": "20.04", + "version": "22.04", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2022-09-01", - "timeLastUpdated": "1 years", + "packLastModifiedDate": "2023-12-11", + "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -33785,7 +38620,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "ubuntu-maas", @@ -33797,7 +38632,7 @@ "status": "active", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -33808,26 +38643,47 @@ "gitRepo": "pax", "registry": "Palette Registry - OCI" }, + { + "name": "ubuntu-maas", + "displayName": "Ubuntu", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "maas", + "version": "20.04", + "status": "active", + "packCreateDate": "2023-02-13", + "packLastModifiedDate": "2023-12-20", + "timeLastUpdated": "2 months", + "releaseType": "VerteX", + "contributor": "", + "docsURL": "", + "fips": "true", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "pax-fips", + "registry": "Palette Registry - OCI" + }, { "name": "ubuntu-maas", "displayName": "", "layer": "os", "addonType": "", "cloudTypesFormatted": "maas", - "version": "22.04", + "version": "18.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "ubuntu-maas", @@ -33848,48 +38704,48 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { - "name": "ubuntu-openstack", + "name": "ubuntu-maas", "displayName": "", "layer": "os", "addonType": "", - "cloudTypesFormatted": "openstack", + "cloudTypesFormatted": "maas", "version": "22.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "ubuntu-openstack", - "displayName": "Ubuntu", + "displayName": "", "layer": "os", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "18.04", - "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2021-06-14", - "timeLastUpdated": "2 years", - "releaseType": "Stable", + "version": "22.04", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", - "fips": "false", - "verified": false, + "fips": "", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", + "gitRepo": "", "registry": "Public Repo" }, { @@ -33898,11 +38754,11 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "openstack", - "version": "20.04", + "version": "18.04", "status": "active", "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2022-04-26", - "timeLastUpdated": "1 years", + "packLastModifiedDate": "2021-06-14", + "timeLastUpdated": "2 years", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -33923,7 +38779,7 @@ "status": "active", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -33932,27 +38788,27 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "ubuntu-openstack", - "displayName": "", + "displayName": "Ubuntu", "layer": "os", "addonType": "", "cloudTypesFormatted": "openstack", "version": "20.04", - "status": "unknown", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "", + "status": "active", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2022-04-26", + "timeLastUpdated": "1 years", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "", + "fips": "false", "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "", + "gitRepo": "pax", "registry": "Palette Registry - OCI" }, { @@ -33977,21 +38833,21 @@ "registry": "Palette Registry - OCI" }, { - "name": "ubuntu-vsphere", + "name": "ubuntu-openstack", "displayName": "", "layer": "os", "addonType": "", - "cloudTypesFormatted": "vsphere", - "version": "22.04", + "cloudTypesFormatted": "openstack", + "version": "20.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", @@ -34003,7 +38859,7 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "18.04", + "version": "22.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -34024,20 +38880,20 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "20.04", + "version": "18.04", "status": "active", - "packCreateDate": "2023-02-13", - "packLastModifiedDate": "2023-07-27", - "timeLastUpdated": "3 months", - "releaseType": "VerteX", + "packCreateDate": "2019-12-24", + "packLastModifiedDate": "2023-08-08", + "timeLastUpdated": "6 months", + "releaseType": "Stable", "contributor": "", "docsURL": "", - "fips": "true", - "verified": false, + "fips": "false", + "verified": true, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax-fips", - "registry": "Palette Registry - OCI" + "gitRepo": "pax", + "registry": "Public Repo" }, { "name": "ubuntu-vsphere", @@ -34045,20 +38901,20 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "22.04", + "version": "20.04", "status": "active", - "packCreateDate": "2019-12-24", - "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", - "releaseType": "Stable", + "packCreateDate": "2023-02-13", + "packLastModifiedDate": "2023-07-27", + "timeLastUpdated": "7 months", + "releaseType": "VerteX", "contributor": "", "docsURL": "", - "fips": "false", - "verified": true, + "fips": "true", + "verified": false, "inProduction": true, "prodStatus": "unknown", - "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "gitRepo": "pax-fips", + "registry": "Public Repo" }, { "name": "ubuntu-vsphere", @@ -34066,11 +38922,11 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "18.04", + "version": "22.04", "status": "active", "packCreateDate": "2019-12-24", "packLastModifiedDate": "2023-08-08", - "timeLastUpdated": "2 months", + "timeLastUpdated": "6 months", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -34087,39 +38943,39 @@ "layer": "os", "addonType": "", "cloudTypesFormatted": "vsphere", - "version": "20.04", + "version": "18.04", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", "docsURL": "", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { - "name": "vault", + "name": "ubuntu-vsphere", "displayName": "", - "layer": "addon", - "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.11.0", - "status": "deprecated", + "layer": "os", + "addonType": "", + "cloudTypesFormatted": "vsphere", + "version": "20.04", + "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "spectrocloud", + "releaseType": "", "contributor": "", - "docsURL": "https://docs.spectrocloud.com/integrations/vault", + "docsURL": "", "fips": "", - "verified": true, + "verified": false, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "", "registry": "Palette Registry - OCI" }, @@ -34128,8 +38984,8 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.6.0", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "0.11.0", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -34149,8 +39005,8 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.17.1", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "0.9.0", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -34171,11 +39027,11 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "all", - "version": "0.20.1", + "version": "0.17.1", "status": "deprecated", "packCreateDate": "2021-11-17", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/vault", @@ -34192,11 +39048,11 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "all", - "version": "0.17.1", + "version": "0.20.1", "status": "deprecated", "packCreateDate": "2021-11-17", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/vault", @@ -34205,7 +39061,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "vault", @@ -34217,7 +39073,7 @@ "status": "active", "packCreateDate": "2021-11-17", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/vault", @@ -34234,18 +39090,18 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "all", - "version": "0.11.0", - "status": "deprecated", - "packCreateDate": "2020-01-10", + "version": "0.23.0", + "status": "active", + "packCreateDate": "2021-11-17", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/vault", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Public Repo" }, @@ -34254,8 +39110,8 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.25.0", + "cloudTypesFormatted": "eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge", + "version": "0.24.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -34268,7 +39124,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "vault", @@ -34276,11 +39132,11 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "all", - "version": "0.23.0", + "version": "0.25.0", "status": "active", "packCreateDate": "2021-11-17", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-09", + "timeLastUpdated": "3 weeks", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/vault", @@ -34297,11 +39153,32 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "all", - "version": "0.25.0", + "version": "0.11.0", + "status": "deprecated", + "packCreateDate": "2020-01-10", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/vault", + "fips": "false", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "pax", + "registry": "Public Repo" + }, + { + "name": "vault", + "displayName": "Vault", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "all", + "version": "0.24.1", "status": "active", "packCreateDate": "2021-11-17", - "packLastModifiedDate": "2023-08-15", - "timeLastUpdated": "2 months", + "packLastModifiedDate": "2024-02-12", + "timeLastUpdated": "2 weeks", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/vault", @@ -34310,7 +39187,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "vault", @@ -34318,11 +39195,11 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "all", - "version": "0.3.1", + "version": "0.9.0", "status": "deprecated", "packCreateDate": "2020-01-10", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/vault", @@ -34331,7 +39208,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "vault", @@ -34343,7 +39220,7 @@ "status": "deprecated", "packCreateDate": "2020-01-10", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/vault", @@ -34352,28 +39229,28 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "vault", - "displayName": "", + "displayName": "Vault", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.9.0", + "cloudTypesFormatted": "all", + "version": "0.3.1", "status": "deprecated", - "packCreateDate": "", - "packLastModifiedDate": "", - "timeLastUpdated": "", - "releaseType": "spectrocloud", + "packCreateDate": "2020-01-10", + "packLastModifiedDate": "2023-07-21", + "timeLastUpdated": "7 months", + "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/vault", - "fips": "", + "fips": "false", "verified": true, "inProduction": true, "prodStatus": "deprecated", - "gitRepo": "", - "registry": "Public Repo" + "gitRepo": "pax", + "registry": "Palette Registry - OCI" }, { "name": "vault", @@ -34381,18 +39258,18 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "all", - "version": "0.9.0", - "status": "deprecated", - "packCreateDate": "2020-01-10", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "version": "0.26.1", + "status": "active", + "packCreateDate": "2021-11-17", + "packLastModifiedDate": "2023-12-07", + "timeLastUpdated": "2 months", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/vault", "fips": "false", "verified": true, "inProduction": true, - "prodStatus": "deprecated", + "prodStatus": "unknown", "gitRepo": "pax", "registry": "Palette Registry - OCI" }, @@ -34401,8 +39278,8 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.24.1", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested", + "version": "0.25.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -34422,7 +39299,49 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "gcp,azure,eks,aks,libvirt,edge,edge-native,baremetal,tencent,maas,vsphere,nested,aws,gke,all,openstack,coxedge,tke", + "version": "0.26.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/vault", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "vault", + "displayName": "", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", + "version": "0.3.1", + "status": "deprecated", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "spectrocloud", + "contributor": "", + "docsURL": "https://docs.spectrocloud.com/integrations/vault", + "fips": "", + "verified": true, + "inProduction": true, + "prodStatus": "deprecated", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "vault", + "displayName": "", + "layer": "addon", + "addonType": "security", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,libvirt,edge,edge-native,baremetal,gcp,azure,eks,aks,aws,tencent,maas,vsphere,nested", "version": "0.22.0", "status": "unknown", "packCreateDate": "", @@ -34443,8 +39362,8 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.20.1", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,baremetal,gcp,azure,eks,aks,libvirt,edge,edge-native,aws,tencent,maas,vsphere,nested", + "version": "0.6.0", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -34457,7 +39376,7 @@ "inProduction": true, "prodStatus": "deprecated", "gitRepo": "", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "vault", @@ -34465,29 +39384,28 @@ "layer": "addon", "addonType": "security", "cloudTypesFormatted": "all", - "version": "0.24.1", + "version": "0.27.0", "status": "active", "packCreateDate": "2021-11-17", - "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "packLastModifiedDate": "2024-02-04", + "timeLastUpdated": "3 weeks", "releaseType": "Stable", "contributor": "", "docsURL": "https://docs.spectrocloud.com/integrations/vault", "fips": "false", "verified": true, - "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deleted", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "" }, { "name": "vault", "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.23.0", - "status": "unknown", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "0.17.1", + "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", @@ -34497,7 +39415,7 @@ "fips": "", "verified": true, "inProduction": true, - "prodStatus": "unknown", + "prodStatus": "deprecated", "gitRepo": "", "registry": "Palette Registry - OCI" }, @@ -34506,8 +39424,8 @@ "displayName": "", "layer": "addon", "addonType": "security", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "0.3.1", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "0.20.1", "status": "deprecated", "packCreateDate": "", "packLastModifiedDate": "", @@ -34523,21 +39441,21 @@ "registry": "Palette Registry - OCI" }, { - "name": "vault-operator", + "name": "vault", "displayName": "", "layer": "addon", - "addonType": "operator", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "1.17.0", + "addonType": "security", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "0.23.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", "timeLastUpdated": "", - "releaseType": "", + "releaseType": "spectrocloud", "contributor": "", - "docsURL": "", + "docsURL": "https://docs.spectrocloud.com/integrations/vault", "fips": "", - "verified": false, + "verified": true, "inProduction": true, "prodStatus": "unknown", "gitRepo": "", @@ -34553,7 +39471,7 @@ "status": "active", "packCreateDate": "2023-02-01", "packLastModifiedDate": "2023-02-03", - "timeLastUpdated": "9 months", + "timeLastUpdated": "1 years", "releaseType": "Stable", "contributor": "", "docsURL": "", @@ -34562,6 +39480,27 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", + "registry": "Palette Registry - OCI" + }, + { + "name": "vault-operator", + "displayName": "", + "layer": "addon", + "addonType": "operator", + "cloudTypesFormatted": "tke,openstack,coxedge,edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke", + "version": "1.17.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", "registry": "Public Repo" }, { @@ -34574,7 +39513,7 @@ "status": "active", "packCreateDate": "2021-04-01", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "spectrocloud", "docsURL": "https://docs.spectrocloud.com/integrations/velero", @@ -34583,14 +39522,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "velero", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", "version": "1.5.3", "status": "unknown", "packCreateDate": "", @@ -34604,6 +39543,27 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "virtual-machine-orchestrator", + "displayName": "", + "layer": "addon", + "addonType": "integration", + "cloudTypesFormatted": "edge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge", + "version": "4.0.1", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", "registry": "Palette Registry - OCI" }, { @@ -34611,8 +39571,29 @@ "displayName": "", "layer": "addon", "addonType": "integration", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.0", + "cloudTypesFormatted": "tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure,vsphere,nested,aws,tencent,maas,all,gke", + "version": "4.2.0", + "status": "unknown", + "packCreateDate": "", + "packLastModifiedDate": "", + "timeLastUpdated": "", + "releaseType": "", + "contributor": "", + "docsURL": "", + "fips": "", + "verified": false, + "inProduction": true, + "prodStatus": "unknown", + "gitRepo": "", + "registry": "Public Repo" + }, + { + "name": "virtual-machine-orchestrator", + "displayName": "", + "layer": "addon", + "addonType": "integration", + "cloudTypesFormatted": "all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested", + "version": "4.0.1", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -34632,7 +39613,7 @@ "displayName": "", "layer": "addon", "addonType": "integration", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "aws,tencent,maas,vsphere,nested,all,gke,tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge", "version": "4.1.0", "status": "unknown", "packCreateDate": "", @@ -34653,8 +39634,8 @@ "displayName": "", "layer": "addon", "addonType": "integration", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.1", + "cloudTypesFormatted": "aks,libvirt,edge,edge-native,baremetal,gcp,azure,eks,nested,aws,tencent,maas,vsphere,all,gke,tke,openstack,coxedge", + "version": "4.2.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -34674,8 +39655,8 @@ "displayName": "", "layer": "addon", "addonType": "integration", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.0.1", + "cloudTypesFormatted": "coxedge,tke,openstack,azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke", + "version": "4.1.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -34695,8 +39676,8 @@ "displayName": "", "layer": "addon", "addonType": "integration", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", - "version": "4.1.0", + "cloudTypesFormatted": "vsphere,nested,aws,tencent,maas,all,gke,tke,openstack,coxedge,eks,aks,libvirt,edge,edge-native,baremetal,gcp,azure", + "version": "4.0.0", "status": "unknown", "packCreateDate": "", "packLastModifiedDate": "", @@ -34721,7 +39702,7 @@ "status": "active", "packCreateDate": "2023-03-05", "packLastModifiedDate": "2023-07-21", - "timeLastUpdated": "3 months", + "timeLastUpdated": "7 months", "releaseType": "Stable", "contributor": "spectrocloud", "docsURL": "https://kubernetes.io/blog/2020/12/10/kubernetes-1.20-volume-snapshot-moves-to-ga/", @@ -34730,14 +39711,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pax", - "registry": "Palette Registry - OCI" + "registry": "Public Repo" }, { "name": "volume-snapshot-controller", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "tke,openstack,coxedge,edge-native,baremetal,gcp,azure,eks,aks,libvirt,edge,aws,tencent,maas,vsphere,nested,all,gke", "version": "6.2.1", "status": "unknown", "packCreateDate": "", @@ -34751,7 +39732,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Public Repo" + "registry": "Palette Registry - OCI" }, { "name": "wordpress-chart", @@ -34763,7 +39744,7 @@ "status": "active", "packCreateDate": "2023-02-03", "packLastModifiedDate": "2023-02-22", - "timeLastUpdated": "8 months", + "timeLastUpdated": "1 years", "releaseType": "Community", "contributor": "spectrocloud", "docsURL": "", @@ -34772,14 +39753,14 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "pack-central", - "registry": "Public Repo" + "registry": "Palette Community Registry - OCI" }, { "name": "wordpress-chart", "displayName": "", "layer": "addon", "addonType": "system app", - "cloudTypesFormatted": "aws,vsphere,azure,gcp,maas,openstack,eks,gke,aks,gke,nested", + "cloudTypesFormatted": "azure,eks,aks,libvirt,edge,edge-native,baremetal,gcp,maas,vsphere,nested,aws,tencent,all,gke,coxedge,tke,openstack", "version": "5.4.1", "status": "unknown", "packCreateDate": "", @@ -34793,7 +39774,7 @@ "inProduction": true, "prodStatus": "unknown", "gitRepo": "", - "registry": "Palette Community Registry - OCI" + "registry": "Public Repo" } ] } diff --git a/tsconfig.json b/tsconfig.json index 14a5020203..3eb9b67a6f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,6 +27,7 @@ "@theme-original/*": ["./node_modules/@docusaurus/theme-classic/lib/theme/*"], "@theme-init/*": ["./node_modules/@docusaurus/theme-classic/lib/theme/*"], "@theme/*": ["./node_modules/@docusaurus/theme-classic/lib/theme/*"], + "@theme/ThemedImage": ["node_modules/@docusaurus/theme-classic/src/theme/*"], "@docusaurus/*": ["./node_modules/@docusaurus/core/src/client/exports/*"], "@site/*": ["./*"], "@generated/*": ["./.docusaurus/*"] diff --git a/utils/api-parser/index.js b/utils/api-parser/index.js index 5fa70ead8a..ae3bbdc4fc 100644 --- a/utils/api-parser/index.js +++ b/utils/api-parser/index.js @@ -2,59 +2,73 @@ const fs = require("fs"); const lodash = require("lodash"); // Read the content of api.json file -fs.readFile("docs/api-content/api-docs/v1/api.json", "utf8", (err, data) => { - if (err) { - console.error("Error reading the file:", err); - return; - } - - try { - const tagSet = new Set(); - const jsonData = JSON.parse(data); - const paths = Object.keys(jsonData.paths); - - // Process each path and add tags - const versionRegex = /\/v\d+\/([^/]+)/; - paths.forEach((path) => { - const match = path.match(versionRegex); - let tag; - - if (match && match[1]) { - tag = match[1]; - } else { - tag = path.split("/")[1]; - } - tagSet.add(tag); - - if (jsonData.paths[path].tags) { - jsonData.paths[path].tags = [tag]; - } - Object.keys(jsonData.paths[path]).forEach((key) => { - if (jsonData.paths[path][key] && jsonData.paths[path][key].tags) { - jsonData.paths[path][key].tags = [tag]; +// Function to process a single Swagger file +function processSwaggerFile(filePath, baseUrl) { + fs.readFile(filePath, "utf8", (err, data) => { + if (err) { + console.error("Error reading the file:", err); + return; + } + + try { + const tagSet = new Set(); + const jsonData = JSON.parse(data); + const paths = Object.keys(jsonData.paths); + + // Process each path and add tags + const versionRegex = /\/v\d+\/([^/]+)/; + paths.forEach((path) => { + const match = path.match(versionRegex); + let tag; + + if (match && match[1]) { + tag = match[1]; + } else { + tag = path.split("/")[1]; + } + tagSet.add(tag); + + if (jsonData.paths[path].tags) { + jsonData.paths[path].tags = [tag]; + } + Object.keys(jsonData.paths[path]).forEach((key) => { + if (jsonData.paths[path][key] && jsonData.paths[path][key].tags) { + jsonData.paths[path][key].tags = [tag]; + } + }); + }); + + jsonData.tags = Array.from(tagSet, (item) => ({ + name: item, + "x-displayName": lodash.startCase(item), + })); + + jsonData.servers = [ + { + url: baseUrl, + }, + ]; + + const result = JSON.stringify(jsonData, null, 2); + fs.writeFile(filePath, result, "utf8", (err) => { + if (err) { + console.error("Error writing to file:", err); + return; } + console.log(`Processed and updated ${filePath}`); }); - }); - - jsonData.tags = Array.from(tagSet, (item) => ({ - name: item, - "x-displayName": lodash.startCase(item), - })); - - jsonData.servers = [ - { - url: "https://api.spectrocloud.com", - }, - ]; - - const result = JSON.stringify(jsonData, null, 2); - fs.writeFile("docs/api-content/api-docs/v1/api.json", result, "utf8", (err) => { - if (err) { - console.error("Error writing to file:", err); - return; - } - }); - } catch (error) { - console.error("Error parsing JSON:", error); - } -}); + } catch (error) { + console.error("Error parsing JSON:", error); + } + }); +} + +// List of Swagger files to process +const swaggerFiles = [ + { path: "docs/api-content/api-docs/v1/api.json", baseUrl: "https://api.spectrocloud.com" }, + // Add the path to your second Swagger file here + { path: "docs/api-content/api-docs/edge-v1/emc-api.json", baseUrl: "https://edge-host-ip:5080" }, +]; + +// Process each Swagger file +swaggerFiles.forEach((file) => processSwaggerFile(file.path, file.baseUrl)); diff --git a/vale.ini b/vale.ini index cc1f8bcb31..6e76d6625b 100644 --- a/vale.ini +++ b/vale.ini @@ -8,11 +8,11 @@ Packages = Google, write-good, alex [*.md] BasedOnStyles = Vale, Google, write-good, alex, spectrocloud -IgnoredScopes = code, tt, +IgnoredScopes = code, tt, img, url, a, ; BlockIgnores = -; The following line ignores all import statements in markdown files -TokenIgnores = (?s) *(import).*?(;),\*\*.*?\*\* +; The following line ignores all import statements in markdown files, backticks +TokenIgnores = (?s) *(import).*?(;),\*\*.*?\*\*, (\x60[^\n\x60]+\x60), [formats] mdx = md diff --git a/vale/styles/config/vocabularies/Internal/accept.txt b/vale/styles/config/vocabularies/Internal/accept.txt index dab83984d0..b1ea286cc2 100644 --- a/vale/styles/config/vocabularies/Internal/accept.txt +++ b/vale/styles/config/vocabularies/Internal/accept.txt @@ -30,8 +30,6 @@ kubeadm upsize Alertmanager alertmanager -application -Application grafana Grafana etcd @@ -184,6 +182,9 @@ goroutines renegotiation renegotiations wpa_supplicant +Earthfile +ubuntu +tgz Podman filepath Datagram @@ -193,3 +194,16 @@ vApp PCGs vCPU vCPUs +ORAS +preload +preloaded +eXtented +Palette eXtented Kubernetes +Palette eXtented Kubernetes - Edge +timeframe +Luet +rhel +Ubuntu +RHEL +repave +airgap \ No newline at end of file diff --git a/vale/styles/config/vocabularies/Internal/reject.txt b/vale/styles/config/vocabularies/Internal/reject.txt index a3b293d713..e37f399957 100644 --- a/vale/styles/config/vocabularies/Internal/reject.txt +++ b/vale/styles/config/vocabularies/Internal/reject.txt @@ -17,3 +17,4 @@ on-premises readme Readme OpenShit +Palette Extended Kubernetes \ No newline at end of file diff --git a/vale/styles/spectrocloud/acronym.yml b/vale/styles/spectrocloud/acronym.yml index 75e0b77f30..c69ec262eb 100644 --- a/vale/styles/spectrocloud/acronym.yml +++ b/vale/styles/spectrocloud/acronym.yml @@ -52,3 +52,5 @@ exceptions: - (YML) - (XML) - (ZIP) + - (PXK) + - (PXK-E) \ No newline at end of file diff --git a/vale/styles/spectrocloud/longform.yml b/vale/styles/spectrocloud/longform.yml index 8d65756064..c0668ef3fe 100644 --- a/vale/styles/spectrocloud/longform.yml +++ b/vale/styles/spectrocloud/longform.yml @@ -22,4 +22,5 @@ exceptions: - chmod([\s ]{1,}[-][a-zA-Z]{1,3})+ - chown([\s ]{1,}[-][a-zA-Z]{1,3})+ - sed([\s ]{1,}[-][a-zA-Z]{1,3})+ - - wc([\s ]{1,}[-][a-zA-Z]{1,3})+ \ No newline at end of file + - wc([\s ]{1,}[-][a-zA-Z]{1,3})+ + - tar([\s ]{1,}[-][a-zA-Z]{1,3})+ \ No newline at end of file diff --git a/vale/styles/spectrocloud/oxford-comma.yml b/vale/styles/spectrocloud/oxford-comma.yml new file mode 100644 index 0000000000..0c8f4f987a --- /dev/null +++ b/vale/styles/spectrocloud/oxford-comma.yml @@ -0,0 +1,8 @@ +extends: existence +message: "You need to use the Oxford comma in '%s'." +level: suggestion +link: https://spectrocloud.atlassian.net/wiki/spaces/DE/pages/1765933057/Spectro+Cloud+Internal+Style+Guide#Commas +scope: sentence +nonword: true +tokens: + - '(\b(?:\w+(?: \w+)?, )+\b(?:\w+(?: \w+)?) (?:and|or) \w+(?: \w+)?[.?!])' \ No newline at end of file